Re: Improper usage of MemoryContext in nodeSubplan.c for buildSubPlanHash() function. This maybe causes allocate memory failed. - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Improper usage of MemoryContext in nodeSubplan.c for buildSubPlanHash() function. This maybe causes allocate memory failed.
Date
Msg-id 22050.1280287098@sss.pgh.pa.us
Whole thread Raw
In response to Improper usage of MemoryContext in nodeSubplan.c for buildSubPlanHash() function. This maybe causes allocate memory failed.  ("Tao Ma" <feng_eden@163.com>)
Responses Re: Improper usage of MemoryContext in nodeSubplan.c for buildSubPlanHash() function. This maybe causes allocate memory failed.
List pgsql-hackers
"Tao Ma" <feng_eden@163.com> writes:
> This is a potential memory error in nodeSubplan.c or execGrouping.c
> Using select '1'::TEXT IN ((SELECT '1'::NAME) UNION ALL SELECT '1'::NAME);
> to reproduce this bug.
> ...
> To fix this problem, we can use another memory context to passin 
> BuildTupleHashTable() as the hashtable's tempcxt, or use other memory 
> context as hash table's tempcxt or other ways.

Yeah, I think you're right --- we can't get away with reusing the
innerecontext's per-tuple context for the hashtable temp contexts.
The best solution is probably to make an additional context that
does nothing but act as the hashtable temp context.

This bug's been there a long time :-(.  Surprising that no one found it
before.  It would be mostly masked in a non-assert build, but not
entirely, I think.
        regards, tom lane


pgsql-hackers by date:

Previous
From: "David E. Wheeler"
Date:
Subject: Re: Toward a column reorder solution
Next
From: Robert Haas
Date:
Subject: Re: Performance Enhancement/Fix for Array Utility Functions