51.7. pg_attribute#

51.7. pg_attribute

51.7. pg_attribute

Каталог pg_attribute хранит информацию о столбцах таблицы. Для каждого столбца в каждой таблице базы данных будет ровно одна строка pg_attribute. (Также будут созданы записи атрибутов для индексов и, на самом деле, для всех объектов, у которых есть записи pg_class).

Термин attribute эквивалентен столбцу и используется по историческим причинам.

Таблица 51.7. pg_attribute Колонки

Тип столбца

Описание

attrelid oid (ссылается на pg_class.oid)

Таблица, к которой относится этот столбец

attname name

Имя столбца

atttypid oid (ссылается на pg_type.oid)

Тип данных этого столбца (ноль для удаленного столбца)

attstattarget int4

attstattarget управляет уровнем детализации статистики, накопленной для этого столбца с помощью ANALYZE. Значение ноль указывает, что статистика не должна собираться. Отрицательное значение означает использование системного значения по умолчанию для статистической цели. Точное значение положительных чисел зависит от типа данных. Для скалярных типов данных attstattarget является целевым числом наиболее распространенных значений для сбора и целевым числом гистограммных интервалов для создания.

attlen int2

Копия pg_type.typlen типа этой колонки

attnum int2

Номер столбца. Обычные столбцы нумеруются с 1 и выше. Системные столбцы, такие как ctid, имеют (произвольные) отрицательные числа.

attndims int4

Количество измерений, если столбец является массивным типом; в противном случае 0. (В настоящее время количество измерений массива не контролируется, поэтому любое ненулевое значение фактически означает, что это массив).

attcacheoff int4

Всегда -1 в хранилище, но при загрузке в дескриптор строки в памяти это может быть обновлено для кеширования смещения атрибута внутри строки

atttypmod int4

atttypmod содержит типо-специфичные данные, передаваемые при создании таблицы (например, максимальную длину столбца varchar). Он передается в функции ввода и функции приведения длины, специфичные для типа данных. Значение обычно будет -1 для типов данных, которым не требуется atttypmod.

attbyval bool

Копия значения pg_type.typbyval типа этой колонки.

attalign char

Копия значения pg_type.typalign типа этой колонки.

attstorage char

Обычно это копия pg_type.typstorage типа этого столбца. Для типов данных, поддерживающих TOAST, это можно изменить после создания столбца для управления политикой хранения.

attcompression char

Способ сжатия текущего столбца. Обычно это '\0', чтобы указать использование текущей настройки по умолчанию (см. default_toast_compression). В противном случае, 'p' выбирает сжатие pglz, а 'l' выбирает сжатие LZ4. Однако это поле игнорируется, когда attstorage не позволяет сжатие.

attnotnull bool

Это представляет собой ограничение NOT NULL.

atthasdef bool

Этот столбец имеет выражение по умолчанию или выражение генерации, в таком случае будет соответствующая запись в каталоге pg_attrdef, которая фактически определяет выражение. (Проверьте attgenerated, чтобы определить, является ли это выражение по умолчанию или выражением генерации).

atthasmissing bool

Этот столбец имеет значение, которое используется, когда столбец полностью отсутствует в строке, что происходит, когда столбец добавляется со значением DEFAULT после создания строки. Фактическое значение, используемое, хранится в столбце attmissingval.

attidentity char

Если это нулевой байт (''), то это не столбец идентичности. В противном случае, a = сгенерировано всегда, d = сгенерировано по умолчанию.

attgenerated char

Если это нулевой байт (''), то это не вычисляемый столбец. В противном случае, s = сохраненный. (В будущем могут быть добавлены другие значения).

attisdropped bool

Этот столбец был удален и больше не является действительным. Удаленный столбец все еще физически присутствует в таблице, но игнорируется парсером и, следовательно, не может быть доступен через SQL.

attislocal bool

Этот столбец определен локально в отношении. Обратите внимание, что столбец может быть определен локально и одновременно унаследован.

attinhcount int4

Количество прямых предков этого столбца. Столбец с ненулевым количеством предков не может быть удален или переименован.

attcollation oid (ссылается на pg_collation.oid)

Определенное правило сортировки столбца или ноль, если столбец не является сортируемым типом данных

attacl aclitem[]

Привилегии доступа на уровне столбцов, если они были явно предоставлены для этого столбца

attoptions text[]

Опции на уровне атрибутов, как строки ключевое_слово=значение

attfdwoptions text[]

Опции внешнего обработчика данных на уровне атрибута, в виде строк ключевое_слово=значение

attmissingval anyarray

Этот столбец имеет массив из одного элемента, содержащий значение, используемое, когда столбец полностью отсутствует в строке, что происходит, когда столбец добавляется со значением DEFAULT после создания строки. Значение используется только тогда, когда atthasmissing равно true. Если значения нет, то столбец является пустым (null).


В записи pg_attribute удаленного столбца, atttypid сбрасывается на ноль, но attlen и другие поля, скопированные из pg_type, остаются действительными. Это устройство необходимо для справки с ситуацией, когда тип данных удаленного столбца был позже удален, и поэтому больше нет строки pg_type. attlen и другие поля могут использоваться для интерпретации содержимого строки таблицы.