49.7. pg_attribute
В каталоге pg_attribute
хранится информация о столбцах таблицы. Для каждого столбца каждой таблицы в pg_attribute
существует ровно одна строка. (Также в этом каталоге будут записи для индексов и на самом деле для всех объектов, присутствующих в pg_class
.)
Термин «атрибут» равнозначен «столбцу» и употребляется по историческим причинам.
Таблица 49.7. Столбцы pg_attribute
Имя | Тип | Ссылки | Описание |
---|---|---|---|
attrelid | oid |
| Таблица, к которой принадлежит столбец |
attname | name | Имя столбца | |
atttypid | oid |
| Тип данных этого столбца |
attstattarget | int4 | Столбец attstattarget управляет детализацией статистики, собираемой по этому столбцу командой ANALYZE. Нулевое значение указывает, что статистика не собирается. При отрицательном значении используется системное ограничение статистики по умолчанию. Точное значение положительных величин определяется типом данных. Для скалярных типов данных, attstattarget задаёт и целевое число собираемых «самых частых значений», и целевое число создаваемых групп гистограммы. | |
attlen | int2 | Копия pg_type.typlen из записи типа столбца | |
attnum | int2 | Порядковый номер столбца. Обычные столбцы нумеруются по возрастанию, начиная с 1. Системные столбцы, такие как ctid , имеют (обычно) отрицательные номера. | |
attndims | int4 | Число размерностей, если столбец имеет тип массива; ноль в противном случае. (В настоящее время число размерностей массива не контролируется, поэтому любое ненулевое значение по сути означает «это массив».) | |
attcacheoff | int4 | Всегда -1 в постоянном хранилище, но когда запись загружается в память, в этом поле может кешироваться смещение атрибута в строке | |
atttypmod | int4 | В поле atttypmod записывается дополнительное число, связанное с определённым типом данных, указываемое при создании таблицы (например, максимальный размер столбца varchar ). Это значение передаётся функциям ввода и преобразования длины конкретного типа. Для типов, которым не нужен atttypmod , это обычно -1. | |
attbyval | bool | Копия pg_type.typbyval из записи типа столбца | |
attstorage | char | Обычно копия pg_type.typstorage из записи типа столбца. Для типов, поддерживающих TOAST, можно изменять это значение после создания столбца и таким образом управлять политикой хранения. | |
attalign | char | Копия pg_type.typalign из записи типа столбца | |
attnotnull | bool | Представляет ограничение NOT NULL. | |
atthasdef | bool | Столбец имеет значение по умолчанию или генерирующее выражение, в этом случае в каталоге pg_attrdef будет соответствующая запись, собственно задающая это выражение. (Определить, является ли это выражение генерирующим или оно вычисляет значение по умолчанию, можно по атрибуту attgenerated .) | |
atthasmissing | bool | Столбец имеет значение, которое используется, когда он полностью отсутствует в строке. Это имеет место, когда столбец добавляется с неизменчивым значением DEFAULT после создания строки. Фактическое значение хранится в attmissingval . | |
attidentity | char | Пустой символ ('' ) указывает, что это не столбец идентификации. Символ a указывает, что значение генерируется всегда, а d — что значение генерируется по умолчанию. | |
attgenerated | char | Если нулевой байт ('' ), это не генерируемый столбец. В противном случае, s означает, что генерируемое значение хранится (stored). (Другие значения могут быть добавлены в будущем.) | |
attisdropped | bool | Столбец был удалён и теперь не является рабочим. Удалённый столбец может по-прежнему физически присутствовать в таблице, но анализатор запросов его игнорирует, так что обратиться к нему из SQL нельзя. | |
attislocal | bool | Столбец определён локально в данном отношении. Заметьте, что столбец может быть определён локально и при этом наследоваться. | |
attinhcount | int4 | Число прямых предков этого столбца. Столбец с ненулевым числом предков нельзя удалить или переименовать. | |
attcollation | oid |
| Заданное для столбца правило сортировки, либо ноль, если тип столбца не сортируемый. |
attacl | aclitem[] | Права доступа к столбцу, если они были заданы непосредственно для этого столбца | |
attoptions | text[] | Параметры уровня атрибута, в виде строк «ключ=значение» | |
attfdwoptions | text[] | Параметры уровня атрибута для обёрток сторонних данных, в виде строк «ключ=значение» | |
attmissingval | anyarray | В данном столбце размещается массив с одним элементом. Значение в этом элементе используется, когда столбец полностью отсутствует в строке, что имеет место, когда столбец добавляется с неизменчивым значением DEFAULT после создания строки. Это значение используется, только когда atthasmissing равен true. Если значение отсутствует, столбец будет содержать NULL. |
В записи удалённого столбца в pg_attribute
поле atttypid
сбрасывается в ноль, но attlen
и другие поля, копируемые из pg_type
, сохраняют актуальные значения. Это нужно, чтобы справиться с ситуацией, когда после удаления столбца удаляется и его тип данных, так что записи в pg_type
больше не будет. В таких случаях для интерпретации содержимого строки таблицы могут использоваться attlen
и другие поля.