mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03: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:
@ -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 :
|
|||||||
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 : ';'
|
||||||
|
Reference in New Issue
Block a user