Postgresql 9.2用户定义类型中输入输出函数的用途是什么?

时间:2013-01-29 09:50:29

标签: postgresql user-defined-types

我一直在Postgresql 9.2中实现用户定义的类型并且感到困惑。 在PostgreSQL 9.2文档中,有一个section (35.11) on user defined types。在该部分的第三段中,文档引用了用于构造类型的输入和输出函数。我对这些功能的目的感到困惑。他们是关注磁盘表示还是仅关注内存表示?在上面提到的部分中,在定义输入和输出函数之后,它声明:

  

如果我们想要使用仅存储的类型做更多的事情,   我们必须提供额外的功能来实现任何操作   我们想要这种类型。

输入和输出功能是否与序列化有关? 据我了解,输入函数是用于执行INSERT INTO和输出函数的函数,以便对类型执行SELECT,所以基本上如果我们想要执行INSERT INTO那么我们需要在输入或输出函数中嵌入或调用序列化函数。任何人都可以帮我解释一下吗?

1 个答案:

答案 0 :(得分:1)

类型必须具有文本表示,以便此类型的值可以在SQL查询中表示为文字,并在输出列中作为结果返回。

例如,'2013-20-01'是日期的文本表示。可以在SQL语句中编写VALUES('2013-20-01'::date),因为date类型的输入函数将此字符串识别为日期并将其转换为内部表示(用于在内存中使用它并存储到磁盘) )。

相反,当客户端代码发出SELECT date_field FROM table时,date_field中的值将以其文本表示形式返回,该文本表示由类型的输出函数从内部表示形式生成(除非客户端请求二进制格式对于这一栏)。