BUG #8568: PLPGSQL Documentation For CASE Is incorrect

Поиск
Список
Период
Сортировка
От joshuadburns@hotmail.com
Тема BUG #8568: PLPGSQL Documentation For CASE Is incorrect
Дата
Msg-id E1VbJJx-0003T6-KN@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #8568: PLPGSQL Documentation For CASE Is incorrect  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: BUG #8568: PLPGSQL Documentation For CASE Is incorrect  (David Johnston <polobo@yahoo.com>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      8568
Logged by:          Joshua D. Burns
Email address:      joshuadburns@hotmail.com
PostgreSQL version: 9.3.1
Operating system:   Linux
Description:

Documentation Sections Affected:
* 8.4: 38.6
* 9.0, 9.1 & 9.2: 39.6
* 9.3 & devel: 40.6


Example Documentation URL:
http://www.postgresql.org/docs/9.3/static/plpgsql-control-structures.html


Every example within the PLPGSQL "control structures" documentation states
that the proper syntax for closing a "CASE" statement is to use "END CASE;"
however in reality, on every version of PostgreSQL I can my hands on, "END
CASE;" throws the following exception:


  ERROR:  syntax error at or near "CASE"
  LINE 9:   END CASE;


However if I use "END;" in place of "END CASE;", the script executes as
expected. This leads me to believe the documentation for "CASE" statements
across all current versions of the documentation, are incorrect.


=====================================
Example CASE statement with END CASE;
-------------------------------------
DO LANGUAGE "plpgsql" $BODY$
DECLARE my_var INTEGER := 2; BEGIN
  RAISE NOTICE
    '%',
    CASE
      WHEN my_var = 1 THEN 'one'
      WHEN my_var = 2 THEN 'two'
      WHEN my_var = 3 THEN 'three'
    END CASE;
END $BODY$;
=====================================
Results In Unexpected Behavior:
  ERROR:  syntax error at or near "CASE"
  LINE 9:   END CASE;


=====================================
Example CASE statement using END;
-------------------------------------
DO LANGUAGE "plpgsql" $BODY$
DECLARE my_var INTEGER := 2; BEGIN
  RAISE NOTICE
    '%',
    CASE
      WHEN my_var = 1 THEN 'one'
      WHEN my_var = 2 THEN 'two'
      WHEN my_var = 3 THEN 'three'
    END;
END $BODY$;
-------------------------------------
Results In Expected Behavior:
  NOTICE:  two


I haven't checked, but this could also affect IF statements, specifically
"END IF;" vs. "END;" as well.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: surprising to_timestamp behavior
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #8568: PLPGSQL Documentation For CASE Is incorrect