pg_type
pg_type系统目录表存储有关数据类型的信息。 基类(标量类型)由CREATE TYPE创建。 而域由CREATE DOMAIN创建。 数据库中的每一个表都会有一个自动创建的组合类型,用于表示表的行结构。 也可以使用CREATE TYPE AS创建组合类型。
列 | 类型 | 参考 | 描述 |
---|---|---|---|
oid | oid | 行标识符(隐藏属性;必须显示选择) | |
typname | name | 数据类型名称 | |
typnamespace | oid | pg_namespace.oid | 包含此类型的命名空间的OID |
typowner | oid | pg_authid.oid | 类型的拥有者 |
typlen | int2 | 对于一个固定尺寸的类型,typlen是该类型内部表示的字节数。 对于一个变长类型,typlen为负值。 -1表示一个“varlena”类型(具有长度字),-2表示一个以null结尾的C字符串。 | |
typbyval | boolean | 决定内部例程传递这个类型的数值时是通过传值还是传引用方式。 如果typlen不是1、2或4(或者在Datum为8字节的机器上为8),typlen最好是假。 变长类型总是传引用。 注意即使长度允许传值,typbyval也可以为假。 | |
typtype | char | b表示基类,c表示组合类型, d表示域,e表示枚举类型,p表示伪类型,或r表示范围类型。 另见typrelid和typbasetype。 | |
typcategory | char | 解析器使用的数据类型的任意分类,以确定应首选哪些隐式转换。 请参阅类别代码。 | |
typispreferred | boolean | 如果类型是其typcategory中的首选转换目标,则为True | |
typisdefined | boolean | 如果定义了类型,则为True;如果是尚未定义的类型的占位符条目,则为false。 如果为false,则可以依赖除类型名称,名称空间和OID之外的任何内容。 | |
typdelim | char | 解析数组输入时分隔此类型的两个值的字符。 请注意,分隔符与数组元素数据类型相关联,而不是与数组数据类型相关联。 | |
typrelid | oid | pg_class.oid | 如果这是复合类型(请参阅typtype),则此列指向定义相应表的pg_class条目。 (对于独立的复合类型,pg_class条目实际上并不代表表,但无论如何都需要将类型的pg_attribute条目链接到。)非复合类型为零。 |
typelem | oid | pg_type.oid | 如果不为0,则它标识pg_type中的另一行。 然后,当前类型可以像数组一样下标,产生类型为typelem的值。 “true”数组类型是可变长度(typlen = -1), 但某些固定长度(typlen > 0)类型也具有非零typelem,例如name和point。 如果固定长度类型有typelem,则其内部表示必须是typelem数据类型的某些值,而没有其他数据。 可变长度数组类型具有由数组子例程定义的头。 |
typarray | oid | pg_type.oid | 如果不为0,则标识pg_type中的另一行,这是具有此类型作为其元素的“true”数组类型。 使用pg_type.typarray查找与特定类型关联的数组类型。 |
typinput | regproc | pg_proc.oid | 输入转换函数(文本格式) |
typoutput | regproc | pg_proc.oid | 输出转换函数(文本格式) |
typreceive | regproc | pg_proc.oid | 输入转换函数(二进制格式),如果没有则为0 |
typsend | regproc | pg_proc.oid | 输出转换函数(二进制格式),如果没有则为0 |
typmodin | regproc | pg_proc.oid | 键入修饰符输入函数,如果类型不支持修饰符,则为0 |
typmodout | regproc | pg_proc.oid | 键入修饰符输出函数,或0以使用标准格式 |
typanalyze | regproc | pg_proc.oid | 自定义ANALYZE函数,0表示使用标准函数 |
typalign | char | 存储此类型的值时所需的对齐方式。 它适用于磁盘上的存储以及Greenplum数据库中值的大多数表示。 当连续存储多个值时,例如在磁盘上的完整行的表示中,在此类型的数据之前插入填充,以便它在指定的边界上开始。 对齐参考是序列中第一个数据的开头。 可能的值是: c = char对齐,即不需要对齐。 s = short对齐(在大部分机器上为2字节)。 i = int对齐(在大部分机器上为4字节)。 d = double对齐(在很多机器上为8字节,但绝不是全部)。 | |
typstorage | char | 对于varlena类型(具有typlen = -1的那些),告知该类型是否准备好toasting以及该类型的属性的默认策略应该是什么。 可能的值是: p: 值必须明文存储。 e: 值可以存储在辅助关系中(如果关系有一个,请参阅pg_class.reltoastrelid)。 m: 值可以压缩内联存储。 x: 值可以内联压缩存储或存储在二级存储中。 请注意,m列也可以移出到辅助存储,但仅作为最后的手段(首先移动e和x列)。 | |
typnotnull | boolean | 表示类型的非空约束。仅用于域。 | |
typbasetype | oid | pg_type.oid | 标识域所基于的类型。如果此类型不是域,则为零。 |
typtypmod | int4 | 域使用typtypmod来记录要应用于其基类型的typmod(如果基类型不使用typmod,则为-1)。 -1如果此类型不是域。 | |
typndims | int4 | 域上数组的数组维数(如果typbasetype是数组类型)。 除了数组类型的域以外的类型为零。 | |
typcollation | oid | pg_collation.oid | 指定类型的排序规则。 如果类型不支持排序规则,则为零。 对于支持排序规则的基本类型,该值为DEFAULT_COLLATION_OID。 如果为域指定了一个域,则通过可折叠类型的域可以具有一些其他排序规则OID。 |
typdefaultbin | pg_node_tree | 如果不为null,则为该类型的默认表达式的nodeToString()表示。 这仅用于域。 | |
typdefault | text | 如果类型没有关联的默认值,则为null。 如果typdefaultbin不为null,则typdefault必须包含由typdefaultbin表示的默认表达式的人类可读版本。 如果typdefaultbin为null且typdefault不为null,则typdefault是类型默认值的外部表示,可以将其输入到类型的输入转换器以生成常量。 | |
typacl | aclitem[] | 访问权限; 有关详细信息, 请参阅GRANT和REVOKE。 |
下表列出了typcategory的系统定义值。 此列表的任何未来添加项也将是大写ASCII字母。 所有其他ASCII字符都保留给用户定义的类别。
代码 | 种类 |
---|---|
A | 数组类型 |
B | 布尔类型 |
C | 复合类型 |
D | 日期/时间类型 |
E | 枚举类型 |
G | 几号类型 |
I | 网络地址类型 |
N | 数字类型 |
P | 伪类型 |
R | 范围类型 |
S | 字符串类型 |
T | 时间跨度类型 |
U | 用户自定义类型 |
V | 位串类型 |
X | 未知类型 |
Parent topic: 系统目录定义