Re: [GENERAL] CASE in where statement. BUG ??

From: Marek Lewczuk <newsy(at)lewczuk(dot)com>
To: Alexander Litvinov <lan(at)ac-sw(dot)com>
Cc: Lista dyskusyjna pgsql-general <pgsql-general(at)postgresql(dot)org>, Lista dyskusyjna pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: [GENERAL] CASE in where statement. BUG ??
Date: 2003-12-19 09:02:39
Message-ID: 3FE2BEAF.6010505@lewczuk.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-general

Alexander Litvinov wrote:
> This is normaol behavior.
>
>
>>I belive that I have found a bug - or maybe it was done on purpose. Have
>>a look at this query:
>>
>>
>>SELECT integer_field FROM bugtable WHERE (CASE WHEN '' <> '' THEN
>>integer_field = '' ELSE integer_field = 0 END);
>>Result: ERROR: invalid input syntax for integer: ""
>
>
> Here CASE have int type and you are trying to cast '' to int. Error.
Well, I see that you have not run this query: In this case the query is
trying to make integer_field = '' --> but it shouldn't, becouse "CASE
WHEN '' <> ''" is false, so "ELSE integer_field = 0" should be used.

>
>
>>
>>SELECT text_field FROM bugtable WHERE (CASE WHEN '' <> '' THEN
>>text_field = '' ELSE text_field = '1' END);
>>Result: 1 rows fetched (0,02 sec)
>
>
> Here CASE have text type. Everything is fine.
Yes, becouse "CASE WHEN '' <> ''" is send false and is using "text_field
= 1".

Please execute this insert:
INSERT INTO bugtable (integer_field, text_field) VALUES (0, '1');

Then, executing both selects should return "1 rows fetched (0,02 sec)"...

Check it out.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Richard Huxton 2003-12-19 09:42:34 Re: [GENERAL] CASE in where statement. BUG ??
Previous Message Alexander Litvinov 2003-12-19 08:55:32 Re: [GENERAL] CASE in where statement. BUG ??

Browse pgsql-general by date

  From Date Subject
Next Message Richard Huxton 2003-12-19 09:38:33 Re: Duplication to External Server
Previous Message Alexander Litvinov 2003-12-19 08:55:32 Re: [GENERAL] CASE in where statement. BUG ??