C语言创建Postgresql函数

 

C语言函数代码:

#include "postgres.h"
#include "fmgr.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
PG_FUNCTION_INFO_V1(add_one);
Datum add_one(PG_FUNCTION_ARGS) {
    int32 arg = PG_GETARG_INT32(0);
    PG_RETURN_INT32(arg + 1);
}

 

// 编译:
cc -I`pg_config --includedir-server` -c foo.c  

// 生成 so 动态链接库
//cc -fpic   -I`pg_config --includedir-server` -c foo.c  

   cc -shared -o foo.so foo.o

// 拷贝链接库到pglib下
cp cfunc.so `pg_config --libdir`/.

  

-- 加载类库
postgres=# load  'foo.so';
LOAD


-- 创建函数
postgres=# CREATE FUNCTION add_one(integer) RETURNS integer AS '/usr/pgsql-12/lib/foo', 'add_one' LANGUAGE C STRICT; 

CREATE FUNCTION

  

 

 

 

 

posted @ 2021-01-31 00:32  bf378  阅读(468)  评论(0编辑  收藏  举报