sách gpt4 ai đã đi

Mô tả PostgreSQL

In lại 作者:行者123 更新时间:2023-11-29 11:43:20 29 4
mua khóa gpt4 Nike

我在 PostgreSQL 中编写了一个函数,其代码如下:


for (i = 0; i < 4; i++) 
{
Datum dat_value = CStringGetDatum(inp->str[0][i]);
values[i] = datumCopy(dat_value,
stats->attrtype->typbyval,
stats->attrtype->typlen);
}

输入字符串是{ALGERIA,ARGENTINA,BRAZIL,CANADA}。该代码针对 ALGERIA、ARGENTINA 运行,但针对 BRAZIL 突然终止。当我调查时,我发现在 datumCopy 函数内部,memcpy 之后的语句没有被打印出来。我检查了 palloc 是否因 (s == NULL) 条件而失败,但这似乎不是原因。我认为 memcpy 失败了。有什么理由吗?谢谢!

Datum
datumCopy(Datum value, bool typByVal, int typLen)
{
Datum res;

if (typByVal)
res = value;
khác
{
Size realSize;
char *s;

if (DatumGetPointer(value) == NULL)
return PointerGetDatum(NULL);

realSize = datumGetSize(value, typByVal, typLen);

s = (char *) palloc(realSize);

printf ("Value : %s\n",DatumGetPointer(value));
memcpy(s, DatumGetPointer(value), realSize);
printf ("Not printing \n");
res = PointerGetDatum(s);
}
return res;
}

已编辑:好的,这真的很奇怪。当输入是 {BRAZIL,PAKISTAN,FRANCE} 之一时,代码突然终止。如果我有其他国家(我没有广泛尝试,但有些国家),代码运行正确。

编辑 2:找到原因并纠正问题。如果我们将 C 字符串传递给 datumCopy,我们必须为 typLen 参数传递 -2。我一直错误地传递它。

Cảm ơn!

1 Câu trả lời

我已经找到原因并解决了问题。

如果我们将 C 字符串传递给 datumCopy,我们必须为 typLen 参数传递 -2。我一直错误地传递它。

关于PostgreSQL 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24451753/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com