我正在使用 Postgresql 9.2 安装,并且正在尝试让扩展程序(我已经编程)运行。
这段代码可以编译,我可以将它加载到 Postgresql 中;但每次我尝试做一个INSERT
,与数据库的连接都会停止。我想原因是我的in
-function 以某种方式被破坏了。
首先是typedef:
typedef struct tphys {
char length[4];
char data[1];
} tphys;
如您所见,我有一个数据类型,它的大小是无限的。现在到in
-code:
PG_FUNCTION_INFO_V1(tphys_data_in);
Datum
tphys_data_in(PG_FUNCTION_ARGS)
{
char *in = PG_GETARG_CSTRING(0);
tphys *dest = (tphys *) palloc(VARHDRSZ + VARSIZE(in));
SET VARSIZE(dest, VARHDRSZ + VARSIZE(in));
memcpy(VARDATA(dest), in, VARSIZE(in));
PG_RETURN_POINTER(dest);
}
我一直在尝试这段代码很长一段时间,我真的不知道错误在哪里。你可能看到了吗?