52.7. pg_attribute #
В каталоге pg_attribute хранится информация о столбцах таблицы. Для каждого столбца каждой таблицы в pg_attribute существует ровно одна строка. (Также в этом каталоге будут записи для индексов и на самом деле для всех объектов, присутствующих в pg_class.)
Термин «атрибут» равнозначен «столбцу» и употребляется по историческим причинам.
Таблица 52.7. Столбцы pg_attribute
Тип столбца Описание |
|---|
Таблица, к которой принадлежит столбец |
Имя столбца |
Тип данных этого столбца (ноль для удалённого столбца) |
Копия |
Порядковый номер столбца. Обычные столбцы нумеруются по возрастанию, начиная с 1. Системные столбцы, такие как |
В поле |
Число размерностей, если столбец имеет тип массива; ноль в противном случае. (В настоящее время число размерностей массива не контролируется, поэтому любое ненулевое значение по сути означает «это массив».) |
Копия |
Копия |
Обычно копия |
Текущий метод сжатия столбца. Обычно задано значение |
Представляет ограничение NOT NULL (возможно, нерабочее). |
Столбец имеет значение по умолчанию или генерирующее выражение, в этом случае в каталоге |
Столбец имеет значение, которое используется, когда он полностью отсутствует в строке. Это имеет место, когда столбец добавляется с неизменчивым значением |
Пустой символ ( |
Если нулевой байт ( |
Столбец был удалён и теперь не является рабочим. Удалённый столбец может по-прежнему физически присутствовать в таблице, но анализатор запросов его игнорирует, так что обратиться к нему из SQL нельзя. |
Столбец определён локально в данном отношении. Заметьте, что столбец может быть определён локально и при этом наследоваться. |
Число прямых предков этого столбца. Столбец с ненулевым числом предков нельзя удалить или переименовать. |
Заданное для столбца правило сортировки, либо ноль, если тип столбца не сортируемый. |
Столбец |
Права доступа к столбцу, если они были заданы непосредственно для этого столбца |
Параметры уровня атрибута, в виде строк «ключ=значение» |
Параметры уровня атрибута для обёрток сторонних данных, в виде строк «ключ=значение» |
В данном столбце размещается массив с одним элементом. Значение в этом элементе используется, когда столбец полностью отсутствует в строке, что имеет место, когда столбец добавляется с неизменчивым значением |
В записи удалённого столбца в pg_attribute поле atttypid сбрасывается в ноль, но attlen и другие поля, копируемые из pg_type, сохраняют актуальные значения. Это нужно, чтобы справиться с ситуацией, когда после удаления столбца удаляется и его тип данных, так что записи в pg_type больше не будет. В таких случаях для интерпретации содержимого строки таблицы могут использоваться attlen и другие поля.
52.7. pg_attribute #
The catalog pg_attribute stores information about table columns. There will be exactly one pg_attribute row for every column in every table in the database. (There will also be attribute entries for indexes, and indeed all objects that have pg_class entries.)
The term attribute is equivalent to column and is used for historical reasons.
Table 52.7. pg_attribute Columns
Column Type Description |
|---|
The table this column belongs to |
The column name |
The data type of this column (zero for a dropped column) |
A copy of |
The number of the column. Ordinary columns are numbered from 1 up. System columns, such as |
|
Number of dimensions, if the column is an array type; otherwise 0. (Presently, the number of dimensions of an array is not enforced, so any nonzero value effectively means “it's an array”.) |
A copy of |
A copy of |
Normally a copy of |
The current compression method of the column. Typically this is |
This column has a (possibly invalid) not-null constraint. |
This column has a default expression or generation expression, in which case there will be a corresponding entry in the |
This column has a value which is used where the column is entirely missing from the row, as happens when a column is added with a non-volatile |
If a zero byte ( |
If a zero byte ( |
This column has been dropped and is no longer valid. A dropped column is still physically present in the table, but is ignored by the parser and so cannot be accessed via SQL. |
This column is defined locally in the relation. Note that a column can be locally defined and inherited simultaneously. |
The number of direct ancestors this column has. A column with a nonzero number of ancestors cannot be dropped nor renamed. |
The defined collation of the column, or zero if the column is not of a collatable data type |
|
Column-level access privileges, if any have been granted specifically on this column |
Attribute-level options, as “keyword=value” strings |
Attribute-level foreign data wrapper options, as “keyword=value” strings |
This column has a one element array containing the value used when the column is entirely missing from the row, as happens when the column is added with a non-volatile |
In a dropped column's pg_attribute entry, atttypid is reset to zero, but attlen and the other fields copied from pg_type are still valid. This arrangement is needed to cope with the situation where the dropped column's data type was later dropped, and so there is no pg_type row anymore. attlen and the other fields can be used to interpret the contents of a row of the table.