plpgsql's case bug?
От | Jaime Casanova |
---|---|
Тема | plpgsql's case bug? |
Дата | |
Msg-id | 3073cc9b1003271908w1ec1b42bj2afa97450129da58@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: plpgsql's case bug?
Re: plpgsql's case bug? |
Список | 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 по дате отправления: