目录
2.1.13. sys_constraint_status ¶
2.1.24. sys_foreign_data_wrapper ¶
2.1.32. sys_largeobject_metadata ¶
2.1.37. sys_partitioned_table ¶
2.1.44. sys_replication_origin ¶
2.1.54. sys_statistic_ext_data ¶
2.1.56. sys_subscription_rel ¶
表 2.1.11 列出了系统目录,每个目录更详细的文档见后文。
大多数系统目录都是在数据库创建的过程中从模版数据库中拷贝过来的,因此都是数据库相关的。少数目录在物理上是在一个集簇的所有数据库间中共享的,这些将在每一个目录单独的描述中介绍。
目录名 | 用途 |
---|---|
sys_aggregate | 聚集函数 |
sys_am | 关系访问方法 |
sys_amop | 访问方法操作符 |
sys_amproc | 访问方法支持函数 |
sys_attrdef | 列默认值 |
sys_attribute | 表列(“属性”) |
sys_authid | 认证标识符(角色) |
sys_auth_members | 认证标识符成员关系 |
sys_cast | 转换(数据类型转换) |
sys_class | 表、索引、序列、视图 (“关系”) |
sys_collation | 排序规则(locale信息) |
sys_constraint | 检查约束、唯一约束、主键约束、外键约束 |
sys_constraint_status | 约束状态信息 |
sys_context | context信息 |
sys_conversion | 编码转换信息 |
sys_database | 本数据库集簇中的数据库 |
sys_db_role_setting | 每角色和每数据库的设置 |
sys_default_acl | 对象类型的默认权限 |
sys_depend | 数据库对象间的依赖 |
sys_description | 数据库对象上的描述或注释 |
sys_enum | 枚举标签和值定义 |
sys_event_trigger | 事件触发器 |
sys_extension | 已安装扩展 |
sys_foreign_data_wrapper | 外部数据包装器定义 |
sys_foreign_server | 外部服务器定义 |
sys_foreign_table | 外部表信息 |
sys_index | 索引信息 |
sys_inherits | 表继承层次 |
sys_init_privs | 对象初始特权 |
sys_language | 编写函数的语言 |
sys_largeobject | 大对象的数据页 |
sys_largeobject_metadata | 大对象的元数据 |
sys_namespace | 模式 |
sys_opclass | 访问方法操作符类 |
sys_operator | 操作符 |
sys_opfamily | 访问方法操作符族 |
sys_partitioned_table | 表的分区键的信息 |
sys_pltemplate | 过程语言的模板数据 |
sys_policy | 行安全策略 |
sys_proc | 函数和过程 |
sys_publication | 用于逻辑复制的发布 |
sys_publication_rel | 发布映射的关系 |
sys_range | 范围类型的信息 |
sys_replication_origin | 已注册的复制源 |
sys_rewrite | 查询重写规则 |
sys_seclabel | 数据库对象上的安全标签 |
sys_sequence | 有关序列的信息 |
sys_set | SET标签和值定义 |
sys_shdepend | 共享对象上的依赖 |
sys_shdescription | 共享对象上的注释 |
sys_shseclabel | 共享数据库对象上的安全标签 |
sys_statistic | 规划器统计 |
sys_statistic_ext | 扩展的规划器统计信息(definition) |
sys_statistic_ext_data | 扩展的规划器统计信息(built statistics) |
sys_subscription | 逻辑复制订阅 |
sys_subscription_rel | 订阅的关系状态 |
sys_synonym | 同义词信息 |
sys_tablespace | 本数据库集簇内的表空间 |
sys_transform | 转换(将数据类型转换为过程语言需要的形式) |
sys_trigger | 触发器 |
sys_ts_config | 文本搜索配置 |
sys_ts_config_map | 文本搜索配置的记号映射 |
sys_ts_dict | 文本搜索字典 |
sys_ts_parser | 文本搜索分析器 |
sys_ts_template | 文本搜索模板 |
sys_type | 数据类型 |
sys_user_mapping | 将用户映射到外部服务器 |
sys_query_mapping | Query Mapping规则的SQL匹配/映射信息 |
kdb_job | job信息 |
sys_recyclebin | 回收站信息 |
2.1.1. sys_aggregate ¶
目录 sys_aggregate
存储关于聚集函数的信息。聚集函数是对一个数值集合(典型的是每个匹配查询条件的行中的同一个列的值) 进行操作的函数,它返回从这些值中计算出的一个数值。 典型的聚集函数是 sum
、 count
和 max
。 sys_aggregate
里的每个项都是一个 sys_proc
项的扩展。 sys_proc
项记载该聚集的名字、输入和输出数据类型,以及其他一些和普通函数类似的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
aggfnoid |
| sys_proc.oid | 聚集函数在sys_proc中的OID |
aggkind |
| 聚集类型: n表示“普通”聚集, o表示“有序集”聚集, 或者 h表示“假想集”聚集 | |
aggnumdirectargs |
| 一个有序集或者假想集聚集的直接(非聚集)参数的数 量,一个可变数组算作一个参数。 如果等于pronargs, 该聚集必定是可变的并且该可变数组描述聚集参数以及 最终直接参数。对于普通聚集总是为零。 | |
aggtransfn |
| sys_proc.oid | 转移函数 |
aggfinalfn |
| sys_proc.oid | 最终函数(如果没有就为零) |
aggcombinefn |
| sys_proc.oid | 结合函数(如果没有就为零) |
aggserialfn |
| sys_proc.oid | 序列化函数(如果没有就为零) |
aggdeserialfn |
| sys_proc.oid | 反序列化函数(如果没有就为零) |
aggmtransfn |
| sys_proc.oid | 用于移动聚集模式的向前转移函数(如果没有就为零) |
aggminvtransfn |
| sys_proc.oid | 用于移动聚集模式的反向转移函数(如果没有就为零) |
aggmfinalfn |
| sys_proc.oid | 用于移动聚集模式的最终函数(如果没有就为零) |
aggfinalextra |
| 为真则向 aggfinalfn传递额外的哑参数 | |
aggmfinalextra |
| 为真则向 aggmfinalfn传递额外的哑参数 | |
aggfinalmodify |
| aggfinalfn是否修改传递状态值: 如果是只读则为r, 如果不能在aggfinalfn之后应用aggtransfn则为s, 如果它修改该值则为w | |
aggmfinalmodify |
| 和aggfinalmodify类似,但是用于aggmfinalfn | |
aggsortop |
| sys_operator.oid | 相关联的排序操作符(如果没有则为0) |
aggtranstype |
| sys_type.oid | 聚集函数的内部转移(状态)数据的数据类型 |
aggtransspace |
| 转移状态数据的近似平均尺寸(字节),或者为零表示 使用一个默认估算值 | |
aggmtranstype |
| sys_type.oid | 聚集函数用于移动聚集欧氏的内部转移(状态) 数据的数据类型(如果没有则为零) |
aggmtransspace |
| 转移状态数据的近似平均尺寸(字节),或者为零表示 使用一个默认估算值 | |
agginitval |
| 转移状态的初始值。这是一个文本域,它包含初始 值的外部字符串表现形式。如果这个域为空, 则转移状态值从空值开始。 | |
aggminitval |
| 用于移动聚集模式的转移状态初值。这是一个文本域, 它包含了以其文本字符串形式表达的初值。 如果这个域为 空,则转移状态值从空值开始。 |
新的聚集函数可通过 CREATE AGGREGATE 命令注册。
2.1.2. sys_am ¶
目录 sys_am
存储有关系引访问方法的信息。系统支持的每种访问方法 在这个目录中都有一行。 当前,只有表和索引拥有访问方法。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 访问方法的名字 | |
|
|
| 负责提供 有关该访问方法信 息的处理器函数的 OID |
|
|
|
注意
在KingbaseES |V8R2| 之前, sys_am
包含很多额外的列以表示索引访问方法的性质。那些数据现在只有在 C 代码级别才是直接可见的。不过,系统中增加了 sys_index_column_has_property()
和一些相关函数来允许 SQL 查询检查索引访问方法的性质。
2.1.3. sys_amop ¶
目录 sys_amop
存储关于与访问方法操作符族相关的操作符信息。对于一个操作符族中的每一个成员即操作符都在这个目录中有一行。一个成员可以是一个 搜索 操作符或者一个 排序 操作符。一个操作符可以出现在多个族中,但在同一个组中既不能出现在多个搜索位置也不能出现在多个排序位置(虽然不太可能出现,但是允许一个操作符同时用于搜索和排序目的)。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 这个项所在的操作符族 |
|
|
| 操作符的左手输入数据类型 |
|
|
| 操作符的右手输入数据类型 |
|
| 操作符策略号 | |
|
| 操作符目的, | |
|
|
| 操作符的OID |
|
|
| 使用此操作符族的索引访问方法 |
|
|
| 如果是一个排序操作符 ,该项会 根据这个B树操作符族排序如果是 一个搜索操作符则为0 |
一个“搜索”操作符项意味着该操作符族的一个索引可以被搜索来查找所有满足如下条件的行: WHERE
``indexed_column`` ``operator`` ``constant`` 。 显然,这样的一个操作符必须返回 boolean
,且它的左手输入类型必须匹配索引列的数据类型。
一个“排序”操作符项意味着该操作符族的一个索引可以被扫描来返回以如下顺序排列的行: ORDER BY
``indexed_column`` ``operator`` ``constant`` 。 这样一个操作符能够返回任何可排序数据类型,尽管它的左手输入类型必须匹配索引列的数据类型。 ORDER BY
的准确语义由 amopsortfamily
列指定,它必须引用一个适合于操作符结果类型的B树操作符族。
注意
目前,一个排序操作符的排序顺序被假设为其引用的操作符族的默认值,即 ASC NULLS LAST
。未来可能会通过增加额外的列来显式地指定排序选项。
一个项的 amopmethod
必须和它所包含的操作符族的 opfmethod
相匹配(这里包括 amopmethod
是一个为了性能原因而故意对目录结构做的反规范化)。此外, amoplefttype
和 amoprighttype
也必须匹配被引用的 sys_operator
项的 oprleft
和 oprright
域。
2.1.4. sys_amproc ¶
目录 sys_amproc
存储关于访问方法操作符族相关的支持函数。属于一个操作符族的每一个支持函数在这个目录中都有一行。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 使用这 个项的操作符族 |
|
|
| 相关操作符的左 手输入数据类型 |
|
|
| 相关操作符的右 手输入数据类型 |
|
| 支持过程编号 | |
|
|
| 过程的OID |
amproclefttype
和 amprocrighttype
列的通常解释是它们标识了一个特定支持过程所支持的操作符的左右输入类型。对于某些访问方法它们和支持过程本身的输入数据类型相匹配,而对其他的则不会匹配。对于一个索引有一个“默认”支持过程的概念,这些支持过程的 amproclefttype
和 amprocrighttype
都等于索引操作符类的 opcintype
。
2.1.5. sys_attrdef ¶
sys_attrdef
存储列的默认值。列的主要信息存储在 sys_attribute 。 只有那些显式设置默认值的列才会在这个目录中有一个项。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 该列所属的表 |
|
|
| 列号 |
|
| The column default value, in nodeToString() representation. Use sys_get_expr(ad bin, adrelid) to convert it to an SQL expression. |
2.1.6. sys_attribute ¶
目录 sys_attribute
存储有关表列的信息。数据库中的每一个表的每一个列都恰好在 sys_attribute
中有一行。(这其中也会有索引的属性项,并且事实上所有具有 sys_class
项的对象在这里都有属性项) entries.)
术语属性等同于列,这里使用它只是出于历史原因。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 列所属的表 |
|
| 列名 | |
|
|
| 列的数据类型 |
|
|
| |
|
| 本列类型的 | |
|
| 列的编号。一 般列从1开始向 上编号。系统列 (如 | |
|
| 如果该列是 一个数组类型, 这里就是其维度 数;否则为0。 (在目前一个数 组的维度数并不 被强制,因此任 何非零值都能有 效地表明“这是 一个数组”。) | |
|
| 在存储 中总是为-1,但 是当被载入到一 个内存中的行描 述符后,这里可 能会被更新为属 性在行内的偏移 | |
|
|
| |
|
| 该列 类型的 | |
|
| 通常是 该列类型的 | |
|
| 该列 类型的 | |
|
| 这表示 一个非空约束。 | |
|
| 该列在 行中完全缺失时 会用到这个列的 值,如果在行创 建之后增加一个 有非易失 | |
|
| 如果是一 个零字节( | |
|
| 如果是 零字节( | |
|
| 该列被删除且 不再有效。一个 删除的列仍然物 理存在于表中, 但是会被分析器 忽略并因此无法 通过SQL访问。 | |
|
| 该列是 由关系本地定义 的。注意一个列 可以同时是本地 定义和继承的。 | |
|
| 该列的直接祖 先的编号。一个 具有非零编号祖 先的列不能被删 除或者重命名。 | |
|
|
| 该列 被定义的排序规 则,如果该列不 是一个可排序数 据类型则为0。 |
|
| 列级访问权限 | |
|
| 属性级选项,以 “keyword=valu e”形式的字符串 | |
|
| 属 性级的外部数据 包装器选项,以 “keyword=valu e”形式的字符串 | |
|
| 这个 列中是一个含有 一个元素的数组 ,其中的值被用 于该列在行中完 全缺失时,如果 在行创建之后增 加一个有非易失 |
在一个被删除的列的 sys_attribute
的项中, atttypid
被重置为0,但 attlen
以及其他从 sys_type
拷贝的域仍然有效。这种安排用于处理一种情况,即被删除列的数据类型后来被删除,并且因此不再有相应的 sys_type
行。 attlen
和其他域可以被用来解释表的一行的内容。
2.1.7. sys_authid ¶
目录 sys_authid
包含关于数据库授权标识符(角色)的信息。角色把“用户”和“组”的概念包含在内。一个用户实际上就是一个 rolcanlogin
标志被设置的角色。任何角色(不管 rolcanlogin
设置与否)都能够把其他角色作为成员,参见 sys_auth_members 。
由于这个目录包含口令,它不能是公共可读的。 sys_roles 是在 sys_authid
上的一个公共可读视图,它隐去了口令域。
用户的权限和角色 包含关于用户和权限管理的详细信息。
由于用户标识符是集簇范围的, sys_authid
在一个集簇的所有数据库之间共享:在一个集簇中只有一份 sys_authid
拷贝,而不是每个数据库一份。
名字 | 类型 | 描述 |
---|---|---|
|
| 行标识符 |
|
| 角色名 |
|
| 角色是否拥有超级用户权限 |
|
| 如果本角 色是另一个角色的成员,本角 色是否自动另一个角色的权限 |
|
| 角色是否能创建更多角色 |
|
| 角色是否能创建数据库 |
|
| 角 色是否能登录。即该角色是否 能够作为初始会话授权标识符 |
|
| 角色是一个复制 角色。复制角色可以启动复制 连接并且创建和删除复制槽。 |
|
| 角色是否可以绕过 所有的行级安全性策略。 |
|
| 对于可以登录的角色, 本列设置该角色可以同时发起 最大连接数。-1表示无限制。 |
|
| 口令(可能被加密过), 如果没有口令则为空。格式取 决于使用的加密方法的形式。 |
|
| 口令过期时间(只用于口令 ,如果永不过期则为空 |
对于一个MD5加密的口令, rolpassword
列将由字符串 md5
后面跟上一个32字符的十六进制MD5哈希值构成。MD5哈希值将是该用户的口令串接上它们的用户名。例如,如果用户 joe
的口令是 xyzzy
,则KingbaseES将存储 xyzzyjoe
的md5哈希。
如果口令采用SCRAM-SHA-256加密,它的格式是:
SCRAM-SHA-256$<iteration count>:<salt>$<StoredKey>:<ServerKey>
其中 ``salt`` 、 ``StoredKey`` 和 ``ServerKey`` 是Base64编码格式。这种格式与RFC 5803说明的格式相同。
不遵守上述格式的口令被假定为未加密。
2.1.8. sys_auth_members ¶
目录 sys_auth_members
展示了角色之间的成员关系。允许任何无环的关系集合。
由于用户标识符是集簇范围的, sys_auth_members
在一个集簇的所有数据库之间共享:在一个集簇中只有一份 sys_auth_members
拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 拥 有成员的角色的ID |
|
|
|
|
|
|
| 授权此成 员关系的角色的ID |
|
|
| 如果成员能把 成员关系 授予他人,则为真 |
2.1.9. sys_cast ¶
目录 sys_cast
存储数据类型转换路径,包括内建的和用户定义的类型。
需要注意的是, sys_cast
并不表示系统知道如何执行的所有类型转换,它只包括哪些不能从某些普通规则推导出的转换。例如,一个域及其基类型之间的转换并未显式地在 sys_cast
中展示。另一个重要的例外是“自动 I/O转换造型”,它们通过数据类型自己的I/O函数来转换成(或者转换自) text
或其他字符串类型,这些转换也没有显式地在 sys_cast
中表示。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 源数据类型的OID |
|
|
| 目 标数据类型的OID |
|
|
| 执行该转换的函 数的OID。如果该 转换方法不需要一 个函数则存储0。 |
|
| 指示该转换 能被调用的环境。 | |
|
| 指示 转换如何被执行。 |
在 sys_cast
里列出的类型转换函数必须总是以转换的源类型作为它的第一个参数类型, 并且返回转换的目标类型作为它的结果类型。一个类型转换函数最多有三个参数。 如果出现了第二个参数,必须是 integer
类型;它接受与目标类型关联的修饰词, 如果没有,就是 -1。如果出现了第三个参数,那么必须是 boolean
类型; 如果该类型转换是一种明确的转换,那么它接受 true
,否则接受 false
。
在 sys_cast
里创建一条源类型和目标类型相同的记录是合理的, 只要相关联的函数接受多过一个参数。这样的记录代表“长度转换函数”, 它们把该类型的值转换为对特定的类型合法的值。
如果一个 sys_cast
的项有着不同的原类型和目标类型, 并且有一个接收多于一个参数的函数,那么它会在一个步骤中完成从一种类型到另外一种类型的转换并应用一个长度转换。如果没有这样的项,使用一个类型修改器的转换涉及两个步骤, 一个是在数据类型之间转换,另外一个是应用修改器。
2.1.10. sys_class ¶
目录 sys_class
记录表和几乎所有具有列或者像表的东西。这包括索引(但还要参见 sys_index
)、序列(但还要参见 sys_sequence
)、视图、物化视图、组合类型和TOAST表,参见 relkind
。下面,当我们提及所有这些类型的对象时我们使用“关系”。并非所有列对于所有关系类型都有意义。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 表、索引 、视图等的名字 | |
|
|
| 包含该关系的 名字空间的OID |
|
|
| 可能存在 的表行类型所对 应数据类型的OI D(对索引为0, 索引没有 |
|
|
| 对 于有类型的表, 为底层组合类型 的OID,对于其 他所有关系为0 |
|
|
| 关系的拥有者 |
|
|
| 如果这是一 个表或索引,表 或索引使用的访 问方法(heap、 B树、哈希等) |
|
| 该关系 的磁盘文件的名 字,0表示这是 一个“映射”关系 ,其磁盘文件名 取决于低层状态 | |
|
|
| 该 关系所存储的表 空间。如果为0 ,使用数据库的 默认表空间。( 如果关系无磁盘 文件时无意义) |
|
| 该表磁盘 表示的尺寸,以 页面计(页面尺 寸为BLCKSZ )。这只是 一个由规划器使 用的估计值。它 被 VACUUM 、ANALYZE 以及一些 DDL命令(如 CREATE INDEX )所更新。 | |
|
| 表中的存 活行数。这只是 一个由规划器使 用的估计值。它 被 VACUUM 、ANALYZE 以及一些 DDL命令(如 CREATE INDEX )所更新。 | |
|
| 在表的 可见性映射表中 被标记为全可见 的页数。这只是 一个由规划器使 用的估计值。它 被 VACUUM 、ANALYZE 以及一些 DDL命令(如 CREATE INDEX )所更新。 | |
|
|
| 与 该表相关联的TO AST表的OID,如 果没有则为0。 TOAST表将大属 性“线外”存储在 一个二级表中。 |
|
| 如果这是 一个表并且其上 建有(或最近建 有)索引则为真 | |
|
| 如果该表在 集簇中的所有数 据库间共享则为 真。只有某些系 统目录(如 | |
|
|
| |
|
|
| |
|
| 关系中用户列的 数目(系统列不 计算在内)。在 | |
|
| 表上CHECK 约束的数目 ,参见 | |
|
| 如果为关 系的每一行生成 一个OID则为真 | |
|
| 如果表 有(或曾有)规 则则为真,参见 | |
|
| 如果表有 (或曾有)触发 器则为真,参见 | |
|
| 如果表或索引有 (或曾有)任何 继承子女则为真 | |
|
| 如果表上 启用了行级安全 性则为真,参见 sys_policy 目录 | |
|
| 如果行级安 全性(启用时) 也适用于表拥有 者则为真,参见 sys_policy 目录 | |
|
| 如 果表已被填充则 为真(对于所有 关系该列都为真 ,但对于某些物 化视图却不是) | |
|
| 用来为 行形成“replica i dentity”的列: | |
|
| 如 果表或索引是一 个分区,则为真 | |
|
|
| 对 于在要求表重写 的DDL操作期间 被写入的新关系 ,这个域包含原 始关系的OID, 否则为0。那种 状态仅在内部可 见,对于一个用 户可见的关系这 个域应该从不包 含不是0的值。 |
|
| 在此 之前的所有事务 ID在表中已经被 替换为一个永久 的(“冻结的”) 事务ID 。这用于跟踪表 是否需要被清理 ,以便阻止事务 ID回卷或者允许 | |
|
| 在此之前的多事 务ID在表中已经 被替换为一个事 务ID。这被用于 跟踪表是否需要 被清理,以阻止 多事务ID回卷或 者允许 | |
|
| 访问权限 | |
|
| 访问方 法相关的选项, 以“keyword=va lue”字符串形式 | |
|
| 如果表示 一个分区(见relispartition ), 分区 边界的内部表达 |
sys_class
中的一些逻辑标志被以一种懒惰的方式维护:在正确状态时它们被保证为真,但是当条件不再为真时它们并不会被立刻重置为假。例如, relhasindex
由 CREATE INDEX
设置,但它从不会被 DROP INDEX
清除。作为替代, VACUUM
会在找到无索引表后清除其 relhasindex
。这种安排避免了竞争条件并且提高了并发性。
2.1.11. sys_collation ¶
目录 sys_collation
描述了可用的排序规则,其本质是从一个SQL名字到操作系统locale分类的映射。更多信息参见 排序规则 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 排序规则名字 (在每一个名字空 间和编码中唯一) | |
|
|
| 包含该排序规则 的名字空间的OID |
|
|
| 排序规则的拥有者 |
|
| 排序规则的 提供者: | |
|
| Is the collation deterministic? | |
|
| 该排序规则可应 用的编码,-1表示 它可用于任何编码 | |
|
| 该排序规则对象的 | |
|
| 该排序规则对象 的 | |
|
| 排序 规则的提供者相关 的版本。这是在排 序规则创建时记录 下来的,并且在使 用排序规则时会被 检查以检测可能导 致数据损坏的排序 规则定义的改变。 |
注意在这个目录中的唯一键是( collname
、 collencoding
、 collencoding
), 不仅仅是( collname
, collencoding
)。 所有 collencoding
不等于当前数据库编码或-1的编码规则通常都会被KingbaseES忽略,且禁止创建和 collencoding
= -1的项重名的项。因此使用一个受限的SQL名字( ``schema`` . ``name`` )来标识一个排序规则是足够的,即使这根据目录定义是不唯一的。以这种方式定义这个目录的原因是initdb会在集簇初始化时使用系统上所有可用的locale填充这个目录,所以它必须能够为所有可能在集簇中使用的编码保持项。
在 template0
数据库中,创建与数据库编码不匹配的编码是有用的,因为它们可以匹配后面从 template0
克隆的数据库的编码。这在目前必须手动完成。
2.1.12. sys_constraint ¶
目录 sys_constraint
存储表上的检查、主键、唯一、外键和排他约束(列约束也不会被特殊对待。每一个列约束都等同于某种表约束。)。非空约束不在这里,而是在 sys_attribute
目录中表示。
用户定义的约束触发器(使用 CREATE CONSTRAINT TRIGGER
创建)也会在这个表中产生一项。
域上的检查约束也存储在这里。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 约束名字( 不需要唯一!) | |
|
|
| 包含此约束的 名字空间的OID |
|
|
| |
|
| 该约束 是否能被延迟? | |
|
| 该约束是 否默认被延迟? | |
|
| 此约束是 否被验证过?当 前对于外键和检 查约束只能是假 | |
|
|
| 该约束所 在的表,如果不 是表约束则为0 |
|
|
| 该约束所 在的域,如果不 是域约束则为0 |
|
|
| 如果 该约束是唯一、 主键、外键或排 他约束,此列表 示支持此约束的 索引,否则为0 |
|
|
| 如果 这是一个分区中 的约束,则是父 分区表中对应的 约束;否则为0 |
|
|
| 如果此约束 是一个外键约束 ,此列为被引用 的表,否则为0 |
|
| 外键 更新动作代码: | |
|
| 外键 删除动作代码: | |
|
| 外键匹配类型: | |
|
| 此约束 是定义在关系本 地。注意一个约 束可以同时是本 地定义和继承。 | |
|
| 此约束的 直接继承祖先数 目。一个此列非 零的约束不能被 删除或重命名。 | |
|
| 为真表示此约 束被定义在关系 本地。它是一个 不可继承约束。 | |
|
|
| 如果是一个表 约束(包括外键 但不包括约束触 发器),此列是 被约束列的列表 |
|
|
| 如果是一 个外键,此列是 被引用列的列表 |
|
|
| 如果是一个外键 ,此列是用于PK = FK比较的等 值操作符的列表 |
|
|
| 如果是一个外键 ,此列是用于PK = PK比较的等 值操作符的列表 |
|
|
| 如果是一个外键 ,此列是用于FK = FK比较的等 值操作符的列表 |
|
|
| 如果 是一个排他约束 ,此列是没列排 他操作符的列表 |
|
| 如果 是一个检查约束 ,此列是表达式 的一个内部表示 (It's recommended to use | |
|
| 约束状态 |
在一个排他约束的情况中, conkey
只对约束元素是单一列引用时有用。对于其他情况, conkey
为0且必须查阅相关索引来发现被约束的表达式( conkey
因此和 sys_index
. indkey
具有相同的内容)。
注意
当被引用对象改变时, consrc
不能被更新。例如,它不跟踪列的重命名。最好使用 sys_get_constraintdef()
来抽取一个检查约束的定义,而不是依赖这个域。
注意
sys_class.relchecks
需要和每个关系在此目录中的检查约束数量保持一致。
2.1.13. sys_constraint_status ¶
目录 sys_constraint_status
存储表上的检查、主键、唯一、外键和排他约束的状态信息。
这个表中每一项都对应目录 sys_constraint
中的一项,这个表的列 conoid
与目录 sys_constraint
的列 oid
一一对应。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 约束 |
|
| 约束启用禁用状态 | |
|
|
| 如果此约束是一个 外键约束,此列为 引用的主键或者唯 一约束,否则为0 |
2.1.14. sys_context ¶
目录 sys_context
存储关于context的信息,更多信息参见 CREATE CONTEXT 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| context的名字 | |
|
|
| context所属命名空间的id |
|
|
| context的拥有者 |
|
| context关联包的名字 | |
|
|
| 关联包所属命名空间的id |
|
| 访问权限 |
2.1.15. sys_conversion ¶
目录 sys_conversion
描述编码转换函数。更多信息参见 CREATE CONVERSION 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 转换的 名字(在一个名 字空间内唯一) | |
|
|
| 包含此转换 的名字空间的OID |
|
|
| 转换的拥有者 |
|
| 源编码ID | |
|
| 目标编码ID | |
|
|
| 转换函数 |
|
| 如果这是 默认转换则为真 |
2.1.16. sys_database ¶
目录 sys_database
存储有关可用数据库的信息。数据库通过 CREATE DATABASE 命令创建。 更多关于其参数的信息请查阅 数据库管理入门 。
和大部分系统目录不同, sys_database
是在集簇的所有数据库之间共享的:在一个集簇中只有一份 sys_database
拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 数据库名字 | |
|
|
| 数据库 的拥有者,通常 是创建它的用户 |
|
| 此数据库的字符 编码的编号( | |
|
| 此数据 库的LC_COLLATE | |
|
| 此数 据库的LC_CTYPE | |
|
| 如果为真, 则此数据库可被 任何具有 | |
|
| 如果为假则没有 人能连接到这个 数据库。这可以 用来保护 | |
|
| 设 置能够连接到这 个数据库的最大 并发连接数。-1 表示没有限制。 | |
|
| 数 据库中最后一个 系统OID,对sys_dump 特别有用 | |
|
| 在此之前 的所有事务ID在 数据库中已经被 替换为一个永久 的(“冻结的”) 事务ID 。这用于跟踪数 据库是否需要被 清理,以便组织 事务ID回环或者 允许 | |
|
| 在此之前的所 有多事务ID在数 据库中已经被替 换为一个事务ID 。这用于跟踪数 据库是否需要被 清理, 以便组织事务I D回环或者允许 | |
|
|
| 此 数据库的默认表 空间。在此数据 库中,所有 |
|
| 访问权限 |
2.1.17. sys_db_role_setting ¶
目录 sys_db_role_setting
为每一个角色和数据库组合记录被设置到运行时配置变量的默认值。
和大部分系统目录不同, sys_db_role_setting
是在集簇的所有数据库之间共享的:在一个集簇中只有一份 sys_db_role_setting
拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 此设置 可用的数据库OI D,如果不与具体 数据库相关则为0 |
|
|
| 此 设置可用的角色 OID,如果不与具 体角色相关则为0 |
|
| 运行时配 置变量的默认值 |
2.1.18. sys_default_acl ¶
目录 sys_default_acl
存储要被分配给新创建对象的初始权限。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 与此项相 关的角色的OID |
|
|
| 与此项相关的名 字空间的OID, 如果没有则为0 |
|
| 此项适 合的对象类型: | |
|
| 此类 对象在创建时应 用有的访问权限 |
一个 sys_default_acl
项展示了要分配给属于一个指定用户的对象的初始权限。当前有两类项: defaclnamespace
= 0的“全局”项和引用一个特殊模式的“每方案”项。如果一个全局项存在,则它重载该对象类型的普通hard-wired默认权限。一个每模式项如果存在,表示权限将被加入到全局或hard-wired默认权限中。
注意当在另一个表中的一个ACL项为空时,它用来表示其对象的hard-wired默认权限,而不是当时可能在 sys_default_acl
中的任何权限。只有在对象创建期间才会查阅 sys_default_acl
。
2.1.19. sys_depend ¶
目录 sys_depend
记录数据库对象之间的依赖关系。这些信息允许 DROP
命令查找必须被 DROP CASCADE
删除的其他对象,或者在 DROP RESTRICT
情况下阻止删除。
另请参阅 sys_shdepend ,它对在一个数据库集簇中共享的对象之间的依赖提供了相似的功能。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 依赖对象所 在的系统目录OID |
|
| any OID column | 指 定依赖对象的OID |
|
| 对于 一个表列,这里是 列号( | |
|
|
| 被引用对象所在 的系统目录的OID |
|
| any OID column | 指定 被引用对象的OID |
|
| 对于一个表 列,这里是列号( | |
|
| 定义 此依赖关系语义的 一个代码,见文本 |
在所有情况下,一个 sys_depend
项表明被引用对象不能在没有删除其依赖对象的情况下被删除。但是,其中也有多种依赖类型,由 deptype
标识:
DEPENDENCY_NORMAL
( n
)
在独立创建的对象之间的一个普通关系。依赖对象可以在不影响被依赖对象的情况下被删除。被引用对象只能通过指定 CASCADE
被删除,在这种情况下依赖对象也会被删除。 例子:一个表列对于其数据类型有一个普通依赖。
DEPENDENCY_AUTO
( a
)
依赖对象可以被独立于被依赖对象删除,且应该在被引用对象被删除时自动被删除(不管在 RESTRICT
或 CASCADE
模式)。例子:一个表上的一个命名约束应该被设置为自动依赖于表,这样在表被删除后它也会消失。
DEPENDENCY_INTERNAL
( i
)
依赖对象作为被引用对象创建过程的一部分被创建,并且只是其内部实现的一部分。 依赖对象的直接 DROP
将被完全禁止(我们将告诉用户对引用的对象发出 DROP
)。不管是否指定了级联,对引用对象的删除都会自动删除依赖对象。如果依赖对象由于对被删除的其他对象的依赖而必须删除,则其删除将转换为引用对象的删除,以便依赖对象的正常和自动依赖关系的行为与引用对象的依赖关系非常相似。示例:视图的 ON SELECT
规则在内部依赖于视图,从而防止在视图保留时删除它。规则的依赖项(例如它引用的表)的行为就好像它们是视图的依赖项一样。
DEPENDENCY_PARTITION_PRI
( P
) DEPENDENCY_PARTITION_SEC
( S
)
依赖对象是作为被引用对象创建的一部分创建的,它实际上只是其内部实现的一部分;但是,与内部对象不同,有多个这样的引用对象。除非被引用的对象中至少有一个被删除,否则不能删除从属对象;如果有,则无论是否指定了级联,都应该删除依赖对象。与内部对象不同的是,依赖对象所依赖的其他对象的删除不会导致任何分区引用对象的自动删除。因此,如果删除没有通过其他路径级联到这些对象中的至少一个,那么它将被拒绝。(在大多数情况下,依赖对象与至少一个分区引用的对象共享其所有非分区依赖项,因此此限制不会导致阻塞任何级联删除。)主分区依赖项和辅助分区依赖项的行为相同,但主分区依赖项更适合在错误消息中使用;因此,与分区相关的对象应该有一个主分区依赖项和一个或多个辅助分区依赖项。注意,分区依赖项是附加的,而不是代替的,对象通常具有的任何依赖项。这简化了 ATTACH/DETACH PARTITION
分区操作:只需要添加或删除分区依赖项。例如:子分区索引的分区依赖于它所在的分区表和父分区索引,因此,如果其中一个被删除,它就会消失,但如果不删除,它就不会消失。对父索引的依赖是主索引,因此,如果用户试图删除子分区索引,错误消息将建议删除父索引(而不是表)。
DEPENDENCY_EXTENSION
( e
)
从属对象是引用对象的扩展的成员(参见 sys_extension )。依赖对象只能通过引用对象的 DROP EXTENSION
来删除。从功能上讲,这个依赖项类型与内部依赖项的作用相同,但是为了明晰和简化sys_dump,它是独立的。
DEPENDENCY_AUTO_EXTENSION
( x
)
从属对象不是作为引用对象的扩展的成员(因此sys_dump不应该忽略它),但是没有扩展它就不能工作,如果扩展是,则应该自动删除它。依赖对象也可以自动删除。在功能上,这个依赖项类型与自动依赖项的作用相同,但是为了明晰和简化sys_dump,它是独立的。
DEPENDENCY_PIN
( p
)
没有依赖对象,这种类型的项是一个信号,用于说明系统本身依赖于被引用对象,并且该对象永远不能被删除。这种类型的项只能被 initdb
创建。而此种项的依赖对象的列都为0。
在未来可能会需要其他依赖类型。
注意,两个对象很可能由多个 sys_depend
条目链接。例如,子分区索引对其关联的分区表具有分区类型依赖项,对其索引的表的每一列具有自动依赖项。这种情况表达了多种依赖语义的结合。如果依赖对象的任何依赖项满足自动删除的条件,则可以不使用级联删除依赖对象。相反,必须满足关于哪些对象必须一起删除的所有依赖项限制。
2.1.20. sys_description ¶
目录 sys_description
存储对每一个数据库对象可选的描述(注释)。描述可以通过 COMMENT 操作,并可使用ksql的 \d
命令查看。在 sys_description
的初始内容中提供了很多内建系统对象的描述。
参见 sys_shdescription ,它对在一个数据库集簇中共享的对象的描述提供了相似的功能。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| any OID column | 描 述所属对象的OID |
|
|
| 对象所述 的系统目录的OID |
|
| 对于一个表列上的 一个注释,这里是 列号(objoid 和classoid id 指表本身) 。对所有其他对象 类型,此列为0。 | |
|
| 作为该对 象描述的任意文本 |
2.1.21. sys_enum ¶
sys_enum
目录包含每一个枚举类型的项,其中包括了值和标签。一个给定枚举值的内部表示实际上是它在 sys_enum
中的相关行的OID。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 包含此枚 举值的sys_type type项的OID |
|
| 此枚 举值在其枚举类 型中的排序位置 | |
|
| 此枚 举值的文本标签 |
sys_enum
行的OID值遵循一种特殊的规则:即OID的数值被保证按照其枚举类型的排序顺序进行排序。即如果两个偶数OID属于同一枚举类型,较小的OID必然具有较小的 enumsortorder
值。奇数OID值不需要遵循排序顺序。这种规则使得枚举比较例程在很多常见情况下可以避免系统目录查找。创建和修改枚举类型的例程将尝试尽可能地为枚举值分配偶数OID。
当一个枚举类型被创建后,其成员会被分配排序位置1.. ``n`` 。但后面增加的成员可能会被分配负值或者分数值的 enumsortorder
。对于这些值的唯一要求是它们必须被正确地排序且和保持唯一。
2.1.22. sys_event_trigger ¶
目录 sys_event_trigger
存储事件触发器。更多信息参见 触发器 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 触发器 名(必须唯一) | |
|
| 此触发器触发 的事件的标识符 | |
|
|
| 事件 触发器的拥有者 |
|
|
| 将被调用的函数 |
|
| 控制事件触 发器触发的 se ssion_replicati on_role 模式 | |
|
| 此触发器将触发 的命令标签。如 果为空,此触发 器的触发不受命 令标签的限制。 |
2.1.23. sys_extension ¶
目录 sys_extension
存储有关已安装扩展的信息。有关扩展的细节请参见 扩展插件概述 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 扩展的名字 | |
|
|
| 扩展的拥有者 |
|
|
| 包含此扩展的 导出对象的模式 |
|
| 如果扩展 可被重定位到另 一个模式则为真 | |
|
| 扩展的版本名字 | |
|
|
| 扩展的配置表的 |
|
| 扩展的配置表 的 |
注意和大部分具有一个“namespace”列的模式不同, extnamespace
不是用来表示扩展属于该模式。扩展的名字从不用模式进行限定。 extnamespace
表明该模式包含了该扩展的大部分或全部对象。如果 extrelocatable
为真,则该模式事实上必须包含属于此扩展的全部模式限定的对象。
2.1.24. sys_foreign_data_wrapper ¶
目录 sys_foreign_data_wrapper
存储外部数据包装器定义。外部数据包装器是一种访问位于外部服务器上数据的机制。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 外部数 据包装器的名字 | |
|
|
| 外部数据 包装器的拥有者 |
|
|
| 指一个 负责为外部数据 包装器提供执行 例程的处理函数 。如果没有提供 处理函数则为0 |
|
|
| 指一个负责 检查传给外部数 据包装器的选项 的有效性的验证 函数,包括外部 服务器选项以及 使用外部数据包 装器的用户映射 。如果没有提供 验证函数则为0 |
|
| 访问权限 | |
|
| 外部数据包 装器特定选项, 以“keyword=va lue”字符串形式 |
2.1.25. sys_foreign_server ¶
目录 sys_foreign_server
存储外部服务器定义。外部服务器定义了外部数据的来源,例如一个远程服务器。外部服务器通过外部数据包装器来访问。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 外 部服务器的名字 | |
|
|
| 外部 服务器的拥有者 |
|
|
| 此外部 服务器的外部数 据包装器的OID |
|
| 服务器 的类型(可选) | |
|
| 服务器 的版本(可选) | |
|
| 访问权限 | |
|
| 外部服 务器特定选项, 以“keyword=va lue”字符串形式 |
2.1.26. sys_foreign_table ¶
目录 sys_foreign_table
包含关于外部表的辅助信息。一个外部表和普通表一样,主要由一个 sys_class
项表示。它的 sys_foreign_table
项包含外部表所特有的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 外部表的 |
|
|
| 外部表所在的 外部服务器的OID |
|
| 外部表选 项,以“keyword= value”字符串形式 |
2.1.27. sys_index ¶
目录 sys_index
包含关于索引的部分信息。其他信息大部分在 sys_class
中。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 此索 引的 |
|
|
| 此索引的基 表的 |
|
| 索引中的总 列数(与 | |
|
| 索引中 键列 的编号,不计 入任何的 内 含列 ,它们 只是被存储但不 参与索引的语义 | |
|
| 表示 是否为唯一索引 | |
|
| 表 示索引是否表示 表的主键(如果 此列为真, | |
|
| 表示索引是否支 持一个排他约束 | |
|
| 表示唯一 性检查是否在插 入时立即被执行 (如果 | |
|
| 如果为真, 表示表最后以此 索引进行了聚簇 | |
|
| 如果为真,此 索引当前可以用 于查询。为假表 示此索引可能不 完整:它肯定还 在被 | |
|
| 如果为真, 直到此 | |
|
| 如果为真 ,表示此索引当 前可以用于插入 。为假表示索引 必须被 | |
|
| 如果为假 ,索引正处于被 删除过程中,并 且必须被所有处 理忽略(包括H OT安全的决策) | |
|
| 如果为真,这 个索引被选择为使用 | |
|
|
| 这是一 个 |
|
|
| 对于索引键 ( |
|
|
| 对 于索引键中的每 一列( |
|
| 这是一 个 | |
|
| 非简单列引用 索引属性的表达 式树(以 | |
|
| 部分索引谓词的 表达式树(以 |
2.1.28. sys_inherits ¶
目录 sys_inherits
记录有关表继承层次的信息。数据库中每一个直接父子关系在这里都有一项(非直接继承可以通过顺着项构成的链来决定)。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 孩子表的OID |
|
|
| 父表的OID |
|
| 如果一个子表 有多于一个直 接父表(多继承) ,这个数字说明了 继承列被排列的顺 序。计数从1开始。 |
2.1.29. sys_init_privs ¶
目录 sys_init_privs
记录系统中对象的初始特权。数据库中每一个具有非默认(非-NULL)初始特权集合的对象都有一个条目在其中。
对象可以在系统初始化(initdb)时获得其初始特权,也可以在 CREATE EXTENSION
期间创建该对象并且在扩展脚本中用 GRANT
来设置对象的初始特权。注意系统将自动处理扩展脚本执行期间对特权的记录,扩展的作者们只需要在他们的脚本中使用 GRANT
以及 REVOKE
语句以便特权被记录下来。 privtype
列表示初始特权是被initdb设置还是在一次 CREATE EXTENSION
命令期间被设置。
具有被initdb设置的初始特权的对象的条目中 privtype
是 'i'
,而具有被 CREATE EXTENSION
设置的初始特权的对象的条目中 privtype
为 'e'
。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 任何 OID 列 | 指定对象的 OID |
|
|
| 对象所 在的系统目录的 OID |
|
| 对于一 个表列,这里是 列编号( | |
|
| 定义这个对象初 始特权类型的代 码,见文字说明 | |
|
| 初 始的访问特权, 详见 数据定义 |
2.1.30. sys_language ¶
目录 sys_language
注册了可用于编写函数或存储过程的语言。 更多关于语言处理器的信息请参阅 CREATE LANGUAGE 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 语言的名字 | |
|
|
| 语言的拥有者 |
|
| 内部语 言为假(如SQL ),用户定义语 言为真。当前, sys_dump仍然使 用这个列来决定 要转储哪些语言 ,但在未来这可 能会被一种不同 的机制所取代。 | |
|
| 为真表示这是 一种可信的语言 ,即它被相信不 会向普通SQL执 行环境之外的任 何东西授予权限 。只有超级用户 可以在非可信语 言中创建函数。 | |
|
|
| 对于非内部语言 ,此列引用语言 处理器,它是一 个特殊函数负责 执行所有用这种 语言编写的函数 |
|
|
| 此列 引用一个负责执 行“内联”匿名代 码块的函数 。如果不支持 内联块则为0。 |
|
|
| 此列引用一 个负责在函数创 建时对其进行语 法和可用性检查 的语言验证函数 。如果没有提供 验证器则为0。 |
|
| 访问权限 |
2.1.31. sys_largeobject ¶
目录 sys_largeobject
保存构成“大对象”的数据。一个大对象在被创建时会被分配一个OID。每个大对象被分解成段或“页”,以便小到可以被方便地作为行存储在 sys_largeobject
中。每页中的数据量被定义为 LOBLKSIZE
(目前是 BLCKSZ/4
或是2 kB)。
在KingbaseES |V8R2| 之前,大对象没有相关的权限结构。作为结果, sys_largeobject
是公共可读的并且可以用来获得系统中所有大对象的OID(和内容)。但现在不是这样了,可使用 sys_largeobject_metadata 来获得大对象OID的列表。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含此 页的大对象的标识符 |
|
| 此页 在它所属大对象中的 页号(从0开始计) | |
|
| 实 际存储在大对象中的 数据。它从不会超过 |
sys_largeobject
的每一行保存一个大对象的一个页的数据,从对象内部的字节偏移量( pageno * LOBLKSIZE
)开始。现在的实现允许稀疏存储:页面可能丢失,并且可能比 LOBLKSIZE
字节短(即便不是最后一页)。一个大对象中丢失的区域会被读出为0。
2.1.32. sys_largeobject_metadata ¶
目录 sys_largeobject_metadata
保持着与大对象有关的元数据。真正的大对象数据被存储在 sys_largeobject 中。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 大对象的拥有者 |
|
| 访问权限, |
2.1.33. sys_namespace ¶
目录 sys_namespace
存储名字空间。名字空间是SQL模式之下的结构:每个名字空间拥有一个独立的表、类型等的集合,且其中没有名字冲突。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 名字空间的名字 | |
|
|
| 名 字空间的拥有者 |
|
| 访问权限 |
2.1.34. sys_opclass ¶
目录 sys_opclass
定义索引访问方法的操作符类。每一个操作符类定义了一种特定数据类型和一种特定索引访问方法的索引列的语义。一个操作符类实际上指定了一个特定的操作符族可以用于一个特定可索引列数据类型。该族中可用于索引列的操作符能够接受该列的数据类型作为它们的左输入。
操作符类详见 索引的接口扩展 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 操作符类所 属的索引访问方法 |
|
| 操作符类的名称 | |
|
|
| 操作符 类所属的名字空间 |
|
|
| 操作符类的拥有者 |
|
|
| 包含此操 作符类的操作符族 |
|
|
| 操作符 类索引的数据类型 |
|
| 如果此操作符类为 | |
|
|
| 存储在索引中的 数据的类型,如果 值为0表示与 |
一个操作符类的 opcmethod
必须匹配包含它的操作符族的 opfmethod
。而且,对于任何给定的 opcmethod
和 opcintype
组合,只有不超过一个 sys_opclass
行的 opcdefault
值为真。
2.1.35. sys_operator ¶
目录 sys_operator
存储关于操作符的信息。详见 CREATE OPERATOR 和 用户定义的操作符 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 操作符的名称 | |
|
|
| 操作符所属 的名字空间的OID |
|
|
| 操作符的拥有者 |
|
|
| |
|
| 该操作符是 否支持归并连接 | |
|
| 该操作符是 否支持哈希连接 | |
|
|
| 左操作数类型 |
|
|
| 右操作数类型 |
|
|
| 结果类型 |
|
|
| 该操作符的交换 子(如果存在) |
|
|
| 该操作符的否 定(如果存在) |
|
|
| 实现 该操作符的函数 |
|
|
| 该操作符的限制 选择度估算函数 |
|
|
| 该操作符的连接 选择度估算函数 |
未用的列包含零值。例如,一个前缀操作符的 oprleft
为0。
2.1.36. sys_opfamily ¶
目录 sys_opfamily
定义了操作符族。每一个操作符族是操作符和相关支持例程的集合,支持例程用于实现一个特定索引访问方法的语义。此外,按照访问方法指定的某种方式,一个族内的操作符都是“兼容的”。操作符族概念允许在索引中使用跨数据类型操作符,并可以使用访问方法语义的知识推导出。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 操作符族适用的索引访问方法 |
|
| 操作符族的名字 | |
|
|
| 操作符族所属的名字空间 |
|
|
| 操作符族的拥有者 |
定义操作符族的主要信息不在它的 sys_opfamily
行,而是在相关的 sys_amop 、 sys_amproc 和 sys_opclass 行中。
2.1.37. sys_partitioned_table ¶
目录 sys_partitioned_table
存放有关表如何被分区的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 这个分区 表的 |
|
| 分区 策略; | |
|
| 分区键中的列数 | |
|
|
| 这个分区表的默 认分区的 |
|
|
| 这是一个长度为 |
|
|
| 对于分 区键中的每一个 列,这个域包含 要使用的操作符 类的OID。 |
|
|
| 对 于分区键中的每 一个列,这个域 包含要用于分区 的排序规则的O ID,如果该列不 是一种可排序数 据类型则为零。 |
|
| 非简单列 引用的分区键列 的表达式树(以 |
2.1.38. sys_pltemplate ¶
目录 sys_pltemplate
存储了过程语言的“模板”信息。一个语言的模板允许我们在一个特定数据库中以一个简单的 CREATE LANGUAGE
命令创建语言,而不需要指定实现细节。
和大部分系统目录不同, sys_pltemplate
是在集簇的所有数据库之间共享的:在一个集簇中只有一份 sys_pltemplate
拷贝,而不是每个数据库一份。这使得在每个需要的数据库中都可以访问该信息。
名称 | 类型 | 描述 |
---|---|---|
|
| 该模板适用的语言名字 |
|
| 如果语言被认为是可信的则为真 |
|
| 如果语言可以被一个数据库拥有者创建则为真 |
|
| 调用处理函数的名字 |
|
| 匿名阻塞处理函数的名字,如果没有则为空 |
|
| 验证函数的名字,如果没有则为空 |
|
| 实现语言的共享库的路径 |
|
| 模板的访问权限(并未真正使用) |
目前任何命令都不能操纵过程语言模板。要改变内建信息,超级用户必须使用普通的 INSERT
、 DELETE
或 UPDATE
命令修改该表。
注意
在KingbaseES的某个未来版本的发布中, sys_pltemplate
很有可能会被移除,而这些关于过程语言的知识可能会保持在它们相应的扩展安装脚本中。
2.1.39. sys_policy ¶
目录 sys_policy
存储着表的行级安全性策略。 一个策略包括它适用于的命令种类(可能适用于所有命令)、它适用于的角色、 被作为安全屏障条件增加到包括该表的查询的表达式以及被作为 WITH CHECK
选项增加到尝试向表增加新纪录的查询的表达式。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 策略的名称 | |
|
|
| 策略适用的表 |
|
| 策略适 用的命令类型: | |
|
| 策略是宽容性的 还是限制性的? | |
|
|
| 策略适用的角色 |
|
| 被作为 安全屏障条件增 加到使用该表的 查询的表达式树 | |
|
| 被作为WITH CHECK 条件增加到尝 试向表增加行的 查询的表达式树 |
注意
存储在 sys_policy
中的策略只有在它们所适用的表的 sys_class
. relrowsecurity
被设置时才其作用。
2.1.40. sys_proc ¶
目录 sys_proc
存放有关函数、过程、聚集函数以及窗口函数(共称为例程)的信息。更多信息请参考 CREATE FUNCTION 、 CREATE PROCEDURE 和 函数声明与定义 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 函数的名字 | |
|
|
| 函数所属的 名字空间的OID |
|
|
| 函数的拥有者 |
|
|
| 实现语言或该 函数的调用接口 |
|
| 估计的执行 代价(以 cpu_operator_cost 为单位),如果 | |
|
| 估计的结果行数 量(如果 | |
|
|
| 可变数组参数的 元素的数据类型 ,如果函数没有 可变参数则为0 |
|
|
| Optional planner support function for this function |
|
|
| |
|
| 函数 是一个安全性定 义者(即,一个 “setuid”函数) | |
|
| 该函 数没有副作用。 除了通过返回值 ,没有关于参数 的信息被传播。 任何会抛出基于 其参数值的错误 信息的函数都不 是泄露验证的。 | |
|
| 当任意 调用函数为空时 ,函数是否会返 回空值。在那种 情况下函数实际 上根本不会被调 用。非“strict” 函数必须准备好 处理空值输入。 | |
|
| 函数是 否返回一个集合 (即,指定数据 类型的多个值) | |
|
|
| |
|
|
| |
|
| 输入参数的个数 | |
|
| 具有默 认值的参数个数 | |
|
|
| 返 回值的数据类型 |
|
|
| 一个函 数参数的数据类 型的数组。这只 包括输入参数( 含 |
|
|
| 一个函数参数 的数据类型的数 组。这包括所有 参数(含 |
|
| 一个函 数参数的模式的 数组。编码为: | |
|
| 一个函数参 数的名字的数组 。没有名字的参 数在数组中设置 为空字符串。如 果没有一个参数 有名字,这个域 为空。注意这里 的下标对应着 | |
|
| 默认值的表达式 树(按照 | |
|
| 要在其上应用转 换的数据类型的 OID。 | |
|
| 这个域告诉函 数处理者如何调 用该函数。它可 能是针对解释型 语言的真实源码 、一个符号链接 、一个文件名或 任何其他东西, 这取决于实现语 言/调用规范。 | |
|
| 关于如何 调用函数的附加 信息。其解释是 与语言相关的。 | |
|
| 函数对 于运行时配置变 量的本地设置值 | |
|
| 访问权限 |
对于编译好的函数,包括内建的和动态载入的, prosrc
包含了函数的C语言名字(链接符号)。对于所有其他已知的语言类型, prosrc
包含函数的源码文本。除了对于动态载入的C函数之外, probin
是不被使用的。对于动态载入的C函数,它给定了包含该函数的共享库文件的名称。
2.1.41. sys_publication ¶
目录 sys_publication
包含数据库中创建的所有publication。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| publication的名称 | |
|
|
| publication的拥有者 |
|
| 如果为真,这个 publication自动 包括数据库中的所 有表,包括未来将 会创建的任何表。 | |
|
| 如果为 真,为publication 中的表复制 | |
|
| 如果为 真,为publication 中的表复制 | |
|
| 如果为 真,为publication 中的表复制 | |
|
| 如果为真 ,为publication 中的表复制 |
2.1.42. sys_publication_rel ¶
目录 sys_publication_rel
包含数据库中关系和publication之间的映射。这是一种多对多映射。这些信息对用户更加友好的视图请参考 sys_publication_tables 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 对publication的引用 |
|
|
| 对关系的引用 |
2.1.43. sys_range ¶
目录 sys_range
存储关于范围类型的信息。它是类型在 sys_type 中项的补充。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 范围类型的OID |
|
|
| 该范围 类型的元素类型 (子类型)的OID |
|
|
| 用于范围比较 的排序规则的OID ,如果没有则为0 |
|
|
| 用于范 围比较的子类型 的操作符类的OID |
|
|
| 将一个范 围值转换为规范 形式的函数的OID ,如果没有则为0 |
|
|
| 以 |
rngsubopc``(加上\ ``rngcollation
,如果元素类型是可排序的)决定了被该范围类型所使用的排序顺序。 rngcanonical
用于离散类型的元素类型。 rngsubdiff
是可选的,但是提供它可以提高范围类型上的GiST索引性能。
2.1.44. sys_replication_origin ¶
sys_replication_origin
目录包含所有已创建的复制源。
和大部分系统目录不同, sys_replication_origin
在一个集簇的所有数据库之间共享:每个集簇只有一份 sys_replication_origin
拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 一个集簇范围内唯一的复 制源标识符。应该绝不会脱离系统。 | |
|
| 外部的由用户定义的复制源名称。 |
2.1.45. sys_rewrite ¶
目录 sys_rewrite
存储对于表和视图的重写规则。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 规则名称 | |
|
|
| 使用该规则的表 |
|
| 使用该规则 的事件类型:1 = ` SELECT` ,2 = ` UPDATE` ,3 = ` INSERT` ,4 = | |
|
| 控制在 哪种 session_replication_role 模式 中触发该规则。 | |
|
| 为真表 示是一个 | |
|
| 规 则条件的表达式 树(按照 | |
|
| 规则动作的查询 树(按照 |
注意
如果一个表在这个目录中有任何规则, sys_class.relhasrules
必须为真。
2.1.46. sys_seclabel ¶
目录 sys_seclabel
存储数据库对象上的安全标签。安全标签可以通过 SECURITY LABEL 命令操纵。简单的查看安全标签方法请见 sys_seclabels 。
同时请见 sys_shseclabel ,它对集簇共享的数据库对象的安全标签执行相似的功能。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| any OID column | 该安全标 签依附的对象的OID |
|
|
| 该对象所出 现的系统目录的OID |
|
| 对于一个 在表列上的安全标签 ,这将是列号( | |
|
| 与该标签 相关的标签提供者。 | |
|
| 应用于 该对象的安全标签。 |
2.1.47. sys_sequence ¶
目录 sys_sequence
包含有关序列的信息。一些序列的信息(例如名称和方案)放在 sys_class
中。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 这 个序列的 |
|
|
| 序列的数据类型 |
|
| 序列的起始值 | |
|
| 序列的增量值 | |
|
| 序列的最大值 | |
|
| 序列的最小值 | |
|
| 序列的缓冲尺寸 | |
|
| 序列是否循环 |
2.1.48. sys_shdepend ¶
目录 sys_shdepend
记录数据库对象和共享对象之间的依赖关系,例如角色。这些信息使得KingbaseES可以确保对象在被删除时没有被其他对象引用。
另请参阅 sys_depend ,它对单个数据库中对象之间的依赖提供了相似的功能。
与大部分其他系统目录不同, sys_shdepend
在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_shdepend
的拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 依赖者 对象所在的数据库 OID,如果是一个 共享对象则值为0 |
|
|
| 依赖者对象所在 的系统目录的OID |
|
| 任意OID列 | 依赖者对象的OID |
|
| 对于一个表 列,这将是列号( | |
|
|
| 被引用 对象所在的系统目 录的OID(必须是 一个共享的目录) |
|
| 任意OID列 | 被引用对象的OID |
|
| 定义该依赖关 系的特定语义的代 码,见表后的说明 |
在所有情况下,一个 sys_shdepend
项表明被引用对象不能在没有删除其依赖对象的情况下被删除。但是,其中也有多种依赖类型,由 deptype
标识:
SHARED_DEPENDENCY_OWNER
( o
)
被引用对象(必须是一个角色)是依赖对象的拥有者。
SHARED_DEPENDENCY_ACL
( a
)
被引用对象(必须是一个角色)在依赖对象的ACL(访问控制列表,即权限列表)中被提到。 (不会为对象的拥有者创建一个 SHARED_DEPENDENCY_ACL
项,因为拥有者将会有一个 SHARED_DEPENDENCY_OWNER
项。)
SHARED_DEPENDENCY_POLICY
( r
)
作为一个依赖策略对象的目标被引用的对象(必须是一个角色)。
SHARED_DEPENDENCY_PIN
( p
)
没有依赖对象,这种类型的项是一个信号,用来指示系统本身依赖于被引用对象,并且因此该对象必须永远不能被删除。这种类型的项只能被 initdb
创建。这种项中关于依赖对象的列值都为0。
未来可能会需要其他的依赖类型。特别要注意的是在当前定义中只支持角色作为被引用对象。
2.1.49. sys_set ¶
`` sys_set`目录包含每一个SET类型的项,其中包括了值和标签。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 包含此SET 值的sys_type type项的OID |
|
| 此SET值在其SET类 型中定义的顺序 | |
|
| 此SET值在其SET类 型中排序位置 | |
|
| 此SET值的文本标签 |
2.1.50. sys_shdescription ¶
目录 sys_shdescription
存储共享数据库对象的可选描述(注释)。描述可以通过 COMMENT 命令操作,并且可以使用ksql的 \d
命令来查看。
另请参阅 sys_description ,它对单个数据库中对象之间的依赖提供了相似的功能。
与大部分其他系统目录不同, sys_shdescription
在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_shdescription
的拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 任意OID列 | 该描述所属的对象的OID |
|
|
| 该对象所在系统目录的OID |
|
| 作为该对象描述的任意文本 |
2.1.51. sys_shseclabel ¶
目录 sys_shseclabel
存储共享数据库对象上的安全标签。安全标签可以通过 SECURITY LABEL 命令操纵。更简单的查看安全标签的方式请见 sys_seclabels 。
另请参阅 sys_seclabel ,它对单个数据库中对象的安全标签提供了相似的功能。
与大部分其他系统目录不同, sys_shseclabel
在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_shseclabel
的拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 任意OID列 | 该安全标签所属对象的OID |
|
|
| 对象所属系统目录的OID |
|
| 与此标签关联的标签提供者 | |
|
| 应用到该对象的安全标签 |
2.1.52. sys_statistic ¶
目录 sys_statistic
存储有关数据库内容的统计数据。其中的项由 ANALYZE 创建,查询规划器会使用这些数据来进行查询规划。注意所有的统计数据天然就是近似的,即使它刚刚被更新。
通常对于数据表中一个已经被 ANALYZE 过的列,在本目录中会存在一个 stainherit
= false
的项。如果该列所在的表具有后代(即有其他表继承该表),对于该列还会创建第二个 stainherit
= true
的项。 stainherit
= true
的项表示列在整个继承树上的统计数据,即通过 SELECT column
FROM ``table`` *看到的数据的统计,而 stainherit
= false
的项表示对 SELECT column
FROM ONLY ``table`` 的结果的统计。
sys_statistic
也存储关于索引表达式值的统计数据,就好像它们是真正的数据列,但在这种情况中 starelid
指索引。对一个普通非表达式索引列不会创建项,因为它将是底层表列的项的冗余。当前,索引表达式的项都具有 stainherit
= false
。
因为不同类型的统计信息适用于不同类型的数据, sys_statistic``被设计成不太在意自己存储的是什么类型的统计。 只有极为常用的统计信息(比如NULL的含量)才在\ ``sys_statistic
里给予专用的字段。其它所有东西都存储在“槽位”中,而槽位是一组相关的列, 它们的内容用槽位中的一个列里的代码表示。 更详细的信息请参阅 src/include/catalog/sys_statistic.h
。
sys_statistic
不应该是公共可读的,因为即使是一个表内容的统计性信息也可能被认为是敏感的(例子:一个薪水列的最大和最小值可能是非常有趣的)。 sys_stats 是 sys_statistic
上的一个公共可读的视图,它只会显示出当前用户可读的表的信息。
sys_statistic
不应该是公众可读的,因为即使是关于表内容的统计信息 也可能被认为是敏感的。(示例:工资列的最小值和最大值可能非常有趣。) sys_stats 是在 sys_statistic
之上的一个公共可读的视图,它只公开当前用户可读的表信息。
相似地, sys_statistic_ext_data
不应该是公众可读的,因为内容可能被认为是敏感的。(示例:列中最常见的值组合可能非常有趣。) sys_stats_ext 是在``sys_statistic_ext_data``之上的一个公共可读的视图(连接 sys_statistic_ext
之后),它只公开关于当前用户可读的表和列的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 被描述列 所属的表或索引 |
|
|
| 被描述列的编号 |
|
| 如果为真,统 计包含了继承后 代的列而不仅仅 是指定关系的列 | |
|
| 列 的项为空的比例 | |
|
| 非 空项的平均存储 宽度,以字节计 | |
|
| 列中非空唯 一值的数目。一 个大于零的值是 唯一值的真正数 目。一个小于零 的值是表中行数 的乘数的负值; 例如,对于一个 80% 的值为非空且 每个非空值平均 出现两次的列, 可以表示为 | |
|
| 一个代码,它表 示存储在该 | |
|
|
| 一个用于 生成这些存储在 第 ``N`` 个“槽位”的统计 信息的操作符。 比如 ,一个柱面图槽 位会用 |
|
|
| 用于生 成这些存储在第 ``N`` 个 “槽位”的统计信 息的排序规则。 比 如,一个用于可 比较列的柱面图 槽位会用排序规 则定义该数据的 排序顺序。不可 比较数据为零。 |
|
| 第 ``N`` 个 “槽位”的类型的 数值类型统计, 如果 该槽位不涉及数 值类型则为NULL | |
|
| 第 ``N`` 个“槽位”的类型 的列值,如果该 槽位类型不存储 任何数据值则为 NULL。 每个数组的 元素值实际上都 是指定列的数据 类型或者是一个 相关类型(如数 组元素类型), 因此 ,除了把这些列 的类型定义成 |
2.1.53. sys_statistic_ext ¶
目录 sys_statistic_ext
保持有扩展的规划器统计信息的定义。 这个目录中的每一行对应于一个用 CREATE STATISTICS 创建的 统计信息对象 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包含这个对象 所描述的列的表 |
|
| 统计 信息对象的名称 | |
|
|
| 包含这个 统计信息对象的 名字空间的OID |
|
|
| 统计信 息对象的拥有者 |
|
|
| 一个 属性编号的数组 ,表示哪些表列 被这个统计信息 对象覆盖。例如 值 |
|
| 包含被启用统计 类型代码的数组 ,可用的值有: |
创建统计对象时填充 stxkind
字段,指示需要的统计类型。 统计信息(通过 ANALYZE
计算)存储在 sys_statistic_ext_data 目录中。
2.1.54. sys_statistic_ext_data ¶
目录 sys_statistic_ext_data
持有在 sys_statistic_ext
中定义的扩展计划统计数据。这个目录中的每一行都对应一个 统计对象 ,该对象是用 CREATE STATISTICS 创建的。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 包 含此数据定义的 扩展统计信息。 |
|
| N-distin ct计数,序列化 为 | |
|
| 函数依赖统计 信息,序列化为 | |
|
| MCV (most-common values) list statistics, serialized as |
2.1.55. sys_subscription ¶
目录 sys_subscription
包含所有现有的逻辑复制订阅。
和大部分系统目录不同, sys_subscription
在集簇的所有数据库之间共享:每个集簇只有一份 sys_subscription
拷贝,而不是每个数据库一份。
对列 subconninfo
的访问被从普通用户那里收回,因为该列可能含有明文口令。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 订阅所 在的数据库的OID |
|
| 订阅的名称 | |
|
|
| 订阅的拥有者 |
|
| 如果为真 ,订阅被启用并 且应该被复制。 | |
|
| 包含订阅 工作者的 | |
|
| 到上游数据 库的连接字符串 | |
|
| 上游数据库 中的复制槽的名 称。也被用于本 地复制源名称。 | |
|
| 被订阅的public ation名称的数组 。这些引用的是 发布者服务器上 的publication。 |
2.1.56. sys_subscription_rel ¶
目录 sys_subscription_rel
包含每个订阅中每个被复制关系的状态。这是一种多对多映射。
这个目录仅包含运行 CREATE SUBSCRIPTION
或 ALTER SUBSCRIPTION ... REFRESH PUBLICATION
以后对订阅已知的表。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 对订阅的引用 |
|
|
| 对关系的引用 |
|
| 状态代码: | |
|
|
|
2.1.57. sys_synonym ¶
目录 sys_synonym
存储了有关同义词的信息。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 同义词名称 | |
|
|
| 同 义词所在模式oid |
|
|
| 同 义词拥有者的oid |
|
| 同义词引用对 象所在模式的名称 | |
|
| 同义 词引用对象的名称 | |
|
| 同 义词引用对象所在 的远程服务器地址 |
2.1.58. sys_tablespace ¶
目录 sys_tablespace
存储关于可用表空间的信息。表可以被放置在特定表空间中以实现磁盘布局的管理。
与大部分其他系统目录不同, sys_tablespace
在整个集簇的所有数据库之间共享:在每一个集簇中只有一个 sys_tablespace
的拷贝,而不是每个数据库一份。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 表空间名 | |
|
|
| 表空间 的拥有者,通常 是创建它的用户 |
|
| 访问权限 | |
|
| 表空 间级别的选项, 形如“keyword=value” 的字符串 |
2.1.59. sys_transform ¶
目录 sys_transform
存储有关转换的信息,转换是 一种让数据类型适应过程语言的机制。详见 CREATE TRANSFORM 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 这个转换所针 对的数据类型的 OID |
|
|
| 这个转换 所针对的语言的 OID |
|
|
| 一个函数的 OID,该函 数用来将数据类 型转换为过程语 言的输入(例如 函 数参数)。如果 不支持这种操作 ,这里存储零。 |
|
|
| 一个函数的 OID,该函 数被用来转换过 程语言的输出( 例如返回值)为 该 数据类型。如果 不支持这种操作 ,这里存储零。 |
2.1.60. sys_trigger ¶
目录 sys_trigger
存储表和视图上的触发器。详见 CREATE TRIGGER 。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 触发器所在的表 |
|
| 触发器名(在 同一个表的触发 器中必须唯一) | |
|
|
| 要被触 发器调用的函数 |
|
| 触发器触 发条件的位掩码 | |
|
| 控制触发器在 session_replication_role 模式中的触发。 | |
|
| 为真表 示触发器是内部 生成的(通常是 为了强制由 | |
|
|
| 被一个引用完整 性约束引用的表 |
|
|
| 支持一个唯 一、主键、引用 完整性约束或者 排除约束的索引 |
|
|
| 可能存 在的与触发器相 关的 |
|
| 如果约束触发 器可推迟则为真 | |
|
| 如 果约束触发器初 始可推迟则为真 | |
|
| 传递 给触发器函数的 参数字符串个数 | |
|
|
| 如果触发器是 列限定的,这里 存放列号;否则 这是一个空数组 |
|
| 传 递给触发器的参 数字符串,每一 个都以NULL结尾 | |
|
| 触发器 | |
|
|
| |
|
|
|
当前,列限定触发器只被 UPDATE
事件支持,因此 tgattr
只用于这种事件类型。 tgtype
页可以包含用于其他事件类型的位,但其他事件类型是表范围的触发器且会忽略 tgattr
。
注意
当 tgconstraint
非零时, tgconstrrelid
、 tgconstrindid
、 tgdeferrable
和 tginitdeferred
与被引用的 sys_constraint
项有很大的冗余。但是,存在将一个不可延迟触发器关联到一个可延迟约束的可能性:外键约束可以有一些可延迟和一些不可延迟触发器。
注意
如果一个关系在本目录中拥有任何触发器,其 sys_class.relhastriggers
必须为真。
2.1.61. sys_ts_config ¶
sys_ts_config
目录包含表示文本搜索配置的选项。一个配置指定了一个特定的文本搜索分析器和一个用于分析器输出记号的字典列表。分析器由 sys_ts_config
项展现,而记号到字典的映射则由 sys_ts_config_map 中的辅助项定义。
KingbaseES的文本搜索特性在 文本搜索类型 中有更详尽的描述。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 文本搜索配置名 | |
|
|
| 包含该配置的名字空间的OID |
|
|
| 配置的拥有者 |
|
|
| 该配置的文本搜索分析器的OID |
2.1.62. sys_ts_config_map ¶
sys_ts_config_map
目录包含的项展示了对于每一个文本搜索配置的每一种输出记号类型,有哪些文本搜索字典可供查询以及以何种顺序。
KingbaseES的文本搜索特性在 文本搜索类型 中有更详尽的描述。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
|
| 拥有该映射项 的 |
|
| 一种 由配置的分析器 送出的记号类型 | |
|
| 查询该项的顺序 ( | |
|
|
| 查询的文 本搜索字典的OID |
2.1.63. sys_ts_dict ¶
sys_ts_dict
目录包含定义文本搜索字典的项。一个字典依赖于一个文本搜索模板,它指定了所有需要的函数实现,字典本身则为模板支持的用户可设置参数提供值。这种分工允许无权限的用户创建字典。参数由一个文本串 dictinitoption
定义,其格式和意义随着模板而变化。
KingbaseES的文本搜索特性在 文本搜索类型 中有更详尽的描述。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 文本搜索字典名 | |
|
|
| 包含该字 典的名字空间OID |
|
|
| 字典的拥有者 |
|
|
| 该字典的文 本搜索模板的OID |
|
| 模 板的初始化选项串 |
2.1.64. sys_ts_parser ¶
sys_ts_parser
目录包含定义文本搜索分析器的项。一个分析器负责将输入文本分割成词位并为每一个词位分配一个记号类型。由于一个分析器必须用C语言级别的函数实现,创建新分析器的工作只限于数据库的超级用户。
KingbaseES的文本搜索特性在 文本搜索类型 中有更详尽的描述。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 文本搜 索分析器的名字 | |
|
|
| 包含此分析器 的名字空间的OID |
|
|
| 分析 器启动函数的OID |
|
|
| 分析器的下 一记号函数的OID |
|
|
| 分析器 的关闭函数的OID |
|
|
| 分析器的 大标题函数的OID |
|
|
| 分析器的词 汇类型函数的OID |
2.1.65. sys_ts_template ¶
sys_ts_template
目录包含定义文本搜索模板的项。一个模板是一类文本搜索字典的实现骨架。由于一个模板必须用C语言级别的函数实现,新模板的创建只限于数据库超级用户。
KingbaseES的文本搜索特性在 文本搜索类型 中有更详尽的描述。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 文本 搜索模板的名字 | |
|
|
| 包含此模板 的名字空间的OID |
|
|
| 模板的 初始化函数的OID |
|
|
| 模板的 词汇化函数的OID |
2.1.66. sys_type ¶
目录 sys_type
存储有关数据类型的信息。基类和枚举类型(标度类型)使用 CREATE TYPE 创建,而域使用 CREATE DOMAIN 创建。数据库中的每一个表都会有一个自动创建的组合类型,用于表示表的行结构。也可以使用 CREATE TYPE AS
创建组合类型。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 数据类型的名字 | |
|
|
| 包含此类型的 名字空间的OID |
|
|
| 类型的拥有者 |
|
| 对于一个 固定尺寸的类型 , | |
|
|
| |
|
|
| |
|
|
| |
|
| 如果此类型在 它的 | |
|
| 如果此类型已被 定义则为真,如 果此类型只是一 个表示还未定义 类型的占位符则 为假。当 | |
|
| 在分析数组输入 时,分隔两个此 类型值的字符。 注意该分隔符是 与数组元素数据 类型相关联的, 而不是和数组的 数据类型关联。 | |
|
|
| 如 果这是一个复合 类型(见 |
|
|
| 如果 |
|
|
| 如果 |
|
|
| 输入转换函 数(文本格式) |
|
|
| 输出转换函 数(文本格式) |
|
|
| 输入转换函数( 二进制格式), 如果没有则为0 |
|
|
| 输出转换函数( 二进制格式), 如果没有则为0 |
|
|
| 类型修 改器输入函数, 如果类型没有提 供修改器则为0 |
|
|
| 类型修 改器输出函数, 如果类型没有提 供修改器则为0 |
|
|
| 自 定义 |
|
|
| |
|
| 如 果一个变长类型 ( | |
|
|
| |
|
|
| 如果这是 一个域(见 |
|
| 域使用 | |
|
| 对于 一个数组上的域 , | |
|
|
|
|
|
| 如果 | |
|
| 如果 某类型没有相关 默认值,那么 | |
|
| 访问权限 |
表3.1.66 列出了 typcategory
的系统定义值。任何未来对此列表的增加都将是大写ASCII字母。所有其他ASCII字符都保留给用户定义的类别。
2.1.67. sys_user_mapping ¶
目录 sys_user_mapping
存储从本地用户到远程的映射。 对这个目录的访问对普通用户有限制,可使用视图 sys_user_mappings 替代。
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
|
| 将要被 映射的本地角色的 OID,如果用户映 射是公共的则为0 |
|
|
| 包含此映射的 外部服务器的OID |
|
| 用户映射相关选 项,以“keyword= value”字符串形式 |
2.1.68. sys_query_mapping ¶
目录 sys_query_mapping
存储用户创建的Query Mapping规则。
关于Query Mapping规则的详细说明请参见 Query Mapping规则
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| 规则名称 | |
|
| 该规则是否被启用 | |
|
| 用于匹配的SQL字符串 | |
|
| 用于替换的SQL字符串 | |
|
| 匹配SQL对应的查询树 | |
|
| 替换SQL对应的查询树 | |
|
| 规则的级别: 0 = TEXT 1 = SEMANTICS |
2.1.69. kdb_job ¶
目录 kdb_job
存储用户创建的job信息,该表作为系统共享表,存储了所有dba用户创建的job信息,所有用户都可以读取该表,但只有dba用户就进行写操作。
关于job的创建、更新、删除见 使用自动作业功能
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 行标识符 | |
|
| kdb_jobclass OID | |
|
| kdb_schedule_job OID | |
|
| kdb_job_action OID | |
|
| job名称 | |
|
| job描述信息 | |
|
| 后端进程ID | |
|
| job开启标志 | |
|
| job创建时间 | |
|
| job修改时间 | |
|
| job下一次执行时间 | |
|
| job上一次执行时间 | |
|
| job失败最大重试次数 | |
|
| job所属的database |
2.1.70. sys_recyclebin ¶
目录 sys_recyclebin
在开启回收站功能,存储用户删除的表信息,用于删除表闪回使用。
关于闪回功能见插件 kdb_flashback
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 对象所在系统表的OID | |
|
| 对象OID | |
|
| schema OID | |
|
| 在回收站中对象名 | |
|
| 对象删除之前的名称 | |
|
| 类型 | |
|
| 删除时间 |
2.1.71. sys_package ¶
目录 sys_package
包的创建与函数的创建类似,都需要将相关的信息持久化,需要向系统表中插入一些必要的信息,这些信息包括:包对象的信息、包中子对象的信息和依赖关系
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 对象所在系统表的OID | |
|
| 包名 | |
|
| 模式 | |
|
| 属主 | |
|
| 以创建者/访问者的身份 执行存储过程 | |
|
| 包规范数据拼接的字符串 | |
|
| 包规范中变量的OID数组 | |
|
| 包规范中类型的OID数组 | |
|
| 解析后的包规范功能 | |
|
| 包规范原字符串 | |
|
| 包体数据拼接的字符串 | |
|
| 包体中变量的OID数组 | |
|
| 包体中类型的OID数组 | |
|
| 解析后的包函数 | |
|
| 包体原字符串 | |
|
| 初始化代码 | |
|
| 访问控制列表 |
2.1.72. sys_pkgitem ¶
目录 sys_pkgitem
主要用于引用包变量和类型编译时,对相关对象的合法性检查
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
|
| 对象所在系统表的OID | |
|
| 包中对象的名称 | |
|
| 包的OID | |
|
| 包中对象的类型 | |
|
| 包中对象的类型模式 | |
|
| 包中对象的类型排序规则 | |
|
| 包中对象的类别(变量、 RECORD、游标、类型) | |
|
| 如果是变量,那么指出该 对象是否为常量(其它 对象此值都是FALSE) | |
|
| 该对象是否为notnull对象 | |
|
| 若该对象为包内对象的子 对象,pvparent为其父 对象在当前表中的oid | |
|
| 关联数组类型的索引 类型oid | |
|
| 关联数组类型的索引 类型的模式 | |
|
| 关联数组类型的索引 类型的排序规则 | |
|
| 包中对象的参数个数, 0表示没有参数 | |
|
| 包中游标的信息, -1表示没有返回值 -2表示返回RECORD类型 -3表示这个游标没有定义语句 | |
|
| 包中对象的定义语句 | |
|
| 包中游标的参数名数组 | |
|
| 包中游标的参数 默认值的数组 |