写在前面
在使用postgres的时候,有很多表是我们一开始安装好数据库就存在的,这些表称为系统表,他们记载一些数据库信息,比如我们做运维工作常用的pg_stat_activity;我们在数据库中查询这张表可以发现他存储了一些数据库连接信息。如下所示:
本次的任务就是新增一张系统表pg_test,这张表有三个字段,oid、id、ipaddr,字段所属的类型分别为Oid、int32、text,并且初始化一些值,实现能够在psql命令中使用select 命令查询得到。
1、创建系统表的声明
1.1、pg_extension系统表的理解
比如说我们查询pg_extension这张表,我们可以发现它具有这些信息
首先就是它具有一些字段属性,然后就是你会发现他还有index索引,有主键索引,有唯一性索引,然后我们在源码中搜索pg_extension找到这张系统表的声明,观察这张表的实现,对其进行模仿写出我们自己的pg_test系统表。
#ifndef PG_EXTENSION_H
#define PG_EXTENSION_H
#include "catalog/genbki.h"
#include "catalog/pg_extension_d.h"
CATALOG(pg_extension,3079,ExtensionRelationId)
{
Oid oid; /* oid */
NameData extname; /* extension name */
Oid extowner BKI_LOOKUP(pg_authid); /* extension owner */
Oid extnamespace BKI_LOOKUP(pg_namespace); /* namespace of
* contained objects */
bool extrelocatable; /* if true, allow ALTER EXTENSION SET SCHEMA */
#ifdef CATALOG_VARL