【发布时间】:2013-12-05 09:47:57
【问题描述】:
谁能分享我如何为 PostgreSQL 创建 C 函数的示例,该函数将两个整数的数组作为输入并返回数组作为输出?
对于简单的整数,我有:
#include "postgres.h"
#include <fmgr.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
int
add_one(int arg) {
arg++;
return arg;
}
在 PostgreSQL 中编译后:
load '/usr/lib/postgresql/9.1/lib/add_one';
create or replace function add_one(integer)
returns integer as
'/usr/lib/postgresql/9.1/lib/add_one', 'add_one'
language c;
select add_one(1);
我需要类似的东西:
#include "postgres.h"
#include <fmgr.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
int
add_one(int[] arg) {
arg[1]++;
arg[2] = arg[2] + 2
return arg[];
}
在 PostgreSQL 中:
load '/usr/lib/postgresql/9.1/lib/add_one';
create or replace function add_one(integer[])
returns integer[] as
'/usr/lib/postgresql/9.1/lib/add_one', 'add_one'
language c;
select add_one(ARRAY[1::int,1::int]);
I have tried 修改 numeric.c 中的某些函数,但到目前为止没有任何成功。
【问题讨论】:
标签: c arrays postgresql input