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