Allow %TYPE to be used with SETOF, per gripe from Murat Tasan.
authorTom Lane
Tue, 31 Jan 2006 22:40:03 +0000 (22:40 +0000)
committerTom Lane
Tue, 31 Jan 2006 22:40:03 +0000 (22:40 +0000)
src/backend/parser/gram.y

index 82d36cea023bda50c1d9ba2b135ad6ff6aaa5b03..bda5c932548ccafc8d7e68e4ec556129b34eb046 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.524 2006/01/22 20:03:16 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.525 2006/01/31 22:40:03 tgl Exp $
  *
  * HISTORY
  *   AUTHOR            DATE            MAJOR EVENT
@@ -3672,7 +3672,7 @@ func_return:
        ;
 
 /*
- * We would like to make the second production here be ColId attrs etc,
+ * We would like to make the %TYPE productions here be ColId attrs etc,
  * but that causes reduce/reduce conflicts.  type_name is next best choice.
  */
 func_type: Typename                                { $$ = $1; }
@@ -3683,6 +3683,14 @@ func_type:   Typename                                { $$ = $1; }
                    $$->pct_type = true;
                    $$->typmod = -1;
                }
+           | SETOF type_name attrs '%' TYPE_P
+               {
+                   $$ = makeNode(TypeName);
+                   $$->names = lcons(makeString($2), $3);
+                   $$->pct_type = true;
+                   $$->typmod = -1;
+                   $$->setof = TRUE;
+               }
        ;