plpgsql EXIT construct forgot to downcase or quote-strip its identifier
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 12 Oct 2004 15:44:15 +0000 (15:44 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 12 Oct 2004 15:44:15 +0000 (15:44 +0000)
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

index dc599aae15fb78e6177731b46f0228a9d3c1b425..b681dcc0ce081725828dca58ae28f9a538a79abd 100644 (file)
@@ -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   : ';'