"Tao Ma" <feng_eden(at)163(dot)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