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

Commit e3accff

Browse files
committed
Syntax for [CONSTRAINT name] CHECK ...
1 parent e424702 commit e3accff

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

src/backend/parser/gram.y

+30-14
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.37 1997/08/20 01:12:02 vadim Exp $
13+
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.38 1997/08/21 01:34:44 vadim Exp $
1414
*
1515
* HISTORY
1616
* AUTHOR DATE MAJOR EVENT
@@ -84,6 +84,7 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
8484
Attr *attr;
8585

8686
ColumnDef *coldef;
87+
ConstaintDef *constrdef;
8788
TypeName *typnam;
8889
DefElem *defelt;
8990
ParamString *param;
@@ -118,7 +119,9 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
118119
%type <str> relation_name, copy_file_name, copy_delimiter, def_name,
119120
database_name, access_method_clause, access_method, attr_name,
120121
class, index_name, name, file_name, recipe_name,
121-
var_name, aggr_argtype, OptDefault, CheckElem
122+
var_name, aggr_argtype, OptDefault
123+
124+
%type <constrdef> ConstraintElem, ConstraintDef
122125

123126
%type <str> opt_id, opt_portal_name,
124127
before_clause, after_clause, all_Op, MathOp, opt_name, opt_unique,
@@ -130,7 +133,7 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
130133

131134
%type <list> stmtblock, stmtmulti,
132135
relation_name_list, OptTableElementList, tableElementList,
133-
OptInherit, OptCheck, CheckList, definition,
136+
OptInherit, OptConstraint, ConstraintList, definition,
134137
opt_with, def_args, def_name_list, func_argtypes,
135138
oper_argtypes, OptStmtList, OptStmtBlock, OptStmtMulti,
136139
opt_column_list, columnList, opt_va_list, va_list,
@@ -161,7 +164,7 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
161164
a_expr, a_expr_or_null, AexprConst,
162165
default_expr, default_expr_or_null,
163166
in_expr_nodes, not_in_expr_nodes,
164-
having_clause, default_expr
167+
having_clause
165168
%type <value> NumConst
166169
%type <attr> event_object, attr
167170
%type <sortgroupby> groupby
@@ -188,8 +191,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
188191
%token ABORT_TRANS, ACL, ADD, AFTER, AGGREGATE, ALL, ALTER, ANALYZE,
189192
AND, APPEND, ARCHIVE, ARCH_STORE, AS, ASC,
190193
BACKWARD, BEFORE, BEGIN_TRANS, BETWEEN, BINARY, BY,
191-
CAST, CHANGE, CHECK, CLOSE, CLUSTER, COLUMN, COMMIT, COPY, CREATE,
192-
CURRENT, CURSOR, DATABASE, DECLARE, DEFAULT, DELETE,
194+
CAST, CHANGE, CHECK, CLOSE, CLUSTER, COLUMN, COMMIT, CONSTRAINT,
195+
COPY, CREATE, CURRENT, CURSOR, DATABASE, DECLARE, DEFAULT, DELETE,
193196
DELIMITERS, DESC, DISTINCT, DO, DROP, END_TRANS,
194197
EXTEND, FETCH, FOR, FORWARD, FROM, FUNCTION, GRANT, GROUP,
195198
HAVING, HEAVY, IN, INDEX, INHERITS, INSERT, INSTEAD, INTO, IS,
@@ -534,14 +537,14 @@ copy_delimiter: USING DELIMITERS Sconst { $$ = $3;}
534537
*****************************************************************************/
535538

536539
CreateStmt: CREATE TABLE relation_name '(' OptTableElementList ')'
537-
OptInherit OptCheck OptArchiveType OptLocation
540+
OptInherit OptConstraint OptArchiveType OptLocation
538541
OptArchiveLocation
539542
{
540543
CreateStmt *n = makeNode(CreateStmt);
541544
n->relname = $3;
542545
n->tableElts = $5;
543546
n->inhRelnames = $7;
544-
n->check = $8;
547+
n->constraints = $8;
545548
n->archiveType = $9;
546549
n->location = $10;
547550
n->archiveLoc = $11;
@@ -586,18 +589,28 @@ OptInherit: INHERITS '(' relation_name_list ')' { $$ = $3; }
586589
| /*EMPTY*/ { $$ = NIL; }
587590
;
588591

589-
OptCheck: CheckList { $$ = $1; }
592+
OptConstraint: ConstraintList { $$ = $1; }
590593
| { $$ = NULL; }
591594
;
592595

593-
CheckList :
594-
CheckList ',' CheckElem
596+
ConstraintList :
597+
ConstraintList ',' ConstraintElem
595598
{ $$ = lappend($1, $3); }
596-
| CheckElem
599+
| ConstraintElem
597600
{ $$ = lcons($1, NIL); }
598601
;
599602

600-
CheckElem: CHECK a_expr {
603+
ConstraintElem:
604+
CONSTRAINT name ConstraintDef
605+
{
606+
$3->name = $2;
607+
$$ = $3;
608+
}
609+
| ConstraintDef { $$ = $1; }
610+
;
611+
612+
ConstraintDef: CHECK a_expr {
613+
ConstaintDef *constr = palloc (sizeof(ConstaintDef));
601614
int chklen = CurScanPosition() - CheckStartPosition;
602615
char *check;
603616

@@ -606,7 +619,10 @@ CheckElem: CHECK a_expr {
606619
parseString + CheckStartPosition,
607620
chklen);
608621
check[chklen] = 0;
609-
$$ = check;
622+
constr->type = CONSTR_CHECK;
623+
constr->name = NULL;
624+
constr->expr = check;
625+
$$ = constr;
610626
}
611627
;
612628

0 commit comments

Comments
 (0)