From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Chris <chrisb(at)nimrod(dot)itg(dot)telstra(dot)com(dot)au> |
Cc: | "pgsql-hackers(at)postgreSQL(dot)org" <pgsql-hackers(at)postgreSQL(dot)org> |
Subject: | Re: OO inheritance implementation |
Date: | 2000-09-04 16:29:16 |
Message-ID: | 14265.968084956@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Chris <chrisb(at)nimrod(dot)itg(dot)telstra(dot)com(dot)au> writes:
> plan_inherit_queries will then notice the flag and then expand the
> target list as per each sub-class.
Keep in mind that the existing implementation of inheritance expansion
is not only pretty slow (is it *really* desirable to re-plan the whole
query for each child class?) but also broken for OUTER JOIN. In an
outer join, concatenating the final query results is not isomorphic to
concatenating the child class contents and then doing the query, which
is how I'd expect
SELECT * FROM classA OUTER JOIN classB*
to behave.
In this situation I think we'll need to push down the Append node to
be executed just on classB*, before the join occurs.
BTW, the notion of ** isn't even well-defined in this example: what set
of classB child attributes would you propose to attach to the unmatched
rows from classA?
The planner's inheritance code and UNION code are both unholy messes,
and I have hopes of scrapping and rewriting essentially all of
prepunion.c when we redo querytree structures for 7.2. So I'd advise
not hanging a new-feature implementation on the existing code structure
there.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Lockhart | 2000-09-04 17:47:13 | Re: Viability of VARLENA_FIXED_SIZE() |
Previous Message | Jan Wieck | 2000-09-04 14:34:03 | Re: RULE vs. SEQUENCE |