pg_cast #
目录 pg_cast
存储内建的和用户定义的数据类型转换路径。
应当注意,pg_cast 并不表示系统知道如何执行的
每一种类型转换;它只表示那些无法从某些通用规则推导出来的转换。
例如,域与其基类型之间的转换在 pg_cast
中没有显式表示。另一个重要的例外是“自动 I/O 转换造型”
—— 即使用数据类型自身的 I/O 函数与 text 或其他字符串类型
之间进行的转换 —— 它们在 pg_cast
中也没有显式表示。
Table 52.10. \1 字段列说明
Column Type Description |
|---|
Row identifier |
源数据类型的 OID |
目标数据类型的 OID |
用于执行该转换的函数的 OID。如果该转换方法不需要函数, 则存储零。 |
指示可以在哪些上下文中调用该转换。
|
指示转换的执行方式。
|
pg_cast 中列出的转换函数必须始终以转换源类型
作为其第一个参数类型,并返回转换目标类型作为其结果类型。
转换函数最多可以有三个参数。第二个参数(如果存在)
必须是 integer 类型;它接收与目标类型关联的类型修饰符,
如果没有则为 -1。第三个参数(如果存在)
必须是 boolean 类型;如果该转换是显式转换,
它接收 true,否则接收 false。
创建一个源类型与目标类型相同的 pg_cast
条目是合法的,前提是关联函数接收多于一个参数。
这样的条目表示“长度强制转换函数”,
用于把该类型的值强制转换为对特定类型修饰符值合法的形式。
当 pg_cast 条目具有不同的源类型和目标类型、
且其函数接收多于一个参数时,它表示一步完成从一种类型到另一种类型的转换
并应用长度强制转换。当没有这样的条目可用时,
向使用类型修饰符的类型强制转换需要两步:
一步在数据类型之间转换,另一步应用修饰符。