Документация по PostgreSQL 9.4.1 | |||
---|---|---|---|
Пред. | Уровень выше | Глава 48. Системные каталоги | След. |
48.52. pg_type
В каталоге pg_type хранится информация о типах данных. Базовые типы и типы-перечисления (скалярные типы) создаются командой CREATE TYPE, а домены — командой CREATE DOMAIN. При добавлении любой таблицы в базу данных автоматически создаётся составной тип, представляющий структуру строки таблицы. Также возможно создавать составные типы с помощью команды CREATE TYPE AS.
Таблица 48-52. Колонки pg_type
Имя | Тип | Ссылки | Описание |
---|---|---|---|
oid | oid | Идентификатор строки (скрытый атрибут; должен выбираться явно) | |
typname | name | Имя типа данных | |
typnamespace | oid | pg_namespace.oid | OID пространства имён, содержащего этот тип |
typowner | oid | pg_authid.oid | Владелец типа |
typlen | int2 | Для типа фиксированного размера в typlen задаётся число байт во внутреннем представлении типа. Но для типов переменной длины, typlen будет отрицательным. Значение -1 обозначает тип "varlena" (он содержит машинное слово, определяющее длину), а -2 обозначает строку в стиле C, оканчивающуюся нулём. | |
typbyval | bool | Поле typbyval определяет, будут ли внутренние процедуры передавать переменные этого типа по значению или по ссылке. Полю typbyval лучше присвоить false, если длина typlen не равна 1, 2 или 4 (либо 8, на 64-битных машинах). Типы переменной длины всегда передаются по ссылке. Заметьте, что typbyval может быть false, даже если размер типа позволяет передачу по значению. | |
typtype | char | Поле typtype принимает значение b для базового типа (base), c для составного (composite), то есть типа строки таблицы, d для домена (domain), e для перечисления (enum), p для псевдотипа (pseudo-type) или r для диапазона (range). См. также typrelid и typbasetype. | |
typcategory | char | В поле typcategory задаётся произвольная классификация типов данных, на основе которой анализатор запросов может определить, какие неявные приведения будут "предпочитаемыми". См. Таблицу 48-53. | |
typispreferred | bool | True, если этот тип является предпочитаемым целевым типом в своей категории (typcategory) | |
typisdefined | bool | True, если тип определён, и false, если это тип-заготовка для ещё не определённого типа. Когда значение typisdefined — false, можно полагаться только на заданное имя, пространство имён и OID типа. | |
typdelim | char | Символ, разделяющий два значения этого типа при разборе вводимого массива. Заметьте, что этот разделитель связывается с типом данных элемента массива, а не с типом самого массива. | |
typrelid | oid | pg_class.oid | Если это составной тип (см. typtype), эта колонка указывает на запись pg_class, определяющую соответствующую таблицу. (Для независимого составного типа запись в pg_class на самом деле не представляет таблицу, но она всё равно нужна для связывания с записями pg_attribute этого типа.) Для не составных типов содержит ноль. |
typelem | oid | pg_type.oid | Если значение typelem не 0, оно указывает на другую строку в pg_type. В этом случае к текущему типу можно обращаться по индексу, как к массиву, и получать значения типа typelem. "Настоящий" тип массива имеет переменную длину (typlen = -1), но для некоторых типов фиксированной длины (typlen > 0) также определяется typelem, например, для name и point. Если для типа фиксированной длины определён typelem, его внутренним представлением будет некоторое количество значений типа typelem, без других данных. Типы массивов переменной длины также содержат заголовок, определяемый подпрограммами массива. |
typarray | oid | pg_type.oid | Если поле typarray не равно 0, оно указывает на другую запись в pg_type, описывающую "настоящий" тип массива, в которой этот тип будет элементом |
typinput | regproc | pg_proc.oid | Функция преобразования ввода (из текстового формата) |
typoutput | regproc | pg_proc.oid | Функция преобразования вывода (в текстовый формат) |
typreceive | regproc | pg_proc.oid | Функция преобразования ввода (из двоичного формата), либо 0, если её нет |
typsend | regproc | pg_proc.oid | Функция преобразования вывода (в двоичный формат), либо 0, если её нет |
typmodin | regproc | pg_proc.oid | Функция ввода модификатора типа, либо 0, если тип не поддерживает модификаторы |
typmodout | regproc | pg_proc.oid | Функция вывода модификатора типа, либо 0 для использования стандартного формата |
typanalyze | regproc | pg_proc.oid | Нестандартная функция ANALYZE, либо 0 для использования стандартной функции |
typalign | char | Переменная typalign определяет выравнивание, требуемое при хранении значения этого типа. Эта величина применяется при хранении на диске, а также для большинства представлений значений внутри PostgreSQL. Когда последовательно хранятся несколько значений, как например в представлении полной строки на диске, дополнительные байты добавляются перед значением этого типа, чтобы оно начиналось с указанной границы. Заданное выравнивание определяет смещение первого элемента последовательности. Возможные значения:
| |
typstorage | char | Значение typstorage для типов varlena (типов с typlen = -1) говорит, готов ли тип для помещения в TOAST, и какова стратегия по умолчанию для атрибутов этого типа. Возможные значения:
Заметьте, что колонки m тоже могут быть перемещены во вторичное хранилище, но только в качестве последней меры (колонки e и x перемещаются в первую очередь). | |
typnotnull | bool | Поле typnotnull представляет ограничение «не NULL» для типа. Применяется только для доменов. | |
typbasetype | oid | pg_type.oid | Если это домен (см. typtype), то typbasetype указывает на тип, на котором он основан. Ноль, если это не домен. |
typtypmod | int4 | Домены используют typtypmod для записи модификатора (typmod), применяемого к их базовому типу (-1, если базовый тип не использует typmod). Если тип не является доменом, принимает значение -1. | |
typndims | int4 | Значение typndims задаёт число размерностей массива для домена, определённого поверх массива (то есть, когда typbasetype — тип массива). Для типов, отличных от доменов поверх типов массивов, принимает значение 0. | |
typcollation | oid | pg_collation.oid | Значение typcollation задаёт правило сортировки для типа. Если тип не поддерживает сортировки, оно должно быть нулевым. У базового типа, поддерживающего сортировки, в этом поле будет DEFAULT_COLLATION_OID. Домен на базе сортируемого типа может иметь другой OID правила сортировки, если оно было изменено для домена. |
typdefaultbin | pg_node_tree | Если поле typdefaultbin не NULL, в нём содержится представление выражения по умолчанию для этого типа (совместимое с | |
typdefault | text | Поле typdefault содержит NULL, если с типом не связано значение по умолчанию. Если typdefaultbin не NULL, typdefault должно содержать понятную человеку версию выражения значения по умолчанию, записанного в typdefaultbin. Если typdefaultbin содержит NULL, а typdefault нет, то в typdefault находится внешнее представление значения по умолчанию, которое можно передать функции преобразования ввода и получить константу. | |
typacl | aclitem[] | Права доступа; за подробностями обратитесь к описанию GRANT и REVOKE |
В Таблице 48-53 перечисляются определённые в системе значения typcategory. Если этот список будет дополняться в будущем, в него будут добавляться тоже буквы ASCII в верхнем регистре. Все другие символы ASCII зарезервированы для категорий, определяемых пользователями.
Таблица 48-53. Коды typcategory
Код | Категория |
---|---|
A | Типы массивов |
B | Логические типы |
C | Составные типы |
D | Типы даты/времени |
E | Типы-перечисления |
G | Геометрические типы |
I | Типы, описывающие сетевые адреса |
N | Числовые типы |
P | Псевдотипы |
R | Диапазонные типы |
S | Строковые типы |
T | Интервальные типы |
U | Пользовательские типы |
V | Типы битовых строк |
X | Неизвестный тип (unknown) |
Пред. | Начало | След. |
pg_ts_template | Уровень выше | pg_user_mapping |