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 и другие поля могут использоваться для интерпретации содержимого строки таблицы.