gpt4 book ai didi

postgresql - 使用 palloc 分配

转载 作者:行者123 更新时间:2023-11-29 12:58:36 25 4
gpt4 key购买 nike

这是 postgres 扩展的一部分,我试图理解为什么下面的代码行会给我这个错误:

ERROR:  invalid memory alloc request size 1073741824

This code 是用于 postgres 的 odbc fdw;当我使用扩展创建 sql server 外表时出现该错误;根据 this,当一个 sql server 列被声明为 nvarchar(max) 时,问题就开始了。 nvarchar(max) 的最大大小是 1073741823。代码基本上是这样做的:

char * buf;

//varsize contains the max size of nvarchar(max)

buf = (char *)palloc(sizeof(char) * (varsize + 1));

palloc 究竟在做什么,所以您不能在指针中分配超过 1073741823 的空间?它不像大小超过整数范围

最佳答案

详情请见this comment ,但是 TL;DR 是 TOAST 不能存储大于 1GB-1B 的东西,所以尝试 palloc 它是毫无意义的。有几个地方使用了 MemoryContextAllocHuge(),但听起来这对您没有帮助。

关于postgresql - 使用 palloc 分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36318144/

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