pg_attribute
В каталоге pg_attribute
хранится информация о столбцах таблицы. Для каждого столбца в каждой таблице в базе данных будет ровно одна строка pg_attribute
. (Также будут записи атрибутов для индексов и всех объектов с классом pg_class entries
).
Термин атрибут эквивалентен столбцу и используется по историческим причинам.
Столбец | Тип данных | Описание |
---|---|---|
attrelid | oid (ссылается на pg_class.oid) | Таблица, к которой относится этот столбец |
attname | name | имя столбца |
atttypid | oid (ссылается на pg_type.oid) | Тип данных этого столбца (ноль для удаленного столбца) |
attlen | int2 | Копия pg_type.typlen типа этого столбца |
attnum | int2 | Номер столбца. Обычные столбцы нумеруются от 1 до. Системные столбцы, такие как ctid, имеют (произвольные) отрицательные числа |
attcacheoff | int4 | Всегда -1 в хранилище, но при загрузке в дескриптор строки в памяти это может быть обновлено, чтобы кешировать смещение атрибута в строке |
atttypmod | int4 | atttypmod записывает типоспецифические данные, предоставляемые во время создания таблицы (например, максимальную длину столбца varchar). Он передается в типоспецифические функции ввода и функции принуждения к длине. Значение обычно равно -1 для типов, которым не нужен atttypmod |
attndims | int2 | Количество размеров, если столбец является типом массива; в противном случае 0. (В настоящее время количество размеров массива не применяется, поэтому любое ненулевое значение фактически означает "это массив") |
Attbyval | bool | Копия pg_type.typbyval типа этого столбца |
atalign | char | Копия pg_type.typalign типа этого столбца |
attstorage | char | Обычно это копия pg_type.typstorage типа этого столбца. Для типов данных, поддерживающих TOAST, это можно изменить после создания столбца для управления политикой хранения |
attcompression | char | Текущий метод сжатия столбца. Обычно это '\0', чтобы указать использование текущего настройки по умолчанию (см. default_toast_compression). В противном случае 'p' выбирает сжатие pglz, а 'l' выбирает сжатие LZ4. Однако это поле игнорируется, когда attstorage не позволяет сжатие |
attnotnull | bool | Это представляет собой ограничение не-нуля |
Atthasdef | bool | В этом столбце есть выражение по умолчанию или выражение генерации, в этом случае в каталоге pg_attrdef будет соответствующая запись, которая фактически определяет выражение. (Проверьте, является ли это выражением по умолчанию или генерацией expression.) |
atthasmissing | bool | Этот столбец имеет значение, которое используется, когда столбец полностью отсутствует в строке, как это происходит, когда столбец добавляется с энергонезависимым значением DEFAULT после создания строки. Фактическое используемое значение сохраняется в столбце attmissingval |
attidentity | char | если нулевой байт (''), то не столбец идентификации. В противном случае a = всегда генерируется, d = генерируется по умолчанию |
attgenerated | char | если нулевой байт (''), то не сгенерированный столбец. В противном случае s = сохраняется. (Другие значения могут быть добавлены в future.) |
attisdropped | bool | Этот столбец был удален и больше не действителен. Удаленный столбец все еще физически присутствует в таблице, но игнорируется анализатором и поэтому не может быть доступен через SQL |
attislocal | bool | Этот столбец определяется локально в отношении. Обратите внимание, что столбец может быть определен локально и унаследован одновременно |
attinhcount | int4 | Количество прямых предков в этом столбце. Столбец с ненулевым числом предков не может быть удален или переименован |
attstattarget | int4 | attstattarget управляет уровнем детализации статистики, накапливаемой для этого столбца с помощью ANALYZE. Нулевое значение указывает на то, что статистика не должна собираться. Отрицательное значение говорит об использовании целевого показателя статистики по умолчанию в системе. Точное значение положительных значений зависит от типа данных. Для скалярных типов данных attstattarget является и целевым числом «наиболее распространенных значений», которые нужно собирать, и целевым числом гистограммных контейнеров, которые нужно создать |
attcollation | oid (ссылается на pg_collation.oid) | Определенное сопоставление столбца или ноль, если столбец не является сопоставимым типом данных |
atacl | aclitem[] | Права доступа на уровне столбцов, если таковые были предоставлены специально для этого столбца |
атрибуты | text[] | Параметры на уровне атрибутов, такие как строки «ключевое слово=значение» |
attfdwoptions | text[] | Параметры адаптера сторонних данных на уровне атрибутов, такие как строки «ключевое слово = значение» |
attmissingval | anyarray | В этом столбце есть массив из одного элемента, содержащий значение, используемое, когда столбец полностью отсутствует в строке, как это происходит, когда столбец добавляется с энергонезависимым значением DEFAULT после создания строки. Значение используется только тогда, когда atthasmissing равен true. Если нет значения, столбец равен нулю |
В записи атрибута pg_attribute
удаленного столбца atttypid
сбрасывается до нуля, но attlen
и другие поля, скопированные из pg_type
, все еще действительны. Такое расположение необходимо, чтобы справиться с ситуацией, когда тип данных удаленного столбца был позже удален, и поэтому строка pg_type
больше не существует. attlen
и другие поля могут использоваться для интерпретации содержимого строки таблицы.