# 52.10.pg_cast
目录pg_cast
存储内置和用户定义的数据类型转换路径。
应当指出的是pg_cast
不代表系统知道如何执行的每个类型转换;只有那些不能从一些通用规则中推导出来的。例如,域和它的基类型之间的转换没有明确表示在pg_cast
.另一个重要的例外是“自动 I/O 转换强制转换”,即使用数据类型自己的 I/O 函数执行的转换。文本
或其他字符串类型,未在pg_cast
.
表 52.10.pg_cast
列
列类型 描述 |
---|
样的 样的 行标识符 |
castsource 样的 (参考pg_type .样的 )源数据类型的 OID |
施法目标 样的 (参考pg_type .样的 )目标数据类型的 OID |
转换函数 样的 (参考pg_proc .样的 )用于执行此转换的函数的 OID。如果 cast 方法不需要函数,则存储零。 |
演员表 字符 指示可以在哪些上下文中调用强制转换。 e 仅表示作为显式强制转换(使用投掷 要么:: 句法)。一种 意味着隐含地分配给目标列,以及显式地。一世 隐含在表达式中,以及其他情况。 |
铸造法 字符 指示如何执行转换。 f 意味着在指定的功能转换函数 使用字段。一世 表示使用输入/输出功能。b 意味着类型是二进制可强制的,因此不需要转换。 |
中列出的强制转换函数pg_cast
必须始终将转换源类型作为其第一个参数类型,并将转换目标类型作为其结果类型返回。一个强制转换函数最多可以有三个参数。第二个参数(如果存在)必须是 type整数
;它接收与目标类型关联的类型修饰符,如果没有,则接收 -1.第三个参数(如果存在)必须是 type布尔值
;它收到真的
如果演员表是显式演员表,错误的
除此以外。
创建一个是合法的pg_cast
如果关联函数采用多个参数,则源类型和目标类型相同的条目。这样的条目表示“长度强制函数”,它强制类型的值对于特定类型修饰符值是合法的。
当一个pg_cast
entry 具有不同的源类型和目标类型以及一个接受多个参数的函数,它表示从一种类型转换为另一种类型并在单个步骤中应用长度强制。当没有这样的条目可用时,强制使用类型修饰符的类型涉及两个步骤,一个是在数据类型之间进行转换,第二个是应用修饰符。