]> granicus.if.org Git - postgresql/commitdiff
Add syntax and warnings for unsupported ALTER TABLE commands
authorThomas G. Lockhart <lockhart@fourpalms.org>
Thu, 18 Sep 1997 03:46:18 +0000 (03:46 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Thu, 18 Sep 1997 03:46:18 +0000 (03:46 +0000)
 including DROP COLUMN, SET CONSTRAINT, etc.

src/backend/parser/gram.y

index 71c24d9ad811cf2690ec6721126579bbedc87894..296fa4ef6fbd33a2ebc2566a731a6f60001eab6b 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.46 1997/09/16 16:11:20 thomas Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.47 1997/09/18 03:46:18 thomas Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -124,8 +124,7 @@ static char *FlattenStringList(List *list);
 
 %type <str>            relation_name, copy_file_name, copy_delimiter, def_name,
                database_name, access_method_clause, access_method, attr_name,
-               class, index_name, name, file_name, recipe_name,
-               var_name, aggr_argtype
+               class, index_name, name, file_name, recipe_name, aggr_argtype
 
 %type <constrdef>              ConstraintElem, ConstraintDef
 
@@ -173,7 +172,7 @@ static char *FlattenStringList(List *list);
 %type <astmt>  insert_rest
 
 %type <typnam> Typename, typname, opt_type
-%type <coldef> columnDef
+%type <coldef> columnDef, alter_clause
 %type <defelt> def_elem
 %type <node>   def_arg, columnElem, where_clause,
                                a_expr, a_expr_or_null, AexprConst,
@@ -321,18 +320,18 @@ stmt :      AddAttrStmt
 /*****************************************************************************
  *
  * Set PG internal variable
- *       SET var_name TO 'var_value'
+ *       SET name TO 'var_value'
  *
  *****************************************************************************/
 
-VariableSetStmt:  SET var_name TO var_value
+VariableSetStmt:  SET Id TO var_value
                                {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
                                        n->name  = $2;
                                        n->value = $4;
                                        $$ = (Node *) n;
                                }
-               |  SET var_name '=' var_value
+               |  SET Id '=' var_value
                                {
                                        VariableSetStmt *n = makeNode(VariableSetStmt);
                                        n->name  = $2;
@@ -348,14 +347,14 @@ VariableSetStmt:  SET var_name TO var_value
                                }
                ;
 
-var_value:             Sconst                  { $$ = $1; }
+var_value:  Sconst                     { $$ = $1; }
                ;
 
-zone_value:  Sconst                            { $$ = $1; }
-               | LOCAL                                 { $$ = NULL; }
+zone_value:  Sconst                    { $$ = $1; }
+               | LOCAL                         { $$ = NULL; }
                ;
 
-VariableShowStmt:  SHOW var_name
+VariableShowStmt:  SHOW Id
                                {
                                        VariableShowStmt *n = makeNode(VariableShowStmt);
                                        n->name  = $2;
@@ -363,7 +362,7 @@ VariableShowStmt:  SHOW var_name
                                }
                ;
 
-VariableResetStmt:     RESET var_name
+VariableResetStmt:     RESET Id
                                {
                                        VariableResetStmt *n = makeNode(VariableResetStmt);
                                        n->name  = $2;
@@ -378,16 +377,30 @@ VariableResetStmt:        RESET var_name
  *
  *****************************************************************************/
 
-AddAttrStmt:  ALTER TABLE relation_name opt_inh_star ADD COLUMN columnDef
+AddAttrStmt:  ALTER TABLE relation_name opt_inh_star alter_clause
                                {
                                        AddAttrStmt *n = makeNode(AddAttrStmt);
                                        n->relname = $3;
                                        n->inh = $4;
-                                       n->colDef = $7;
+                                       n->colDef = $5;
                                        $$ = (Node *)n;
                                }
                ;
 
+alter_clause:  ADD opt_column columnDef
+                               {
+                                       $$ = $3;
+                               }
+                       | DROP opt_column Id
+                               {       elog(WARN,"ALTER TABLE/DROP COLUMN not yet implemented",NULL); }
+                       | ALTER opt_column Id SET opt_default
+                               {       elog(WARN,"ALTER TABLE/ALTER COLUMN/SET DEFAULT not yet implemented",NULL); }
+                       | ALTER opt_column Id DROP DEFAULT
+                               {       elog(WARN,"ALTER TABLE/ALTER COLUMN/DROP DEFAULT not yet implemented",NULL); }
+                       | ADD ConstraintElem
+                               {       elog(WARN,"ALTER TABLE/ADD CONSTRAINT not yet implemented",NULL); }
+               ;
+
 /* Column definition might include WITH TIME ZONE, but only for the data types
  *  called out in SQL92 date/time definitions. So, check explicitly for "timestamp"
  * and "time". - thomas 1997-07-14
@@ -2070,12 +2083,12 @@ opt_inh_star: '*'                                               { $$ = TRUE; }
                |  /*EMPTY*/                                    { $$ = FALSE; }
                ;
 
-relation_name_list:            name_list ;
+relation_name_list:    name_list;
 
 name_list: name
-                               { $$=lcons(makeString($1),NIL); }
+                               {       $$ = lcons(makeString($1),NIL); }
                | name_list ',' name
-                               { $$=lappend($1,makeString($3)); }
+                               {       $$ = lappend($1,makeString($3)); }
                ;
 
 group_clause: GROUP BY groupby_list                            { $$ = $3; }
@@ -2141,13 +2154,13 @@ from_list:      from_list ',' from_val
                                { $$ = lcons($1, NIL); }
                ;
 
-from_val:  relation_expr AS var_name
+from_val:  relation_expr AS Id
                                {
                                        $$ = makeNode(RangeVar);
                                        $$->relExpr = $1;
                                        $$->name = $3;
                                }
-               | relation_expr var_name
+               | relation_expr Id
                                {
                                        $$ = makeNode(RangeVar);
                                        $$->relExpr = $1;
@@ -2971,7 +2984,6 @@ access_method:                    Id                              { $$ = $1; };
 attr_name:                             ColId                   { $$ = $1; };
 class:                                 Id                              { $$ = $1; };
 index_name:                            Id                              { $$ = $1; };
-var_name:                              Id                              { $$ = $1; };
 name:                                  Id                              { $$ = $1; };
 
 date:                                  Sconst                  { $$ = $1; };