gpt4 book ai didi

c - Postgresql:在C中定义自己的类型

转载 作者:行者123 更新时间:2023-11-29 12:05:59 28 4
gpt4 key购买 nike

我正在使用 Postgresql 9.2 安装,我正在尝试运行一个扩展(我已经编程)。

这段代码可以编译,我可以将它加载到 Postgresql 中;但每次我尝试执行 INSERT 时,与数据库的连接都会停止。我想这是因为我的 in 函数以某种方式损坏了。

首先是typedef:

typedef struct tphys {
char length[4];
char data[1];
} tphys;

如您所见,我有一个数据类型,它的大小是无限的。现在到 in-代码:

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);
}

这段代码我已经试了好久了,我真的不知道错误在哪里。你可能看到了吗?

最佳答案

不能对 cstring 类型使用 VARSIZE 宏。

char *instr = PG_GETAR_CSTRING(0);
tphys *dest = (phhys *) palloc(VARHDRSZ + strlen(instr));

...

关于c - Postgresql:在C中定义自己的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073809/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com