plpgsql's case bug? - Mailing list pgsql-hackers

From Jaime Casanova
Subject plpgsql's case bug?
Date
Msg-id 3073cc9b1003271908w1ec1b42bj2afa97450129da58@mail.gmail.com
Whole thread Raw
Responses Re: plpgsql's case bug?
Re: plpgsql's case bug?
List pgsql-hackers
Hi,

I found something strange (at least for my limited view).

in pl_exec.c:1549 in the function exec_stmt_case() we have this:

"""   /* SQL2003 mandates this error if there was no ELSE clause */   if (!stmt->have_else)       ereport(ERROR,
      (errcode(ERRCODE_CASE_NOT_FOUND),                errmsg("case not found"),                errhint("CASE statement
ismissing ELSE part."))); 
"""

resulting in this function to fail when i try to execute it

"""
postgres=# create or replace function test_case() returns boolean as $$
declare       v_one integer = 1;       v_two boolean = false;
begin       case when v_one is null then      v_two = true;       end case;       return v_two;
end
$$ language plpgsql;
CREATE FUNCTION

postgres=# select test_case();
ERROR:  case not found
HINT:  CASE statement is missing ELSE part.
CONTEXT:  PL/pgSQL function "test_case" line 5 at CASE
"""

this is based on General Rules case 1 of chapter 13.6 (case statement)
but i don't think that behaviour is the meaning of that Rule. Even if
it is, the exception should be: "case not found for case statement"
and not just "case not found"

"""
General Rules
1) Case:  a) If the <search condition> of some <searched case statement when
clause> in a <case statement> is     True, then let SL be the <SQL statement list> of the first
(leftmost) <searched case statement when     clause> whose <search condition> is True.  b) If the <case statement>
simplycontains a <case statement else 
clause>, then let SL be the <SQL statement     list> of that <case statement else clause>.  c) Otherwise, an exception
conditionis raised: case not found for 
case statement, and the execution of     the <case statement> is terminated immediately.
"""

comments?

--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: A Bug in outDatum ?? (Not Sure )
Next
From: Jaime Casanova
Date:
Subject: Re: plpgsql's case bug?