From: | Kerem Kat <keremkat(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Erik Rijkers <er(at)xs4all(dot)nl>, Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: (PATCH) Adding CORRESPONDING (NULL error) |
Date: | 2011-10-27 20:34:21 |
Message-ID: | CAJZSWkWfRDp5dt+TCAis7=d-==vCx9U3v0xV8R9dLR=9=SxbzA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Oct 27, 2011 at 23:20, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> I wrote:
>> Kerem Kat <keremkat(at)gmail(dot)com> writes:
>>> Union with NULL error persists without the corresponding patch. Here
>>> is the output from postgres without the patch:
>
>>> SELECT a FROM (SELECT 1 a) foo
>>> UNION
>>> SELECT a FROM (SELECT NULL a) foo2;
>
>>> ERROR: failed to find conversion function from unknown to integer
>
>> Yeah, this is a longstanding issue that is not simple to fix without
>> introducing other unpleasantnesses. It is not something you should
>> try to deal with at the same time as implementing CORRESPONDING.
>
> BTW, just to clarify: although that case fails, the case Erik was
> complaining of does work in unmodified Postgres:
>
> regression=# select 1 a , 2 b
> union all
> select null a, 4 b ;
> a | b
> ---+---
> 1 | 2
> | 4
> (2 rows)
>
> and I agree with him that it should still work with CORRESPONDING.
> Even though the behavior of unlabeled NULLs is less than perfect,
> we definitely don't want to break cases that work now. I suspect
> the failure means that you tried to postpone too much work to plan
> time. You do have to match up the columns honestly at parse time
> and do the necessary type coercions on them then.
>
> regards, tom lane
>
That is by design, because CORRESPONDING is implemented as subqueries:
select 1 a , 2 b
union all
corresponding
select null a, 4 b ;
is equivalent to
SELECT a, b FROM ( SELECT 1 a, 2 b ) foo
UNION ALL
SELECT a, b FROM ( SELECT null a, 4 b ) foo2;
which gives the same error in unpatched postgres.
Regards,
Kerem KAT
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2011-10-27 21:02:49 | Re: pg_dumpall Sets Roll default_tablespace Before Creating Tablespaces |
Previous Message | Tom Lane | 2011-10-27 20:20:55 | Re: (PATCH) Adding CORRESPONDING (NULL error) |