OSDN Git Service

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

index 82d36ce..bda5c93 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;
+                               }
                ;