Thread: Addendum: PG6.5.3: CASE w. diff THEN types -- prob with Linux(?)
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
"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