Fix a couple of places where the plpgsql grammar would produce an unhelpful
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 10 Sep 2008 01:09:45 +0000 (01:09 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 10 Sep 2008 01:09:45 +0000 (01:09 +0000)
'syntax error' message, rather than something that might draw one's
attention to a missing or wrong-type variable declaration.  Per recent
gripe.

src/pl/plpgsql/src/gram.y

index cf3c751cc0baeefa6cb015578b3b97c9279f6579..89db55231fbe59dd3ead8bfa990a0733b3180425 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.114 2008/09/02 20:37:55 tgl Exp $
+ *   $PostgreSQL: pgsql/src/pl/plpgsql/src/gram.y,v 1.115 2008/09/10 01:09:45 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -741,6 +741,18 @@ getdiag_target : T_SCALAR
                        check_assignable(yylval.scalar);
                        $$ = yylval.scalar->dno;
                    }
+               | T_ROW
+                   {
+                       yyerror("expected an integer variable");
+                   }
+               | T_RECORD
+                   {
+                       yyerror("expected an integer variable");
+                   }
+               | T_WORD
+                   {
+                       yyerror("expected an integer variable");
+                   }
                ;
 
 
@@ -1669,6 +1681,18 @@ cursor_variable  : T_SCALAR
                        }
                        $$ = (PLpgSQL_var *) yylval.scalar;
                    }
+               | T_ROW
+                   {
+                       yyerror("expected a cursor or refcursor variable");
+                   }
+               | T_RECORD
+                   {
+                       yyerror("expected a cursor or refcursor variable");
+                   }
+               | T_WORD
+                   {
+                       yyerror("expected a cursor or refcursor variable");
+                   }
                ;
 
 exception_sect :