• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/pgsql/database.php
  • Класс: CDatabase
  • Вызов: CDatabase::GetTableFields
public function GetTableFields($table)
{
	if (!isset($this->column_cache[$table]))
	{
		$this->column_cache[$table] = array();
		$this->DoConnect();

		$dbResult = $this->query("SELECT * FROM ".$this->connection->getSqlHelper()->quote($table)." limit 0");

		$fields = pg_num_fields($dbResult->result);
		for ($i = 0; $i < $fields; $i++)
		{
			$fieldName = mb_strtoupper(pg_field_name($dbResult->result, $i));
			$fieldType = pg_field_type($dbResult->result, $i);
			switch ($fieldType)
			{
				case 'bigint':
				case 'int8':
				case 'bigserial':
				case 'serial8':
				case 'integer':
				case 'int':
				case 'int4':
				case 'smallint':
				case 'int2':
				case 'smallserial':
				case 'serial2':
				case 'serial':
				case 'serial4':
					$type = "int";
					break;
				case 'double precision':
				case 'float8':
				case 'numeric':
				case 'real':
				case 'float4':
					$type = "real";
					break;
				case 'time':
				case 'timestamp':
				case 'timestamptz':
					$type = "datetime";
					break;
				case 'date':
					$type = "date";
					break;
				case 'bytea':
					$type = "bytes";
					break;
				default:
					$type = "string";
					break;
			}

			$this->column_cache[$table][$fieldName] = array(
				"NAME" => $fieldName,
				"TYPE" => $type,
			);
		}
	}
	return $this->column_cache[$table];
}