pg_cast
#目录 pg_cast
存储数据类型转换路径,包括内置的和用户定义的。
需要注意的是,pg_cast
并不表示系统知道如何执行的每一种类型转换;仅表示那些无法从某些通用规则推导出来的类型转换。例如,域及其基本类型之间的转换不会在 pg_cast
中显式表示。另一个重要的例外是“自动 I/O 转换”,即那些使用数据类型自己的 I/O 函数转换为或从 text
或其他字符串类型转换的,在 pg_cast
中不会显式表示。
表 51.10. pg_cast
列
列名 类型 描述 |
---|
行标识符 |
源数据类型的 OID |
目标数据类型的 OID |
用于执行此转换的函数的 OID。如果转换方法不需要函数,则存储零。 |
指示可以在哪些上下文中调用转换。 |
指示如何执行转换。 |
pg_cast
中列出的转换函数必须始终将转换源类型作为其第一个参数类型,并将转换目标类型作为其结果类型。转换函数最多可以有三个参数。第二个参数(如果存在)必须是 integer
类型;它接收与目标类型关联的类型修饰符,如果没有,则接收 -1。第三个参数(如果存在)必须是 boolean
类型;如果转换是显式转换,则接收 true
,否则接收 false
。
如果关联的函数接受多个参数,则创建源类型和目标类型相同的 pg_cast
条目是合法的。此类条目表示“长度强制函数”,它强制该类型的值对于特定的类型修饰符值是合法的。
当 pg_cast
条目具有不同的源类型和目标类型,并且函数接受多个参数时,它表示从一种类型转换为另一种类型并在一步中应用长度强制。如果没有此类条目,则强制转换为使用类型修饰符的类型需要两个步骤,一个是在数据类型之间转换,第二个是应用修饰符。
如果您发现文档中有任何不正确、与您特定功能的体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。