mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
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'.
This commit is contained in:
parent
0b112045b7
commit
a323bce2e7
@ -4,7 +4,7 @@
|
||||
* procedural language
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
@ -1639,7 +1639,18 @@ opt_label :
|
||||
opt_exitlabel :
|
||||
{ $$ = NULL; }
|
||||
| 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 : ';'
|
||||
|
Loading…
Reference in New Issue
Block a user