ERROR: Memory exhausted in AllocSetAlloc(909324558)
От | darcy@druid.net (D'Arcy J.M. Cain) |
---|---|
Тема | ERROR: Memory exhausted in AllocSetAlloc(909324558) |
Дата | |
Msg-id | 20010608130705.EF0921A8E@druid.net обсуждение исходный текст |
Ответы |
Re: ERROR: Memory exhausted in AllocSetAlloc(909324558)
|
Список | pgsql-hackers |
I saw someone else also saw this error. I am seeing it in 7.1.2 and I think I may have tracked it down. It's after a different operation but perhaps it is related. I have written a trigger. It dies with that error when I make the following call. SPI_modifytuple (rel,rettuple,1,&targ_att,&newval,NULL) I created targ_att as follows. targ_att = SPI_fnumber (tupdesc, args[0] This returns 23 in my case which is the correct field that I want to modify. The existing value for that field is NULL. I looked at the length of that fields with rel->rd_att->attrs[23]->attlen and it is -1. I assume that that is OK for a NULL value. I eventually followed this call to heaptuple.c. In heap_formtuple() there is a call to ComputeDataSize() with the existing tuple, the value I am changing to and the nulls. In that function the length (-1) is added to the total length. This causes the problem I am seeing. Am I misunderstanding the call? I thought that the nulls parameter was to map out which values you were changing to were NULL. It appears to be the value of the existing value. Why would I care about that value? Is it up to me to find all the NULLS in an existing tuple before calling SPI functions? I called this function that way in an earlier version with no problem. -- D'Arcy J.M. Cain <darcy@{druid|vex}.net> | Democracy is three wolves http://www.druid.net/darcy/ | and a sheep voting on +1 416 425 1212 (DoD#0082) (eNTP) | what's for dinner.
В списке pgsql-hackers по дате отправления: