From a323bce2e7037905dd8e70d6f2239cad5d583002 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Tue, 12 Oct 2004 15:44:15 +0000 Subject: [PATCH] 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'. --- src/pl/plpgsql/src/gram.y | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/pl/plpgsql/src/gram.y b/src/pl/plpgsql/src/gram.y index dc599aae15f..b681dcc0ce0 100644 --- a/src/pl/plpgsql/src/gram.y +++ b/src/pl/plpgsql/src/gram.y @@ -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 : ';' -- GitLab