postgresql内核开发之HelloWorld入门

  记得多年前我有一定编程经验后,开始接触postgresql内核开发时,实现了一些功能,但是却不知道怎么运行起来测试看看自己所写代码的效果,当时很捉急。。。本文将以最简单快速的方法,用几行代码在数据内核中加上一个可以看的见摸的着的小功能, 推开这扇通过内核的门。

  学习编程第一课,往往是写一个helloworld程序, 对postgresql内核编程来说,我们也可以来一把helloworld。

  打开pgsql工程,打开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 s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ my_func _null_ _null_ _null_));
DESCR("helloworld");

增加位置为随意,比如说可放在 下面代码的后面,注意格式和上面保持一致。

DATA(insert OID = 3444


  再打开 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));
}

  

  OK,helloworld功能全部代码完成,下面就来看效果吧。

  关闭visual stdio中的pgsql工程(可直接关vs),在vs2013 x64命令提示符中清理、编译、安装、重新初始化数据库,并启动数据库,再用psql连接数据库,这个步骤有点多,但没办法,内核已经变了,必须用最新编译的才行。具体来说在msvc路径下执行如下语句: 

clean.bat 

perl build.pl DEBUG

perl install e:\pgdb\

cd /d e:\pgdb\bin

initdb.exe -D ../data1

"pg_ctl" -D "../data1" -l logfile start

再另开一个cmd窗口,进入bin目录运行psql连接数据库

cd /d e:\pgdb\bin

psql -d postgres

注意,第一步的clean.bat一定要运行,防止之前编译的东西有影响,先清理。若对编译过程有疑问可再看下第一篇源码编译安装详细介绍

通过psql连接上数据库后,执行如下语句: select  helloworld(); 结果如下图所示,我们的helloworld已经成功嵌入内核中。



  是不是很简单?当然可能有人心中有十万个为什么想问,别急,这是HelloWorld, 在后续的博文将持续介绍。




评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值