Re: [HACKERS] inherited GROUP BY is busted ... I need some help here

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] inherited GROUP BY is busted ... I need some help here
Date: 1999-07-08 00:00:28
Message-ID: 27555.931392028@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us> writes:
> Tom, I can dig into this with you, if it is not already fixed.

It's at least partially fixed: the given test case does not coredump.
I think there are still problems with more complex combinations of
inheritance, UNION, and GROUP BY, however.

I have some more changes in that area that I do not want to risk
committing into 6.5.* ... after we split the tree I will commit them
and then we can see how well things work...

regards, tom lane

>> I've been chasing Chris Bitmead's coredump report from earlier today.
>> I find that it can be reproduced very easily. For example:
>> regression=> select f1 from int4_tbl group by f1;
>> < no problem >
>> regression=> select f1 from int4_tbl* group by f1;
>> < core dump >
>>
>> (You may get unstable behavior rather than a reliable core dump
>> if you are not configured --enable-cassert.)
>>
>> The problem seems to be in optimizer/plan/planner.c, which is
>> responsible for creating the Sort and Group plan nodes needed to
>> implement GROUP BY. It also has to mark the lower plan's targetlist
>> items with resdom->reskey numbers so that the executor will know which
>> items to use for sort keys (cf. FormSortKeys in executor/nodeSort.c).
>> The trouble is that that latter marking is done in planner.c's
>> make_subplanTargetList(), which *is never invoked* for a query that
>> involves inheritance. union_planner() only calls it if the given plan
>> involves neither UNION nor inheritance. In the UNION case, recursion
>> into union_planner does the right thing, but not so in the inheritance
>> case.
>>
>> I rewrote some of this code a couple months ago, but I find that 6.4.2
>> has similar problems, so at least I can say I didn't break it ;-).
>>
>> It seems clear that at least some of the processing that union_planner
>> does in the simple case (the "else" part of its first big if-then-else)
>> also needs to be done in the inheritance case (and perhaps also in
>> the UNION case?). But I'm not sure exactly what. There's a lot going
>> on in this chunk of code, and I don't understand very much of it.
>> I could really use some advice...
>>
>> regards, tom lane

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 1999-07-08 00:03:26 Re: [HACKERS] current CVS snapshot of pgsql crash ...
Previous Message Bruce Momjian 1999-07-07 23:57:35 Re: [HACKERS] Vacuum ignores large objects