KingbaseESV4.1系统表说明文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

KingbaseESV4.1系统表说明文档
KingbaseES V4.1 系统表说明文档
目录
1. KingbaseES V4.1常用系统表 (2)
1.1.sys_attrdef (2)
1.2.sys_attribute (2)
1.3.sys_class (3)
1.4.sys_constraint (5)
1.5.sys_database (5)
1.6.sys_depend (6)
1.7.sys_description (7)
1.8.sys_group (8)
1.9.sys_index (8)
1.10.sys_largeobject (9)
1.11.sys_locite (9)
1.1
2.sys_namespace (10)
1.13.sys_proc (10)
1.14.sys_procparm (11)
1.15.sys_shadow (12)
1.16.sys_statistic (12)
1.17.sys_trigger (13)
1.18.sys_type (14)
2. KingbaseES V4.1常用系统视图 (16)
2.1.sys_functions (16)
2.2.sys_indexes (17)
2.3.sys_procedures (18)
2.4.sys_settings (18)
2.5.sys_tables (19)
2.6.sys_triggers (19)
2.7.sys_user (20)
2.8.sys_views (20)
/doc/4f8274161.html,er_objects (21) /doc/4f8274161.html,er_tables (21)
2.11.all_objects (21)
2.12.all_tables (21)
2.1
3.dba_objects (21)
2.14.dba_tables (21)
1.KingbaseES V4.1常用系统表
1.1. sys_attrdef
sys_attrdef 表存储字段缺省值。

字段的主要信息存放在sys_attribute (见下文)。

只有明确声明一个缺省值(该表何时创建或字段何时增加)的字段在这里有元组。

Table 1-1. sys_attrdef 字段
名字类型引用描述
adrelid oid sys_class.oid 这个字段所属的表
adnum int2 sys_attribute.attnum 字段数目
adbin text 字段缺省值的内部表现形式
adsrc text 可读的缺省值的内部表现形式
1.2. sys_attribute
sys_attribute 表存储关于表的字段的信息。

数据库里每个表的每个字段都在
sys_attribute 里有一行。

(还有用于索引和其它对象的列元组,见 sys_class。


Table 1-2. sys_attribute 字段
名字类型引用描述
attrelid oid sys_class.oid 此列/字段所属的表
attname name字段名字
atttypid oid sys_type.oid 这个字段的数据类型
attstattarget int4attstattarget 控制 ANALYZE 为这个字段积累
的统计细节的级
别。

零值表示不收集统计信息。

负数表示使用系统缺省的统计对象。

正数值的确切信息是和数据类型相关的。

对于标量数据类型,
attstattarget 既是要收集的"最常用数值"的目标数目,也是要创
建的柱状图的目标数量。

attlen int2与 sys_type.typlen 的值相同。

attnum int2字段的顺序号。

普通字段是从1 开始计数的。

系统字段,比如 oid,
有(任意)正数。

attndims int4如果该字段是数组,那么是维数,否则是0。

(目前,一个数组的
维数并未强制,因此任何非零值都表示"这是一个数组"。

) attcacheoff int4在磁盘上总是-1,但是如果装载入内存中的行描述器中,它可能
会被更新以缓冲在行中字段的偏移量。

名字类型引用描述
atttypmod int4在创建表的时候提供的类型相关的数据(比如,一个 varchar 字
段的最大长度)。

它传递给类型相关的输入和长度转换函数当做第
三个参数。

其值对那些不需要 atttypmod 的类型而言通常为 -1。

attbyval bool与 sys_type.typbyval 相同。

attstorage char这个字段的类型的 sys_type.typstorage 的拷贝。

对于可压缩的
数据类型(TOAST),这个字段可以在字段创建之后改变,以便于
控制存储策略。

attisset bool如果为真,这个字段是一个结果集。

这种情况下,在该字段真正存
储的是在 sys_proc 表里的一条行的 OID。

sys_proc 那条元组包
含定义这个结果集的查询字串。

也就是说,那条能够返回这个结
果集的查询。

所以 atttypid (见上面)指向这个查询返回的类
型,但是这个字段的实际长度是一个oid 的长度(尺存)。

attalign char这个字段的类型的 sys_type.typalign 的拷贝attnotnull bool这代表一个非空约束。

可以改变这个字段以打开或者关闭这个约
束。

atthasdef bool这个字段有一个缺省值,此时它对应 sys_attrdef 表里实际定义
此值的记录。

attisdropped bool这个字段已经被删除了,不再有效。

一个已经删除的字段物理上仍
然存在表中,但会被分析器忽略,因此不能再通过SQL访问。

attislocal bool这个字段是局部定义在关系中的。

请注意一个字段可以同时是局部
定义和继承的。

attinhcount int4这个字段所拥有的直接祖先的个数。

如果一个字段的祖先个数非
零,那么它就不能被删除或重命名。

attacl Int4字段的权限
1.3. sys_class
sys_class 表记载表和几乎所有有字段或者是那些类似表的东西。

包括索引(还要参阅 sys_index),序列,视图和一些特殊关系类型;参照relkind的说明。

在下面"relations"(关系)代表所有这些对象。

不是所有字段对所有关系类型都有意义。

Table 1-3. sys_class 字段
名字类型引用描述
relname name 表,索引,视图等的名字。

relnamespace oid sys_namespace.oid 包含这个关系的名字空
间(模式)的 OID
reltype oid sys_type.oid 对应这个表的数据类型(索引为零,它们没有sys_type
名字类型引用描述
记录)。

relowner int4 sys_/doc/4f8274161.html,esysid关系所有者
relam oid 如果元组是索引,那么就是所用的访问模式(B-tree,hash,等等)
relfilenode oid 这个关系在磁盘上的文件的名字,如果没有则为0 relpages int4 以页(大小为BLCKSZ)的此表在磁盘上的形式的大小。

它只是规划器用的一个近似值,是由 VACUUM,
ANALYZE,和 CREATE INDEX 更新。

reltuples float4 表中元组的数目。

只是规划器使用的一个估计值,由
VACUUM,ANALYZE,和CREATE INDEX 更新。

reltoastrelid oid sys_class.oid 与此表关联的TOAST表的OID,如果没有为0。

TOAST 表
在一个从属表里"离线"存储大字段。

reltoastidxid oid sys_class.oid 对于TOAST表是它的索引的 OID,如果不是TOAST表则
为 0
relhasindex bool 如果它是一个表而且至少有(或者最近有过)一个索引,
则为真。

它是由CREATE INDEX设置的,但DROP INDEX
不会立即将它清除。

如果VACUUM发现一个表没有索
引,那么它清理 relhasindex。

relisshared bool 如果该表在整个集群中由所有数据库共享则为真。


有某些系统表(比如 sys_database) 是共享的。

relkind char r = 普通表,i = 索引,S = 序列,v = 视图, c = 复
合类型,s = 特殊,t = TOAST表
relnatts int2 关系中用户字段数目(除了系统字段以外)。


sys_attribute 里肯定有相同数目对应行。

又见
sys_attribute.attnum.
relchecks int2 表里的检查约束的数目;参阅sys_constraint 表reltriggers int2 表里的触发器的数目;参阅 sys_trigger 表 relukeys int2 未用(不是唯一键字的数目)
relfkeys int2 未用(不是表中外键的数目)
relrefs int2 未用
relhasoids bool 如果为关系中每行都生成一个OID 则为真。

relhaspkey bool 如果这个表有一个(或者曾经有一个)主键,则为真。

relhasrules bool 表有规则;参阅 sys_rewrite 表
relhassubclass bool 至少有一个表继承这个表
relacl aclitem[] 访问权限。

1.4. sys_constraint
系统表sys_constraint 存储表上的检查约束、主键、唯一约束和外键约束。

(字段约束不会得到特殊对待,每个字段约束都等效于某些表约束。


Table 1-4. sys_constraint 字段
名字类型引用描述
conname name 约束名字(不一定是唯一的!)
connamespace oid sys_namespace.oid 包含这个约束的名字空间的 OID
contype char c = 检查约束, f = 外键约束, p = 主键约束, u = 唯
一约束
condeferrable boolean 这个约束可以推迟吗
condeferred boolean 缺省时这个约束是否推迟的
conrelid oid sys_class.oid 这个约束所在的表;如果不是表约束则为 0
contypid oid sys_type.oid 这个约束所在的域;如果不是一个域约束则为 0 confrelid oid sys_class.oid 如果是外键,则为参考的表;否则为 0
confupdtype char 外键更新动作代码
confdeltype char 外键删除动作代码
confmatchtype char 外键匹配类型
conkey int2[]sys_attribute.attnum如果是表约束,则是约束控制的字段列表
confkey int2[]sys_attribute.attnum如果是一个外键,是参考的字段的列表
conbin text 如果是检查约束,那就是其表达式的内部形式
consrc text 如果是检查约束,则是表达式的人类可读形式
注意: consrc 在被引用的对象改变之后不会被更新,它不会跟踪字段的名字修改。

与其依赖这个字段,最好还是使用sys_get_constraintdef() 来抽取一个检查约束的定义。

注意: sys_class.relchecks 需要和在此表上为给定关系找到的检查约束的数目一致。

1.5. sys_database
sys_database 表存储关于可用数据库的信息。

数据库是用CREATE DATABASE创建的。

和大多数系统表不同,sys_database 是在一个集群里的所有数据库共享的:每个集群只有一份sys_database 拷贝,而不是每个数据库一份。

Table 1-5. sys_database 字段
名字类型引用描述
名字类型引用描述
datname name 数据库名字
datdba int4
sys_/doc/4f8274161.html,esysid数据库所有人,通常为其创建者
encoding int4 数据库的字符编码方式
datistemplate bool 如果为真则此数据库可以用于CREATE DATABASE
TEMPLATE子句,把新数据库创建为此数据库的克隆。

datallowconn bool 如果为假则没有人可以联接到这个数据库。

这个字段用
于保护 template0 数据库不被更改。

datlastsysoid oid 数据库里最后一个系统 OID;
datvacuumxid xid 在该数据库中这个标志标记为在"已知已提交"或者"已
知已退出" 之前,所有元组都以事务 ID 插入或删除。

这个标志用于判断何时提交日志空间可以循环使用。

datfrozenxid xid 在该数据库中这个标志标记为一个永久的 ("冻结(frozen)")的事务 ID 之前,所有元组都以事务 ID 插
入。

该标志可以用于检查一个数据库是否应该马上清理
以避免事务 ID 重叠的问题。

datpath text 如果该数据库存放在另外一个位置,那么这个字段记录
该位置。

它要么是一个环境变量名要么是一个绝对路
径,取决于它是如何输入的。

datconfig text[] 运行时配置变量的会话缺省值
datacl aclitem[] 访问权限
1.6. sys_depend
sys_depend 表记录数据库对象之间的依赖关系。

这个信息允许DROP 命令找出哪些其他的对象必须由 DROP CASCADE 删除,或者是在 DROP RESTRICT 的情况下避免删除。

Table 1-6. sys_depend 字段
引用描述
名字类

classid oid sys_class.oid 有倚赖对象所在系统表的 OID
objid oid 指定的有依赖对象的 OID
objsubid int4 对于表字段,这个是该属性的字段数(objid和classid引用表本身)。

对于所有其他对象类型,目前这个字段是零。

refclassid oid sys_class.oid 被引用对象所在的系统表的 oid
refobjid oid 指定的被引用对象的 OID
refobjsubid int4 对于表字段,这个是该字段的字段号(objid和classid引用表本身)。

名字类
引用描述

对于所有其他对象类型,目前这个字段是零。

deptype char 一个定义这个依赖关系特定语义的代码。

在所有情况下,一个 sys_depend 记录表示被引用的对象不能在有依赖的对象被删除前删除。

不过,这里还有几种由 deptype 定义的情况:
DEPENDENCY_NORMAL (n)
独立创建的对象之间的一般关系。

有倚赖的对象可以在不影响被引用对象的情况下删除。

被引用对象只有在声明了CASCADE的情况下删除,这时有依赖的对象也被删
除。

例子:一个表字段对其数据类型有一般依赖关系。

DEPENDENCY_AUTO (a)
有依赖对象可以和被引用对象分别删除,并且如果删除了被引用对象则应该被自动删除(不管是RESTRICT还是CASCADE模式)。

例子:一个表上面的命名约束是在该表上的自动依赖关系,因此如果删除了表,它也会被删除。

DEPENDENCY_INTERNAL (i)
有依赖的对象是作为被引用对象的一部分创建的,实际上只是它的内部实现的一部分。

DROP有依赖对象是不能直接允许的(将告诉用户发出一条删除被引用对象的
DROP)。

一个对被引用对象的DROP 将传播到有依赖对象,不管是否声明了CASCADE。

例子:一个创建来强制外键约束的触发器在该约束的sys_constraint 记录上是标
记为内部依赖的。

DEPENDENCY_PIN (p)
没有有依赖对象;这种类型的记录标志着系统本身依赖于被引用对象,因此这个对
象决不能被删除。

这种类型的记录只有在initdb的时候创建。

有依赖对象的字段里是零。

1.7. sys_description
sys_description 表可以给每个数据库对象存储一个可选的描述或者注释。

你可以用COMMENT 命令操作这些描述,并且可以用isql 的\d 命令查看。

许多内置的系统对象的描述提供了sys_description 的初始内容。

Table 1-7. sys_description 字段
名字类型引用描述
objoid oid 任意 oid 属性这条描述所描述的对象的 OID
classoid oid sys_class.oid这个对象出现的系统表的 OID
objsubid int4 对于一个表字段的注释,它是字段号(objoid 和classoid 指向
表自身)。

对于其它对象类型,它是零。

名字类型引用描述
objctime timestamp 对象的创建时间
objmtime timestamp 对象的修改时间
description text 作为对该对象的描述的任意文本
objdef text 函数,存储过程,触发器以及视图的原始定义
1.8. sys_group
sys_group 表定义组以及哪些用户属于哪个组的信息。

组是用CREATE GROUP 命令创建的。

因为用户和组标识是集群范围的对象,所以sys_group 是在一个集群中的所有数据库中共享的:一个集群里只有一份 sys_group 的拷贝,而不是每个数据库一份。

Table 1-8. sys_group 字段
名字类型引用描述
groname name 组名字
grosysid int4 标识这个组的任意数字
grolist int4[] sys_/doc/4f8274161.html,esysid一个包含该组中用户 ID 的数组
aclitem int 访问权限
1.9. sys_index
sys_index 包含关于索引的一部分信息。

其他的信息大多数在sys_class。

Table 1-9. sys_index 字段
名字类型引用描述
indexrelid oid sys_class.oid 这个索引在sys_class里的记录的OID
indrelid oid sys_class.oid 使用这个索引的表在sys_class里的记录的 OID indkey int2vector sys_attribute.attnum这是一个数组,最多有 INDEX_MAX_KEYS 个值,指向
该索引建立的表字段。

比如一个值为 1 3 的向量意
味着第一个字段和第三个字段组成这个索引键字。

这个数组里的零表明对应的索引属性是在这个表字
段上的一个表达式,而不是一个简单的字段引用。

indclass oidvector 对于索引键字里面的每个字段,这个字段都包含一个指向所使用的 "操作符表"的 OID。

indnatts int2 索引中的字段数目,复制的sys_class.relnatts
indisunique bool 如果为真,这是个唯一索引
名字类型引用描述
indisprimary bool 如果为真,该索引代表该表的主键。

(这个字段为真
的时候indisunique应该总是为真。

) indisclustered bool 如果为真,那么该表最后在这个索引上建了簇。

indexprs text 表达式树(以 nodeT oString() 形式表现)用于那
些非简单字段引用的索引属性。

它是一个列表,在
indkey 里面的每个零条目一个元素。

如果所有索引
属性都是简单的引用,则为空。

indpred text 部分索引断言的表达式树(是以nodeToString()的形式表现的)。

如果不是部分索引,则是空字串。

1.10. sys_largeobject
sys_largeobject 表保存那些标记着 "大对象"的数据。

一个大对象是使用其创建时分配的OID 标识的。

每个大对象都分解成足够小的小段或者"页面" 以便以行的形式存储在
sys_largeobject 里。

每页的数据定义为LOBLKSIZE(目前是BLCKSZ/4,或者通常是 2K 字节)。

Table 1-10. sys_largeobject 字段
描述
名称类型引

loid oid 包含本页的大对象的标识符
pageno int4 本页在其大对象数据中的页码从零开始计算
data bytea 存储在大对象中的实际数据。

这些数据绝不会超过LOBLKSIZE字节,而且可能更少。

sys_largeobject 的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno * LOBLKSIZE) 开始。

1.11. sys_locite
记录所有大对象在表中的引用情况
Table 1-11. sys_locite 字段
名字类型引用描述
loid Oid sys_largeobject.loid大对象的id
lociteno int 大对象的引用计数
1.1
2. sys_namespace
表 sys_namespace 存储名字空间。

名字空间是 SQL92 模式下层的结构:每个名字空间有独立的关系,类型等集合但并不会相互冲突。

Table 1-12. sys_namespace 字段
名字类型参考描述
nspname name 名字空间的名字
nspowner int4 sys_/doc/4f8274161.html,esysid名字空间的所有者(创建者)
nspacl aclitem[] 访问权限
1.13. sys_proc
sys_proc 表存储关于函数(或过程)的信息。

该表包含聚集函数和普通函数的数据。

如果 proisagg 为真,那么在 sys_aggregate 里应该有一个匹配行。

Table 1-13. sys_proc 字段
名字类型引用描述
proname name 函数名字
pronamespace oid sys_namespace.oid 包含该函数名字空间的OID。

proowner int4 sys_/doc/4f8274161.html,esysid函数所有者(创建者)
prolang oid 这个函数的实现语言或调用接口
proisagg bool 函数是聚集函数
prosecdef bool 函数是一个安全定义器(也就是说,一个
"setuid"函数)proisstrict bool 如果任何调用参数是空,那么函数返回空。

这时函数实际
上连调用都不调用。

不是"strict"的函数必须准备处理
空输入。

proretset bool 函数返回一个集合(也就是说,指定数据类型的多个数值) provolatile char provolatile 告诉用户该函数的结果是否只倚赖于它的
输入参数,或者还会被外接因素影响。

对于"不可变的
(immutable)"函数它是i,这样的函数对于相同的输入
总是产生相同的结果。

对于"稳定(stable)"的函数它是
s, (对于固定输入)其结果在一次扫描里不变。

对于"
易变(volatile)"函数它是 v,其结果可能在任何时候变
化。

(v 也用于那些有副作用的函数,因此调用它们无法
得到优化。

)
名字类型引用描述
pronargs int2 参数数目
prorettype oid sys_type.oid 返回值的数据类型
proargtypes oidvector sys_type.oid 一个存放函数参数的数据类型的数组。

prokind char s-系统,i-内部,u-户定义
protype char p-procedure, f-function
proclass char 函数分类:a-聚集函数c-字符串函数C-转换函数d-时
间函数 i-interval函数 m-数学函数 M-其他函数 prosrc text 这个字段告诉函数句柄如何调用该函数。

它实际上对于解
释语言来说就是函数的源程序,或者一个链接符号,一个
文件名,或者是任何其他的东西,具体取决于语言/调用
习惯的实现。

probin bytea 关于如何调用该函数的附加信息。

同样,其含义也是和语
言相关的。

proacl aclitem[] 访问权限
如果是编译函数的话,prosrc 包含函数的C 语言名字(链接符号),包括内建函数和动态装载的函数。

对于所有其它语言类型,prosrc 包含该函数的源文本。

probin 除了用于动态装载的 C 函数之外没有其它用途,这个时候它给出包含给函数的共享库的文件名。

1.14. sys_procparm
记录存储过程和函数的参数信息。

Table 1-14. procparm 字段
名字类型引用描述
parproid oid sys_proc.oid 存储过程或者函数的oid
parnum int2 字段的序号
parname Name 参数名称
parndims int4 若参数是数组,则是数组的维数,否则是0
parmode char i-input o-ouput b-inout
partypid oid sys_type.oid 参数类型
partypmod Int4 类型的typmod
parnotnull bool 可否是null
parisset bool 是否是一个集合
parDefBin Text 字段缺省值的内部表现形式
名字类型引用描述
adsrc text 可读的缺省值的内部表现形式
1.15. sys_shadow
sys_shadow 包含关于数据库用户的信息。

名字源于此表不应为所有人可读,因为它包含口令。

sys_user 是一个建立在sys_shadow 上全局可读的视图,只不过把口令域填成了空白。

因为用户身份是集群范围的对象,所以sys_shadow 在一个集群中的所有数据库中共享;每个集群只有一个 sys_shadow 的拷贝,而不是每个数据库一个。

Table 1-15. sys_shadow 字段
名字类型引
描述

usename name 用户名
usesysid int4 用户 id(用于引用这个用户的任意数字)
usecreatedb bool 用户可以创建数据库
usesuper bool 用户是超级用户
usecatupd bool 用户可以更新系统表。

(除非这个属性为真,否则超级用户也不能这么干。

)passwd text 口令
valuntil abstime帐户截止日期(只用于口令认证)
useconfig text[] 运行时配置变量的会话缺省值
type char 操作系统用户,或者数据库用户
useacl int 访问权限
1.16. sys_statistic
sys_statistic表存储有关该数据库内容的统计数据。

记录是ANALYZE 创建的,并且随后被查询规划器使用。

请注意所有统计信息天生都是近似的数值,即使假设它是最新的也如此。

因为不同类型的统计信息适用于不同类型的数据,sys_statistic 被设计成不太在意自己存储的是什么类型的统计。

只有极为常用的统计信息(比如NULL的含量)才在
sys_statistic里给予专用的字段。

其它所有东西都存储在"槽位"中,而槽位是一组相关的字段,它们的内容用槽位中的一个字段的代码号码表示。

sys_statistic 不应该是公众可读的,因为即使是表内容的统计信息也应该认为是敏感的。

(例子∶薪水字段的最大最小值肯定是相当让人感兴趣的。

) sys_stats 是一个在
sys_statistic 上的全局可读的视图,它只显示那些表对于当前用户可读的信息。

sys_stats 也设计成具有比其所依靠的下层 sys_statistic 表更具可读性的信息 --- 代价是增加新的槽位类型的时候,它的模式必须扩展。

Table 1-16. sys_statistic 字段
名字类型参考描述
starelid oid sys_class.oid 所描述的字段所属的表
staattnum int2 sys_attribute.attnum所描述的字段的个数
stanullfrac float4 该字段中为 NULL 的记录的比率
stawidth int4 非 NULL 记录的平均存储宽度,以字节计
stadistinct float4 字段里唯一的非 NULL 数据值的数目。

一个大于零的数值
是独立数值的实际数目。

一个小于零的数值是表中行数的
分数的负数(比如,一个字段的数值平均出现概率为两次,
那么可以表示为 stadistinct = -0.5)。

零值表示独立数
值的数目未知。

stakind N int2 一个编码,表示这种类型的统计存储在sys_statistic 行
的第N个"槽位"。

staop N oid 一个用于生成这些存储在第N个"槽位"的统计信息的操作
符。

比如,一个柱面图槽位会显示<操作符,该操作符定
义了该数据的排序顺序。

stanumbers N float4[]第N个"槽位"的相关类型的数值类型统计,如果该槽位和
数值类型没有关系,那么就是NULL。

stavalues N anyarray第N个"槽位"相关类型的字段数据值,如果该槽位类型不
存储任何数据值那么就是 NULL。

每个数组的元素值实际
上都是指定字段的数据类型,因此,除了把这些字段的类
型定义成 "anyarray" 之外,没有更好的办法。

1.17. sys_trigger
系统表sys_trigger存储表上面的触发器。

Table 1-17. sys_trigger 字段
名称类型引用描述
tgrelid oid sys_class.oid这个触发器所处的表
tgname name 触发器名称(在同一表的所有触发器中必须唯一)tgfoid oid sys_proc.oid要调用的函数
tgtype int2 标识触发器条件的位掩码
tgenabled bool 如果触发器打开则为真(目前还没有在所有应该检查的地方
检查这个字段的数值,因此想通过把这个字段设置为假关闭
一个触发器的做法并不可靠)
tgisconstraint bool 如果触发器实现一个参考完整性约束则为真
tgconstrname name 参考完整性约束的名称
tgconstrrelid oid sys_class.oid一个参考完整性约束引用的表
tgdeferrable bool 如果可推迟则为真
tginitdeferred bool 如果是初始可推迟则为真
tgnargs int2 传递给触发器函数的参数字串个数
tgattr int2vector 记录update of columns trigger的字段序号
tgargs bytea 传递给触发器的参数字串,每个都是用空零结尾
注意: sys_class.reltriggers 需要和此表中的记录匹配。

1.18. sys_type
系统表sys_type存储有关数据类型的信息。

基本类型(标量类型)是用CREATE TYPE 创建的。

同时还为数据库中每个表自动创建一个复合类型,以表示该表的行结构。

还可以用CREATE TYPE AS创建复合类型,用 CREATE DOMAIN 创建衍生的类型。

Table 1-18. sys_type 字段
名字类型引用描述
typname name 数据类型名字
typnamespace oid sys_namespace.oid 包含这个类型的名字空间的 OID
typowner int4 sys_/doc/4f8274161.html,esysid该类型的所有人
typlen int2 对于定长类型,typlen是该类型内部表现形式的字节数
目。

对于变长类型,typlen 是负数。

-1 表示一种"变长"
类型(有长度字属性的数据), -2 表示这是一个 NULL 结
尾的 C 字串。

typbyval bool typbyval 判断内部过程传递这个类型的数值时是通过传
值还是传引用。

只有 char,short,和 int 或相当的项
目可以传值,所以如果该类型不是 1,2,4字节长,
KingbaseES 不会有传值的选择,因此 typbyval 最好是
假。

变长类似总是传引用。

请注意即使长度可以传值,
typbyval 也可以为假;比如,现在float4就是如此。

typtype char typtype对于基础类型是 b,对于复合类型是 c (也就是说,一个表的行类型)。

衍生类型时是 d (也就是说,
一个域),或者是p 表示伪类型。

typisdefined bool 如果定义了类型则为真,如果是一种尚未定义的类型的占
位符则为假。

如果typisdefined为假,那么除了该类型
名称,名字空间,和 OID 之外没有可靠的信息。

typdelim char 当分析数组输入时,分隔两个此类型数值的字符请注意该
分隔符是与数组元素数据类型相关联的,而不是和数组数
据类型关联。

typrelid oid sys_class.oid 如果是复合类型(见 typtype) 那么这个字段指向
sys_class 中定义该表的元组。

(对于自由存在的复合类
型,sys_class 记录并不表示一个表,但是总需要它来查
找该类型联接的 sys_attribute 记录。

)非复合类型为
零。

typelem oid sys_type.oid 如果typelem 不为0,那么它标识
sys_type 里面的另
外一行。

当前类型可以当做一个产生类型为 typelem 的
数组来描述。

一个"真正的" 数组类型是变长的 (typlen
= -1),但是一些定长的(typlen> 0)类型也拥有非零的
typelem,比如 name 和 oidvector。

如果一个定长类型
拥有一个typelem,那么他的内部形式必须是 typelem 数
据类型的某个数目的个数值,不能有其它数据。

变长数组
类型有一个该数组子过程定义的头(文件)。

typinput regproc sys_proc.oid 输入转换函数(文本格式)
typoutput regproc sys_proc.oid 输出转换函数(文本格式)
typreceive regproc sys_proc.oid 输入转换函数(二进制格式),如果没有则为 0
typsend regproc sys_proc.oid 输出转换函数(二进制格式),如果没有则为 0
typalign char typalign 是当存储此类型的数值是要求的对齐性质。

它应
用于磁盘存储以及该值在 KingbaseES 内部的大多数形
式。

如果数值是连续存放的,比如在磁盘上以完全的裸数
据的形式存放时,那么先在此类型的数据前填充空白,这
样它就可以按照要求的界限存储。

对齐引用是该序列中第
一个数据的开头。

可能的值有:
c = char 对齐,也就是不需要对齐。

s = short 对齐(在大多数机器上是 2字节)
i = int 对齐(在大多数机器上是 4 字节)
d = doubl
e 对齐(在大多数机器上是 8 字节,
但不一定是全部)
Note: 对于在系统表里使用的类型,在 sys_type 里定义
的尺寸和对齐必须和编译器在一个表示表的一行的结构里
的布局一样。

typstorage char typstorage 告诉一个变长类型(那些有 typlen = -1的)
说该类型是否准备 toast,以及对这种属性的类型的缺省
策略是什么。

可能的值有:
p: 数值总是以简单方式存储
e: 数值可以存储在一个"从属" 关系中(如果该
关系有这么一个,参阅
sys_class.reltoastrelid).
m: 数值可以以内联的压缩方式存储
x: 数值可以以内联的压缩方式或者在"从属"表
里存储。

请注意 m 域也可以移到从属表里存储,但只是最后的解决
方法(e 和 x 域先移走)。

typnotnull bool typnotnull 代表在某类型上的一个 NOT NULL 约束。

目前
只用于域。

typbasetype oid sys_type.oid 如果这是一个衍生类型(参阅typtype),那么
typbasetype 标识作为这个类型的基础的类型。

如果不是
衍生类型则为零。

typtypmod int4 域使用 typtypmod 记录要施用到它们的基础类型上的
typmod(如果基础类型不使用typmod,那么为 -1)。


果这种类型不是域,那么为 -1。

typndims int4 如果一个域是数组,那么 typndims 是数组维数的数值
(也就是说,typbasetype是一个数组类型;域的typelem
将匹配基本类型的typelem)。

非域非数组域为零。

typdefaultbin text 如果 typdefaultbin 为非 NULL,那么它是该类型缺省表。

相关文档
最新文档