*
*
* 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
%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
%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,
/*****************************************************************************
*
* 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;
}
;
-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;
}
;
-VariableResetStmt: RESET var_name
+VariableResetStmt: RESET Id
{
VariableResetStmt *n = makeNode(VariableResetStmt);
n->name = $2;
*
*****************************************************************************/
-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
| /*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; }
{ $$ = 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;
attr_name: ColId { $$ = $1; };
class: Id { $$ = $1; };
index_name: Id { $$ = $1; };
-var_name: Id { $$ = $1; };
name: Id { $$ = $1; };
date: Sconst { $$ = $1; };