©
This document uses PHP Chinese website manual Release
The catalog pg_type stores information about data types. Base types and enum types (scalar types) are created with CREATE TYPE, and domains with CREATE DOMAIN. A composite type is automatically created for each table in the database, to represent the row structure of the table. It is also possible to create composite types with CREATE TYPE AS.
pg_type存储有关数据类型的信息。基本类型和枚举类型(标量类型)是用CREATE TYPE创建的, 域是使用CREATE DOMAIN创建的。同时还为数据库中每个表自动创建一个复合类型, 以表示该表的行结构。还可以用CREATE TYPE AS创建复合类型。
Table 45-44. pg_type Columns
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
typname | name | 数据类型名 | |
typnamespace | oid | pg_namespace.oid | 包含这个类型的名字空间的OID |
typowner | oid | pg_authid.oid | 该类型的所有者 |
typlen | int2 | 对于定长类型typlen是该类型内部表现形式的字节数。 对于变长类型typlen是负数。 -1表示一种"变长"类型(有长度字属性的数据), -2表示这是一个NULL结尾的C字符串。 | |
typbyval | bool | typbyval判断内部过程传递这个类型的数值时是通过传值还是传引用。 如果该typlen类型不是1, 2, 4, 8字节长将只能按引用传递, 变长类型总是按引用。请注意typbyval可以为假,即使允许传值。 | |
typtype | char | typtype 对于基础类型是b,对于复合类型是c(比如,一个表的行类型)。 对于域类型是d,E的枚举类型,对于伪类型是p。 还可参阅typrelid和typbasetype。 | |
typcategory | char | typcategory是一个使用解析器以确定其中隐含映射是"首选"的数据类型的 任意分类。参阅Table 45-45。 | |
typispreferred | bool | 如果类型在typcategory中是一个更好的目标则为真。 | |
typisdefined | bool | 如果定义了类型则为真,如果是一种尚未定义的类型的占位符则为假。 如果typisdefined为假,那么除了该类型名,命名空间,和OID之外没有可靠的信息。 | |
typdelim | char | Character that separates two values of this type when parsing array input. Note that the delimiter is associated with the array element data type, not the array data type. 当分析数组输入时,分隔两个此类型数值的字符请注意该分隔符是与数组元素数据类型相关联的,而不是和数组数据类型关联。 | |
typrelid | oid | pg_class.oid | 如果是复合类型(参阅typtype)那么这个字段指向pg_class中定义该表的行。对于自由存在的复合类型, pg_class记录并不表示一个表,但是总需要它来查找该类型连接的pg_attribute记录。对于非复合类型为零。 |
typelem | oid | pg_type.oid | 如果typelem不为0 ,那么它标识pg_type里面的另外一行。当前类型可以当做一个产生类型为typelem的数组来描述。 一个"真的"数组类型是变长的(typlen = -1), 但是一些定长的(typlen > 0)类型也拥有非零的typelem,比如name和point。 如果一个定长类型拥有一个typelem,那么它的内部形式必须是typelem数据类型的某个数目的数值, 不能有其它数据。变长数组类型有一个该数组子过程定义的头(文件)。 |
typarray | oid | pg_type.oid | 如果typarray不为0, 标识pg_type的另一行, 则"true"数组类型有这种类型作为元素。 |
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 | typalign当存储此类型的数值时要求的对齐性质。它应用于磁盘存储以及该值在PostgreSQL内部的大多数形式。 如果数值是连续存放的,比如在磁盘上以完全的裸数据的形式存放时,那么先在此类型的数据前填充空白, 这样它就可以按照要求的界限存储。对齐引用是该序列中第一个数据的开头。 可能的值有:
|
|
typstorage | char |
typstorage告诉一个变长类型(那些有typlen = -1)的)说该类型是否准备好应付缺省规值, 以及对这种属性的类型的缺省策略是什么。可能的值有
请注意m列也可以移到从属表里存储,但只是最后的解决方法(e and x列先移走)。 |
|
typnotnull | bool | typnotnull表示在某类型上的一个非空约束。只用于域。 |
|
typbasetype | oid | pg_type.oid | 如果这是一个域(参阅typtype),那么typbasetype该标识作为这个类型的基础的类型。如果不是域类型则为零。 |
typtypmod | int4 | 域使用typtypmod记录要作用到它们的基础类型上的typmod(如果基础类型不使用typmod,则为-1)。 如果这种类型不是域,那么为-1 。 |
|
typndims | int4 | typndims是域的数组维数,其是一个数组(也就是说,typbasetype是一个数组类型; 域的typelem将匹配基本类型的typelem)。非域非数组域为零。 |
|
typdefaultbin | text |
如果typdefaultbin为非NULL,那么它是该类型缺省表达式的 |
|
typdefault | text |
如果某类型没有相关缺省值,那么typdefault是 NULL。如果typdefaultbin不是NULL , 那么typdefault必须包含一个typdefaultbin代表的缺省表达式的人类可读的版本。 如果typdefaultbin为NULL,但typdefault不是,那么typdefault是该类型缺省值的外部表现形式, 可以把它交给该类型的输入转换器生成一个常量。 |
Table 45-45列出了 typcategory系统定义的值。 任何未来增加的列表也可以是ASCII字母大写。保留所有其他的ASCII字符用户定义的类别。
Table 45-45. typcategory Codes
编码 | 类别 |
---|---|
A | 数组类型 |
B | 布尔类型 |
C | 复合类型 |
D | 日期/时间类型 |
E | 枚举类型 |
G | 几何类型 |
I | 网络地址类型 |
N | 数值类型 |
P | 伪类型 |
S | 字符串类型 |
T | 时间跨度类型 |
U | 用户定义的类型 |
V | 位字符串类型 |
X | 未知类型 |