Allow qualified type names in CREATE CAST, DROP CAST. Also allow the
authorTom Lane
Wed, 5 Feb 2003 20:16:42 +0000 (20:16 +0000)
committerTom Lane
Wed, 5 Feb 2003 20:16:42 +0000 (20:16 +0000)
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

index 22c07de7b5eb7f9bb9482d7e3c783a3edef02e4b..a7a3993e55381b0ce73ef3d63d1a94c98e9f8b13 100644 (file)
@@ -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;