Postgresql 在Postgres中,将值转换为文本并返回其原始类型是否始终有效?

Postgresql 在Postgres中,将值转换为文本并返回其原始类型是否始终有效?,postgresql,Postgresql,假设类型为t的值v在SQL语句中使用如下:SELECT(v::text)::t,这会引发错误吗?通过扩展引入的类型的行为会改变吗 观察到: 您应该注意使输入和输出函数彼此相反。如果不这样做,当您需要将数据转储到文件中,然后将其读回时,您将遇到严重的问题。当涉及浮点数时,这是一个特别常见的问题 这显示了当涉及到文本输入和输出时,内置类型所遵循的设计原则,并且在text之间转换通常使用这些函数 所以,是的,这就像你想要的内置类型-大部分 有一些小的例外情况,引用语暗示了其中一个:在文本之间来回投射双

假设类型为
t
的值
v
在SQL语句中使用如下:
SELECT(v::text)::t,这会引发错误吗?通过扩展引入的类型的行为会改变吗

观察到:

您应该注意使输入和输出函数彼此相反。如果不这样做,当您需要将数据转储到文件中,然后将其读回时,您将遇到严重的问题。当涉及浮点数时,这是一个特别常见的问题

这显示了当涉及到文本输入和输出时,内置类型所遵循的设计原则,并且在
text
之间转换通常使用这些函数

所以,是的,这就像你想要的内置类型-大部分

有一些小的例外情况,引用语暗示了其中一个:在
文本之间来回投射
双精度
不能完全忠实,并且可能会丢失(不重要的)数字(除非将
额外浮点数设置为3)

因此,对于内置类型,这将非常有效。有必要这样做的一个简单原因是,否则
pg_dump
pg_restore
将无法创建可以在不丢失数据的情况下恢复的转储


对于用户定义的类型,这取决于实现者实现设计原则的程度。通常他们必须这样做,因为否则他们会破坏
pg\u dump

有趣。对于pg默认附带的基本类型,以及复合类型,我想不出任何情况下这都不起作用。只要不是匿名争吵。