Allow 'ELSEIF' as an alternative to 'ELSIF' in PL/PgSQL. There have been

several reports of users being confused when they attempt to use ELSEIF
and run into trouble due to PL/PgSQL's lax parser. The parser will be
improved for 8.1, but we can fix most of the problem by allowing ELSEIF
for now.
This commit is contained in:
Neil Conway 2004-12-17 03:51:36 +00:00
parent dfdae5d63c
commit 480777e56c
2 changed files with 14 additions and 3 deletions

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.51 2004/12/13 18:05:08 petere Exp $
$PostgreSQL: pgsql/doc/src/sgml/plpgsql.sgml,v 1.52 2004/12/17 03:51:34 neilc Exp $
-->
<chapter id="plpgsql">
@ -1475,7 +1475,7 @@ SELECT * FROM some_func();
<para>
<literal>IF</> statements let you execute commands based on
certain conditions. <application>PL/pgSQL</> has four forms of
certain conditions. <application>PL/pgSQL</> has five forms of
<literal>IF</>:
<itemizedlist>
<listitem>
@ -1490,6 +1490,9 @@ SELECT * FROM some_func();
<listitem>
<para><literal>IF ... THEN ... ELSIF ... THEN ... ELSE</></>
</listitem>
<listitem>
<para><literal>IF ... THEN ... ELSEIF ... THEN ... ELSE</></>
</listitem>
</itemizedlist>
</para>
@ -1633,6 +1636,13 @@ END IF;
</programlisting>
</para>
</sect3>
<sect3>
<title><literal>IF-THEN-ELSEIF-ELSE</></title>
<para>
<literal>ELSEIF</> is an alias for <literal>ELSIF</>.
</para>
</sect2>
<sect2 id="plpgsql-control-structures-loops">

View File

@ -4,7 +4,7 @@
* procedural language
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/pl/plpgsql/src/scan.l,v 1.37 2004/09/13 01:45:32 neilc Exp $
* $PostgreSQL: pgsql/src/pl/plpgsql/src/scan.l,v 1.38 2004/12/17 03:51:36 neilc Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@ -144,6 +144,7 @@ declare { return K_DECLARE; }
default { return K_DEFAULT; }
diagnostics { return K_DIAGNOSTICS; }
else { return K_ELSE; }
elseif { return K_ELSIF; }
elsif { return K_ELSIF; }
end { return K_END; }
exception { return K_EXCEPTION; }