2

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

如果我们想对类型做更多的事情而不仅仅是存储它,我们必须提供额外的函数来实现我们希望对该类型进行的任何操作。

输入和输出函数是否处理序列化?据我了解,输入函数是用于执行INSERT INTO的函数,输出函数是SELECT在类型上执行的,所以基本上,如果我们想要执行,INSERT INTO那么我们需要在输入或输出函数中嵌入或调用一个序列化函数。谁能帮我解释一下?

4

1 回答 1

1

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

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

相反,当客户端代码发出时SELECT date_field FROM table,内部的值date_field以其文本表示形式返回,这是由内部表示的类型的输出函数产生的(除非客户端请求此列的二进制格式)。

于 2013-01-29T19:41:50.733 回答