palloc

2016-03-30 5 views
1

Bu postgres uzantısı bir parçasıdır ve ben kod satırı aşağıda bana bu hata veriyor neden anlamaya çalışıyorum ile ayrılması:palloc

ERROR: invalid memory alloc request size 1073741824 

This kod postgres'in bir odbc FDW olduğu; Bir sql server yabancı tablo oluşturmak için uzantıyı kullandığımda bu hatayı alıyorum; palloc tam olarak nedir

char * buf; 

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

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

: Bir SQL Server sütun nvarchar (max) olarak ilan edildiğinde sorun this bir nvarchar (max) maksimum boyutu göre, başlar kod temelde bunu yapmaya çalışırsa 1073741823. olduğunu Bunu yaparken bir göstericide 1073741823'ten daha fazlasını ayıramazsınız? boyut, tamsayı aralığı

cevap

2

'u aşmaz. Ayrıntıları this comment'da okuyabilirsiniz, ancak TL; DR, TOAST'un 1 GB-1B'den daha büyük bir şeyi depolama kapasitesine sahip olmadığı için, bu yüzden oldukça anlamsız. MemoryContextAllocHuge() işlevini kullanan birkaç yer var, ancak bu size yardımcı olmayacak gibi görünüyor.