我一直在Postgresql 9.2中实现用户定义的类型并且感到困惑。 在PostgreSQL 9.2文档中,有一个section (35.11) on user defined types。在该部分的第三段中,文档引用了用于构造类型的输入和输出函数。我对这些功能的目的感到困惑。他们是关注磁盘表示还是仅关注内存表示?在上面提到的部分中,在定义输入和输出函数之后,它声明:
如果我们想要使用仅存储的类型做更多的事情, 我们必须提供额外的功能来实现任何操作 我们想要这种类型。
输入和输出功能是否与序列化有关?
据我了解,输入函数是用于执行INSERT INTO
和输出函数的函数,以便对类型执行SELECT
,所以基本上如果我们想要执行INSERT INTO
那么我们需要在输入或输出函数中嵌入或调用序列化函数。任何人都可以帮我解释一下吗?
答案 0 :(得分:1)
类型必须具有文本表示,以便此类型的值可以在SQL查询中表示为文字,并在输出列中作为结果返回。
例如,'2013-20-01'
是日期的文本表示。可以在SQL语句中编写VALUES('2013-20-01'::date)
,因为date
类型的输入函数将此字符串识别为日期并将其转换为内部表示(用于在内存中使用它并存储到磁盘) )。
相反,当客户端代码发出SELECT date_field FROM table
时,date_field
中的值将以其文本表示形式返回,该文本表示由类型的输出函数从内部表示形式生成(除非客户端请求二进制格式对于这一栏)。