Какова цель входных функций вывода в пользовательских типах Postgresql 9.2?

Я использовал пользовательские типы в Postgresql 9.2 и запутался. В документации PostgreSQL 9.2 существует раздел (35.11) для пользовательских типов </а>. В третьем абзаце этого раздела документация относится к входным и выходным функциям, которые используются для построения типа. Я смущен насчет цели этих функций. Они связаны с представлением на диске или только в памяти? В разделе, о котором говорилось выше, после определения входных и выходных функций, он утверждает, что:

Если мы хотим сделать что-нибудь большее с типом, чем , просто сохраним его ,   мы должны предоставить дополнительные функции для выполнения любых операций   мы хотели бы иметь для типа.

Работают ли функции ввода и вывода с сериализацией? Как я понимаю, функция ввода - это функция, которая будет использоваться для выполнения INSERT INTO и функции вывода для выполнения SELECT для типа, поэтому в основном, если мы хотим выполнить INSERT INTO , тогда нам нужна функция сериализации, встроенная или вызываемая во входной или выходной функции. Может ли кто-нибудь объяснить это мне?

2
nl ja de

1 ответы

Типы должны иметь текстовое представление, так что значения этого типа могут быть выражены как литералы в SQL-запросе и возвращаться как результаты в выходные столбцы.

Например, '2013-20-01' представляет собой текстовое представление даты. В SQL-запросе можно написать VALUES ('2013-20-01' :: date) , потому что функция ввода типа date распознает эту строку как дату и преобразует его во внутреннее представление (как для использования в памяти, так и для хранения на диске).

И наоборот, когда код клиента вызывает SELECT date_field FROM table , значения внутри date_field возвращаются в их текстовом представлении, которое создается выходной функцией типа из внутреннего представления (кроме клиент запросил двоичный формат для этого столбца).

1
добавлено
pgsql – PostgreSQL
pgsql – PostgreSQL
2 429 участник(ов)

Чат про PostgreSQL

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.