On Wed, October 19, 2011 15:01, Kerem Kat wrote:
> Adding CORRESPONDING to Set Operations
> Initial patch, filename: corresponding_clause_v2.patch

I had a quick look at the behaviour of this patch.

Btw, the examples in your email were typoed (one select is missing):

> SELECT 1 a, 2 b, 3 c UNION CORRESPONDING 4 b, 5 d, 6 c, 7 f;
should be:
  SELECT 1 a, 2 b, 3 c UNION CORRESPONDING select 4 b, 5 d, 6 c, 7 f;

and

> SELECT 1 a, 2 b, 3 c UNION CORRESPONDING BY(b) 4 b, 5 d, 6 c, 7 f;
should be:
  SELECT 1 a, 2 b, 3 c UNION CORRESPONDING BY(b) select 4 b, 5 d, 6 c, 7 f;
>



But there is also a small bug, I think: the order in the CORRESPONDING BY list 
should be followed,
according to the standard (foundation, p. 408):

"2) If <corresponding column list> is specified, then let SL be a <select list> 
of those <column
name>s explicitly appearing in the <corresponding column list> in the order 
that these
<column name>s appear in the <corresponding column list>. Every <column name> 
in the
<corresponding column list> shall be a <column name> of both T1 and T2."

That would make this wrong, I think:

SELECT 1 a, 2 b, 3 c UNION CORRESPONDING BY(c,b) select 5 d, 6 c, 7 f, 4 b ;

 b | c
---+---
 2 | 3
 4 | 6
(2 rows)

i.e., I think it should show columns in the order c, b (and not b, c); the 
order of the
CORRESPONDING BY phrase.

(but maybe I'm misreading the text of the standard; I find it often difficult 
to follow)


Thanks,


Erik Rijkers











-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to