Thread: Addendum: PG6.5.3: CASE w. diff THEN types -- prob with Linux(?)

Addendum: PG6.5.3: CASE w. diff THEN types -- prob with Linux(?)

From
"Emils Klotins"
Date:
FYI.

I posted a note couple of days ago about CASE WHEN clause 
causing backend termination. I was able to get my hands on 
FreeBSD machine and the statement does not break the 
backend:

[ PostgreSQL 6.5.3 on i386-unknown-freebsd3.3, compiled by 
gcc 2.7.2.3 ]
=> select case when 3=1 then 'rrr'::text else 5 end;
ERROR:  CASE/WHEN types 'int4' and 'text' not matched
=> 


The same statement on RedHat 5.2 Linux machine breaks the 
backend:

[ PostgreSQL 6.5.3 on i586-pc-linux-gnu, compiled by gcc 
2.7.2.3 ]
=> select case when 3=1 then 'rrr'::text when 3=2 else 5 end;
NOTICE:  Message from PostgreSQL backend:
The Postmaster has informed me that some other backend died abnormally and possibly corrupted shared memory.
I have rolled back the current transaction and am going to terminate your database system connection and exit.
Please reconnect to the database system and repeat your query.
pqFlush() -- backend closed the channel unexpectedly.
This probably means the backend terminated abnormally before or while processing the request.
=> \q



Emils


Re: [SQL] Addendum: PG6.5.3: CASE w. diff THEN types -- prob with Linux(?)

From
"Oliver Elphick"
Date:
"Emils Klotins" wrote: >The same statement on RedHat 5.2 Linux machine breaks the  >backend: > >[ PostgreSQL 6.5.3 on
i586-pc-linux-gnu,compiled by gcc  >2.7.2.3 ] >=> select case when 3=1 then 'rrr'::text when 3=2 else 5 end; >NOTICE:
Messagefrom PostgreSQL backend: >The Postmaster has informed me that some other backend died abnormally and p
>ossiblycorrupted shared memory.
 

This works OK on current Debian GNU/Linux, unstable distribution.  Perhaps
you need to use the Red Hat 6.1.

--      Vote against SPAM: http://www.politik-digital.de/spam/                ========================================
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver              PGP key from public servers; key
ID32B8FAA1                ========================================    "But grow in grace, and in the knowledge of our
Lord     and Saviour Jesus Christ. To him be glory both now and     for ever. Amen."           II Peter 3:18 
 




Re: [SQL] Addendum: PG6.5.3: CASE w. diff THEN types -- prob with Linux(?)

From
Tom Lane
Date:
"Emils Klotins" <emils@mail.usis.bkc.lv> writes:
> The same statement on RedHat 5.2 Linux machine breaks the 
> backend:

> [ PostgreSQL 6.5.3 on i586-pc-linux-gnu, compiled by gcc 
> 2.7.2.3 ]
> => select case when 3=1 then 'rrr'::text when 3=2 else 5 end;
> NOTICE:  Message from PostgreSQL backend:
> The Postmaster has informed me that some other backend died abnormally and possibly corrupted shared memory.

Now that I look more closely, the above statement isn't legal: it's
missing the second "then" clause.  You should have gotten a syntax
error, and indeed I do get one:

regression=>  select case when 3=1 then 'rrr'::text when 3=2 else 5 end;
ERROR:  parser: parse error at or near "else"

I wonder whether you built Postgres with a busted parser generator.
RedHat presumably supplies the GNU parser generator "bison", but
what version?  We usually recommend 1.25 or later...
        regards, tom lane