From e24977f3a44fc59e7797f5124f3df920bc10a28e Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed, 5 Feb 2003 20:16:42 +0000
Subject: [PATCH] Allow qualified type names in CREATE CAST, DROP CAST.  Also
 allow the construction 'SETOF type[]' which for some reason was previously
 overlooked (you'd have to name the array type directly to make it work).

---
 src/backend/parser/gram.y | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 22c07de7b5e..a7a3993e553 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.398 2003/02/03 14:04:24 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.399 2003/02/05 20:16:42 tgl Exp $
  *
  * HISTORY
  *	  AUTHOR			DATE			MAJOR EVENT
@@ -3229,7 +3229,7 @@ any_operator:
  *
  *****************************************************************************/
 
-CreateCastStmt: CREATE CAST '(' ConstTypename AS ConstTypename ')'
+CreateCastStmt: CREATE CAST '(' Typename AS Typename ')'
 					WITH FUNCTION function_with_argtypes cast_context
 				{
 					CreateCastStmt *n = makeNode(CreateCastStmt);
@@ -3239,7 +3239,7 @@ CreateCastStmt: CREATE CAST '(' ConstTypename AS ConstTypename ')'
 					n->context = (CoercionContext) $11;
 					$$ = (Node *)n;
 				}
-			| CREATE CAST '(' ConstTypename AS ConstTypename ')'
+			| CREATE CAST '(' Typename AS Typename ')'
 					WITHOUT FUNCTION cast_context
 				{
 					CreateCastStmt *n = makeNode(CreateCastStmt);
@@ -3257,7 +3257,7 @@ cast_context:  AS IMPLICIT_P					{ $$ = COERCION_IMPLICIT; }
 		;
 
 
-DropCastStmt: DROP CAST '(' ConstTypename AS ConstTypename ')' opt_drop_behavior
+DropCastStmt: DROP CAST '(' Typename AS Typename ')' opt_drop_behavior
 				{
 					DropCastStmt *n = makeNode(DropCastStmt);
 					n->sourcetype = $4;
@@ -4948,9 +4948,10 @@ Typename:	SimpleTypename opt_array_bounds
 					$$ = $1;
 					$$->arrayBounds = $2;
 				}
-			| SETOF SimpleTypename
+			| SETOF SimpleTypename opt_array_bounds
 				{
 					$$ = $2;
+					$$->arrayBounds = $3;
 					$$->setof = TRUE;
 				}
 		;
@@ -5173,6 +5174,8 @@ Bit:		BitWithLength
 				}
 		;
 
+/* ConstBit is like Bit except "BIT" defaults to unspecified length */
+/* See notes for ConstCharacter, which addresses same issue for "CHAR" */
 ConstBit:	BitWithLength
 				{
 					$$ = $1;
-- 
GitLab