Emmanuel Cecchet <manu@asterdata.com> writes:
> Tom Lane wrote:
>> This looks like the patch is trying to create a data structure in a
>> memory context that's not sufficiently long-lived for the use of the
>> structure. If you do this in a non-cassert build, it will seem to
>> work, some of the time, if the memory in question happens to not
>> get reallocated to something else.
>>
> I was using the CacheMemoryContext. Could someone tell me why this is
> wrong and what should have been the appropriate context to use?
Well, (a) I doubt you really were creating the list in
CacheMemoryContext, else it'd have not gotten clobbered; (b) creating
statement-local data structures in CacheMemoryContext is entirely
unacceptable anyway, because then they represent a permanent memory
leak.
The right context for statement-lifetime data structures is generally
the CurrentMemoryContext the statement code is called with.
regards, tom lane