Add syntax and warnings for unsupported ALTER TABLE commands

including DROP COLUMN, SET CONSTRAINT, etc.
This commit is contained in:
Thomas G. Lockhart 1997-09-18 03:46:18 +00:00
parent 359cd689f8
commit c407a38742
1 changed files with 32 additions and 20 deletions

View 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; };