Re: Adding CORRESPONDING to Set Operations - Mailing list pgsql-hackers

From Kerem Kat
Subject Re: Adding CORRESPONDING to Set Operations
Date
Msg-id CAJZSWkWK+u13UMdDWAkyKJUf3n8JNDOUYCHcADt71NXXero+cQ@mail.gmail.com
Whole thread Raw
In response to Adding CORRESPONDING to Set Operations  (Kerem Kat <keremkat@gmail.com>)
Responses Re: Adding CORRESPONDING to Set Operations
List pgsql-hackers
On Sat, Sep 24, 2011 at 19:51, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Kerem Kat <keremkat@gmail.com> writes:
>> In the parser while analyzing SetOperationStmt, larg and rarg needs to be
>> transformed as subqueries. SetOperationStmt can have two fields representing
>> larg and rarg with projected columns according to corresponding:
>> larg_corresponding,
>> rarg_corresponding.
>
> Why?  CORRESPONDING at a given set-operation level doesn't affect either
> sub-query, so I don't see why you'd need a different representation for
> the sub-queries.
>

In the planner to construct a subquery out of SetOperationStmt or
RangeTblRef, a new RangeTblRef is needed.
To create a RangeTableRef, parser state is needed and planner assumes
root->parse->rtable be not modified
after generating simple_rte_array.

SELECT a,b,c FROM t is larg
SELECT a,b FROM (SELECT a,b,c FROM t) is larg_corresponding
SELECT d,a,b FROM t is rarg
SELECT a,b FROM (SELECT d,a,b FROM t); is rarg_corresponding

In the planner choose _corresponding ones if the query has corresponding.

SELECT a,b FROM (SELECT a,b,c FROM t)
UNION
SELECT a,b FROM (SELECT d,a,b FROM t);



>>> Obviously, that logic doesn't work at all for CORRESPONDING, so you'll
>>> need to have a separate code path to deduce the output column list in
>>> that case.
>
>> If the output column list to be determined at that stage it needs to
>> be filtered and ordered.
>> In that case aren't we breaking the non-modification of user query argument?
>
> No.  All that you're doing is correctly computing the lists of the
> set-operation's output column types (and probably names too).  These are
> internal details that needn't be examined when printing the query, so
> they won't affect ruleutils.c.
>
>> note: I am new to this list, am I asking too much detail?
>
> Well, I am beginning to wonder if you should choose a smaller project
> for your first venture into patching Postgres.
>


regards,

Kerem KAT


pgsql-hackers by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: Large C files
Next
From: Andrew Dunstan
Date:
Subject: Re: Large C files