On this page
51.62. pg_type
目录pg_type
存储有关数据类型的信息。基本类型和枚举类型(标量类型)使用CREATE TYPE创建,而域使用CREATE DOMAIN创建。将为数据库中的每个表自动创建一个复合类型,以表示该表的行结构。也可以使用CREATE TYPE AS
创建复合类型。
表 51.62. pg_type
列
Name | Type | References | Description |
---|---|---|---|
oid |
oid |
行标识符(隐藏属性;必须显式选择) | |
typname |
name |
数据类型名称 | |
typnamespace |
oid |
pg_namespace.oid |
包含此类型的名称空间的 OID |
typowner |
oid |
pg_authid.oid |
类型的所有者 |
typlen |
int2 |
对于固定大小的类型,typlen 是该类型的内部表示形式中的字节数。但是对于可变长度类型,typlen 为负数。 -1 表示“ varlena”类型(一个带有长度字的类型),-2 表示以 N 结尾的 C 字符串。 |
|
typbyval |
bool |
typbyval 确定内部例程是按值还是按引用传递此类型的值。如果typlen 不是 1、2 或 4(或 Datum 为 8 字节的机器上为 8),则typbyval 最好为 false。可变长度类型始终通过引用传递。请注意,即使长度允许值传递,typbyval 也可以为 false。 |
|
typtype |
char |
typtype 是b (对于基本类型),c (对于复合类型(例如,表的行类型)),d (对于域),e (对于枚举类型),p (对于伪类型)或r (对于范围类型)。另请参见typrelid 和typbasetype 。 |
|
typcategory |
char |
typcategory 是数据类型的任意分类,解析器使用该分类来确定应“首选”哪些隐式强制类型转换。参见Table 51.63。 |
|
typispreferred |
bool |
如果类型是其typcategory 中的首选强制转换目标,则为 true |
|
typisdefined |
bool |
如果定义了类型,则为 true;如果这是尚未定义的类型的占位符条目,则为 false。当typisdefined 为 false 时,除了类型名称,名称空间和 OID 之外,别无其他依赖。 |
|
typdelim |
char |
解析数组 Importing 时分隔此类型的两个值的字符。请注意,分隔符与数组元素数据类型相关联,而不与数组数据类型相关联。 | |
typrelid |
oid |
pg_class.oid |
如果这是复合类型(请参见typtype ),则此列指向定义相应表的pg_class 条目。 (对于独立的复合类型,pg_class 条目实际上并不表示表,但是无论如何,该类型的pg_attribute 条目都需要链接到该表.)非复合类型为零。 |
typelem |
oid |
pg_type.oid |
如果typelem 不为 0,则它将标识pg_type 中的另一行。然后,可以像对产生typelem 类型值的数组那样对当前类型进行下标。 “ true”数组类型是可变长度(typlen = -1),但是某些固定长度(typlen > 0)类型也具有非零typelem ,例如name 和point 。如果固定长度类型具有typelem ,则其内部表示形式必须是typelem 数据类型的一些值,并且没有其他数据。可变长度数组类型具有由数组子例程定义的 Headers。 |
typarray |
oid |
pg_type.oid |
如果typarray 不为 0,则它将标识pg_type 中的另一行,这是具有该类型作为元素的“真”数组类型 |
typinput |
regproc |
pg_proc.oid |
Importing 转换功能(文本格式) |
typoutput |
regproc |
pg_proc.oid |
输出转换功能(文本格式) |
typreceive |
regproc |
pg_proc.oid |
Importing 转换函数(二进制格式),如果没有则为 0 |
typsend |
regproc |
pg_proc.oid |
输出转换函数(二进制格式),如果没有则为 0 |
typmodin |
regproc |
pg_proc.oid |
类型修饰符 Importing 函数;如果类型不支持修饰符,则返回 0 |
typmodout |
regproc |
pg_proc.oid |
类型修饰符输出函数,或 0 以使用标准格式 |
typanalyze |
regproc |
pg_proc.oid |
自定义ANALYZE 函数,或 0 以使用标准函数 |
typalign |
char |
typalign 是存储此类型的值时所需的对齐方式。它适用于磁盘上的存储以及 PostgreSQL 内部值的大多数表示形式。当连续存储多个值时(例如在磁盘上完整行的表示中),将在此类型的数据之前插入填充,以使填充开始于指定的边界。对齐参考是序列中第一个基准的起点。 |
可能的值为:c
= char
对齐,即无需对齐。s
= short
对齐(在大多数计算机上为 2 字节)。i
= int
对齐(在大多数计算机上为 4 字节)。d
= double
对齐(在许多机器上为 8 字节,但绝不是全部)。
Note
对于系统表中使用的类型,至关重要的是,pg_type
中定义的大小和对齐方式与编译器将列布局在表示表行的结构中的方式一致。
|
| typstorage
| char
| | typstorage
告知 varlena 类型(typlen
= -1 的类型)是否准备好烘烤,以及该类型的属性的默认策略应该是什么。可能的值是
> p
:必须始终将值存储为纯格式。
> e
:值可以“次要”关系存储(如果关系中有一个,请参见pg_class.reltoastrelid
)。
> m
:可以内联压缩存储值。
> x
:值可以内联压缩存储或存储在“辅助”存储中。
> 请注意,也可以将m
列移出到辅助存储中,但只能作为最后的选择(首先移e
和x
列)。
| typnotnull
| bool
| | typnotnull
表示对类型的非空约束。仅用于域。
| typbasetype
| oid
| pg_type.oid
|如果这是一个域(请参见typtype
),则typbasetype
标识该域所基于的类型。如果该类型不是域,则为零。
| typtypmod
| int4
| |域使用typtypmod
记录要应用于其基本类型的typmod
(如果基本类型不使用typmod
则为-1)。如果此类型不是域,则为-1.
| typndims
| int4
| | typndims
是数组上域的数组维数(即typbasetype
是数组类型)。对于除数组类型上的域以外的类型,其他类型为零。
| typcollation
| oid
| pg_collation.oid
| typcollation
指定类型的排序规则。如果类型不支持归类,则为零。支持归类的基本类型在此处为DEFAULT_COLLATION_OID
。 |如果为域指定了一个可排序类型的域,则它可以具有其他一些归类 OID。
| typdefaultbin
| pg_node_tree
| |如果typdefaultbin
不为空,则它是该类型的缺省表达式的nodeToString()
表示形式。仅用于域。
| typdefault
| text
| |如果类型没有关联的默认值,则typdefault
为 null。如果typdefaultbin
不为 null,则typdefault
必须包含由typdefaultbin
表示的默认表达式的可读版本。如果typdefaultbin
为 null 而typdefault
不是 null,则typdefault
是该类型默认值的外部表示,可以将其馈送到该类型的 Importing 转换器以产生一个常量。
| typacl
| aclitem[]
| |访问权限;有关详情,请参见GRANT和REVOKE |
Table 51.63列出了typcategory
的系统定义值。将来在此列表中添加的内容也将是大写的 ASCII 字母。所有其他 ASCII 字符均保留用于用户定义的类别。
表 51.63. typcategory
代码
Code | Category |
---|---|
A |
Array types |
B |
Boolean types |
C |
Composite types |
D |
Date/time types |
E |
Enum types |
G |
Geometric types |
I |
网络地址类型 |
N |
Numeric types |
P |
Pseudo-types |
R |
Range types |
S |
String types |
T |
Timespan types |
U |
User-defined types |
V |
Bit-string types |
X |
unknown 类型 |