Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit c407a38

Browse files
author
Thomas G. Lockhart
committed
Add syntax and warnings for unsupported ALTER TABLE commands
including DROP COLUMN, SET CONSTRAINT, etc.
1 parent 359cd68 commit c407a38

File tree

1 file changed

+32
-20
lines changed

1 file changed

+32
-20
lines changed

src/backend/parser/gram.y

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
*
1212
* IDENTIFICATION
13-
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.46 1997/09/16 16:11:20 thomas Exp $
13+
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.47 1997/09/18 03:46:18 thomas Exp $
1414
*
1515
* HISTORY
1616
* AUTHOR DATE MAJOR EVENT
@@ -124,8 +124,7 @@ static char *FlattenStringList(List *list);
124124

125125
%type <str> relation_name, copy_file_name, copy_delimiter, def_name,
126126
database_name, access_method_clause, access_method, attr_name,
127-
class, index_name, name, file_name, recipe_name,
128-
var_name, aggr_argtype
127+
class, index_name, name, file_name, recipe_name, aggr_argtype
129128

130129
%type <constrdef> ConstraintElem, ConstraintDef
131130

@@ -173,7 +172,7 @@ static char *FlattenStringList(List *list);
173172
%type <astmt> insert_rest
174173

175174
%type <typnam> Typename, typname, opt_type
176-
%type <coldef> columnDef
175+
%type <coldef> columnDef, alter_clause
177176
%type <defelt> def_elem
178177
%type <node> def_arg, columnElem, where_clause,
179178
a_expr, a_expr_or_null, AexprConst,
@@ -321,18 +320,18 @@ stmt : AddAttrStmt
321320
/*****************************************************************************
322321
*
323322
* Set PG internal variable
324-
* SET var_name TO 'var_value'
323+
* SET name TO 'var_value'
325324
*
326325
*****************************************************************************/
327326

328-
VariableSetStmt: SET var_name TO var_value
327+
VariableSetStmt: SET Id TO var_value
329328
{
330329
VariableSetStmt *n = makeNode(VariableSetStmt);
331330
n->name = $2;
332331
n->value = $4;
333332
$$ = (Node *) n;
334333
}
335-
| SET var_name '=' var_value
334+
| SET Id '=' var_value
336335
{
337336
VariableSetStmt *n = makeNode(VariableSetStmt);
338337
n->name = $2;
@@ -348,22 +347,22 @@ VariableSetStmt: SET var_name TO var_value
348347
}
349348
;
350349

351-
var_value: Sconst { $$ = $1; }
350+
var_value: Sconst { $$ = $1; }
352351
;
353352

354-
zone_value: Sconst { $$ = $1; }
355-
| LOCAL { $$ = NULL; }
353+
zone_value: Sconst { $$ = $1; }
354+
| LOCAL { $$ = NULL; }
356355
;
357356

358-
VariableShowStmt: SHOW var_name
357+
VariableShowStmt: SHOW Id
359358
{
360359
VariableShowStmt *n = makeNode(VariableShowStmt);
361360
n->name = $2;
362361
$$ = (Node *) n;
363362
}
364363
;
365364

366-
VariableResetStmt: RESET var_name
365+
VariableResetStmt: RESET Id
367366
{
368367
VariableResetStmt *n = makeNode(VariableResetStmt);
369368
n->name = $2;
@@ -378,16 +377,30 @@ VariableResetStmt: RESET var_name
378377
*
379378
*****************************************************************************/
380379

381-
AddAttrStmt: ALTER TABLE relation_name opt_inh_star ADD COLUMN columnDef
380+
AddAttrStmt: ALTER TABLE relation_name opt_inh_star alter_clause
382381
{
383382
AddAttrStmt *n = makeNode(AddAttrStmt);
384383
n->relname = $3;
385384
n->inh = $4;
386-
n->colDef = $7;
385+
n->colDef = $5;
387386
$$ = (Node *)n;
388387
}
389388
;
390389

390+
alter_clause: ADD opt_column columnDef
391+
{
392+
$$ = $3;
393+
}
394+
| DROP opt_column Id
395+
{ elog(WARN,"ALTER TABLE/DROP COLUMN not yet implemented",NULL); }
396+
| ALTER opt_column Id SET opt_default
397+
{ elog(WARN,"ALTER TABLE/ALTER COLUMN/SET DEFAULT not yet implemented",NULL); }
398+
| ALTER opt_column Id DROP DEFAULT
399+
{ elog(WARN,"ALTER TABLE/ALTER COLUMN/DROP DEFAULT not yet implemented",NULL); }
400+
| ADD ConstraintElem
401+
{ elog(WARN,"ALTER TABLE/ADD CONSTRAINT not yet implemented",NULL); }
402+
;
403+
391404
/* Column definition might include WITH TIME ZONE, but only for the data types
392405
* called out in SQL92 date/time definitions. So, check explicitly for "timestamp"
393406
* and "time". - thomas 1997-07-14
@@ -2070,12 +2083,12 @@ opt_inh_star: '*' { $$ = TRUE; }
20702083
| /*EMPTY*/ { $$ = FALSE; }
20712084
;
20722085

2073-
relation_name_list: name_list ;
2086+
relation_name_list: name_list;
20742087

20752088
name_list: name
2076-
{ $$=lcons(makeString($1),NIL); }
2089+
{ $$ = lcons(makeString($1),NIL); }
20772090
| name_list ',' name
2078-
{ $$=lappend($1,makeString($3)); }
2091+
{ $$ = lappend($1,makeString($3)); }
20792092
;
20802093

20812094
group_clause: GROUP BY groupby_list { $$ = $3; }
@@ -2141,13 +2154,13 @@ from_list: from_list ',' from_val
21412154
{ $$ = lcons($1, NIL); }
21422155
;
21432156

2144-
from_val: relation_expr AS var_name
2157+
from_val: relation_expr AS Id
21452158
{
21462159
$$ = makeNode(RangeVar);
21472160
$$->relExpr = $1;
21482161
$$->name = $3;
21492162
}
2150-
| relation_expr var_name
2163+
| relation_expr Id
21512164
{
21522165
$$ = makeNode(RangeVar);
21532166
$$->relExpr = $1;
@@ -2971,7 +2984,6 @@ access_method: Id { $$ = $1; };
29712984
attr_name: ColId { $$ = $1; };
29722985
class: Id { $$ = $1; };
29732986
index_name: Id { $$ = $1; };
2974-
var_name: Id { $$ = $1; };
29752987
name: Id { $$ = $1; };
29762988

29772989
date: Sconst { $$ = $1; };

0 commit comments

Comments
 (0)