如何向pg内核中添加函数

本文介绍了如何向PostgreSQL内核添加自定义函数,包括在现有.c文件中添加和创建新.c文件两种方法。详细步骤涉及函数实现、修改pg_proc.h、更新Makefile、注册到名字空间以及数据库的重新配置和安装。
摘要由CSDN通过智能技术生成

向pg内核中添加函数主要分为两种

1.在已有的.c文件中加入自己的函数

2.自己创建一个.c文件

在第一种情况下举一个简单的例子:

首先,在某个已有的.c文件下添加自己函数体,如在src\backend\utils\adt\pseudotypes.c下,添加:

Datum

my_func(PG_FUNCTION_ARGS)
{
char *str = pstrdup("Hello ,Postgres World!");
PG_RETURN_TEXT_P(cstring_to_text(str));
}

   函数体已经添加,接下来是最关键的一步。打开src\include\catalog\pg_proc.h

在里面添加两行代码(任意位置均可,具体参数信息会在文章底部说明)

DATA(insert OID = 9999 (helloworld  PGNSP PGUID 12 1 0 0 0 f f f f t f i 0 0 25 "" _null_ _null_ _null_ _null_ _null_ my_func _null_ _null_ _null_));
DESCR("helloworld");
 

要注意的有

(1)格式要正确

(2)需要使用一个未被使用过的oid(这个可以使用src\include\catalog目录下的unused_oids进行查看,如果无法使用要先使用命令 sudo chmod +x *  对当前文件添加运行权限。)

添加完上面的两行代码后需要重新configure、make、make install安装数据库,再使用命令initdb初始化后启动数据库。

启动数据库后就可以调用该函数了,如下

20161127221357616

以上就是一个最简单的helloworld的函数的实现,下面我们开始自己创建一个.c文件

 

 

第二种情况:

第一步:

我们先创建一个.c文件,我们在src/backend/utils/adt目录下新建一个page_mgr.c文件,并加入如下代码:

/*-------------------------------------------------------------------------
 * page_mgr.c
 *      Functions for direct access to page
 *----------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值