本篇文章介绍如何向PG 12中添加自定义的系统表。
目标:
添加一张名为
pg_sqltext
的系统表;根据表中的
sql_handle
字段建立索引;添加系统表
pg_sqltext
对应的本地缓存;
实现过程:
1. 添加名为pg_sqltext
的系统表
1.1 为需要添加的系统表分配可用的OID
|
|
从列出的未使用OID中选择一个分配给pg_sqltext
,本文选择的是3434
。
1.2 在src/include/catalog
目录下添加相应的系统表头文件
|
|
1.3 在src/backend/catalog/MakeFile
文件中添加对应的系统表头文件
2. 根据表中的sql_handle
字段建立索引
2.1 在src/include/catalog/indexing.h
添加相应的索引数据
|
|
说明:这里在sql_handle
字段上建立了一个名为pg_sqltext_sql_handle_index
的唯一索引,内部使用BTee实现。
注意:索引同样需要分配OID,参考1.1的方式为该索引分配合适的OID。
3. 添加系统表pg_sqltext
对应的本地缓存
3.1 在头文件src/include/utils/syscache.h
中添加pg_sqltext
对应的缓存标识
在枚举类型SysCacheIdentifier
中添加pg_sqltext
对应的缓存标识:
注意:这里需要按照字母顺序进行添加
3.2 在src/backend/utils/cache/syscache.c
添加pg_sqltext
对应的缓存结构
在数组cacheinfo
中添加pg_sqltext
对应的缓存结构:
注意:这里需要与2.1中添加的索引名字对应,同时需要与SysCacheIdentifier
中对应的缓存标识顺序一致。
以上就是向PG内核中添加一个系统表的全部过程,可以编译安装后使用\d+ pg_sqltext
命令测试下是否添加成功。
本文有什么错误或不足之处,欢迎指出~
更多内容欢迎点击下方