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

Я использовал пользовательские типы в Postgresql 9.2 и запутался.
В документации PostgreSQL 9.2 существует раздел  [(35.11) для пользовательских типов . В третьем абзаце этого раздела документация относится к входным и выходным функциям, которые используются для построения типа. Я смущен насчет цели этих функций. Они связаны с представлением на диске или только в памяти? В разделе, о котором говорилось выше, после определения входных и выходных функций, он утверждает, что:](https://www.postgresql.org/docs/9.2/static/xtypes.html)

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

Работают ли функции ввода и вывода с сериализацией?
Как я понимаю, функция ввода - это функция, которая будет использоваться для выполнения  `INSERT INTO`  и функции вывода для выполнения  `SELECT`  для типа, поэтому в основном, если мы хотим выполнить  `INSERT INTO` , тогда нам нужна функция сериализации, встроенная или вызываемая во входной или выходной функции. Может ли кто-нибудь объяснить это мне?](https://www.postgresql.org/docs/9.2/static/xtypes.html)

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

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

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