Thread: 8.3/8.4 SQL incompatibility?

8.3/8.4 SQL incompatibility?

From
Britt Piehler
Date:
A generated query of ours broke on upgrade from PG 8.3.3 to 8.4.1 with 
the following error:
ERROR: failed to find conversion function from unknown to character varying
SQL state: XX000

I've narrowed it down to sub-selects in union clauses, as in the test 
script below, which runs successfully on 8.3.3, but fails on 8.4.1.  To 
reproduce:
CREATE TABLE temp.TestTable
(   TestColumn VARCHAR(20)
);

(SELECT A.TestColumn FROM (SELECT 'TestValue' AS TestColumn FROM 
temp.TestTable) A)
UNION
(SELECT B.TestColumn FROM (SELECT TestColumn FROM temp.TestTable) B);

Adding an explicit VARCHAR cast to the 'TestValue' string literal fixes 
the issue. 

This is nearly identical to 
http://archives.postgresql.org/pgsql-hackers/2009-06/msg01356.php, but 
Tom's reply there says that query hasn't worked since 7.1, while my 
query worked in 8.3.3.  Can anyone tell me if this is a known/expected 
incompatibility, or if this is a bug?

Thanks,
Britt


Re: 8.3/8.4 SQL incompatibility?

From
Tom Lane
Date:
Britt Piehler <brittp@labkey.com> writes:
> A generated query of ours broke on upgrade from PG 8.3.3 to 8.4.1 with 
> the following error:
> ERROR: failed to find conversion function from unknown to character varying

Hm.  I'm not going to promise that such cases should work always, but
given that this particular case worked before, it'd be nice if it kept
working.  I'll see what I can do about it.  It's too late for 8.4.2
though.
        regards, tom lane