Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite3accff

Browse files
committed
Syntax for [CONSTRAINT name] CHECK ...
1 parente424702 commite3accff

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

‎src/backend/parser/gram.y

Lines changed: 30 additions & 14 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.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
* AUTHORDATEMAJOR 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
%tokenABORT_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-
OptInheritOptCheck OptArchiveType OptLocation
540+
OptInheritOptConstraint 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)

[8]ページ先頭

©2009-2025 Movatter.jp