From 6851baeda1cfb347b20d1430b6c42eee58b7ec8e Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue, 31 Jan 2006 22:40:03 +0000
Subject: [PATCH] Allow %TYPE to be used with SETOF, per gripe from Murat
 Tasan.

---
 src/backend/parser/gram.y | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 82d36cea02..bda5c93254 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -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;
+				}
 		;
 
 
-- 
2.24.1