50.10. pg_cast#
50.10. pg_cast
#
Каталог pg_cast
хранит пути преобразования типов данных, как встроенные, так и определенные пользователем.
Следует отметить, что pg_cast
не представляет
все возможные преобразования типов, которые система умеет выполнять; только те,
которые нельзя вывести из некоторого общего правила. Например, преобразование между
доменом и его базовым типом не является явно представленным в
pg_cast
. Еще одно важное исключение состоит в том, что
“преобразования автоматического ввода-вывода”, те, которые выполняются с использованием собственных функций ввода-вывода типа для преобразования в или из text
или других
строковых типов, не являются явно представленными в
pg_cast
.
Таблица 50.10. pg_cast
Колонки
Тип столбца Описание |
---|
Идентификатор строки |
OID исходного типа данных |
OID целевого типа данных |
OID функции, используемой для выполнения данного преобразования. Если метод преобразования не требует функции, то значение хранится как ноль. |
Указывает, в каких контекстах может быть вызвано приведение типов.
|
Указывает, как выполняется приведение типов.
|
Функции приведения типов, перечисленные в pg_cast
, всегда должны принимать исходный тип приведения в качестве первого аргумента и возвращать тип назначения приведения в качестве результата. Функция приведения типов может иметь до трех аргументов. Второй аргумент, если присутствует, должен иметь тип integer
; он получает модификатор типа, связанный с типом назначения, или -1, если такового нет. Третий аргумент, если присутствует, должен иметь тип boolean
; он получает значение true
, если приведение является явным приведением, и false
в противном случае.
Это законно создать запись pg_cast
, в которой исходный и целевой типы совпадают, если связанная функция принимает более одного аргумента. Такие записи представляют собой “функции приведения длины”, которые приводят значения типа к допустимым для определенного значения модификатора типа.
Когда запись pg_cast
имеет разные исходный и целевой типы и функцию, которая принимает более одного аргумента, она представляет преобразование из одного типа в другой и применение модификатора длины в одном шаге. Когда такая запись недоступна, приведение к типу, который использует модификатор типа, включает два шага: первый - преобразование между типами данных, второй - применение модификатора.