Commit a323bce2 authored by Tom Lane's avatar Tom Lane

plpgsql EXIT construct forgot to downcase or quote-strip its identifier

argument, leading to label matching failures at run-time.  Per report from
Patrick Fiche.  Also, fix it so that an unrecognized label argument draws
a more useful error message than 'syntax error'.
parent 0b112045
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* procedural language * procedural language
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.62 2004/09/14 23:46:46 neilc Exp $ * $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.63 2004/10/12 15:44:15 tgl Exp $
* *
* This software is copyrighted by Jan Wieck - Hamburg. * This software is copyrighted by Jan Wieck - Hamburg.
* *
...@@ -1639,7 +1639,18 @@ opt_label : ...@@ -1639,7 +1639,18 @@ opt_label :
opt_exitlabel : opt_exitlabel :
{ $$ = NULL; } { $$ = NULL; }
| T_LABEL | T_LABEL
{ $$ = strdup(yytext); } {
char *name;
plpgsql_convert_ident(yytext, &name, 1);
$$ = strdup(name);
pfree(name);
}
| T_WORD
{
/* just to give a better error than "syntax error" */
yyerror("no such label");
}
; ;
opt_exitcond : ';' opt_exitcond : ';'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment