@@ -290,8 +290,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
290
290
CreateTrigStmt CreatePLangStmt CreateSeqStmt CreateRoleStmt
291
291
CreateExtensionStmt CreateFunctionStmt CreateGraphStmt
292
292
CreateTableStmt CreateTableSpaceStmt CreateFdwStmt
293
- CreateUserStmt
294
- DeclareCursorStmt
293
+ CreateUserStmt ConstraintsSetStmt CheckPointStmt
294
+ DeclareCursorStmt DiscardStmt
295
295
DefineStmt DeleteStmt DoStmt DropCastStmt DropdbStmt DropGraphStmt
296
296
DropStmt DropTableSpaceStmt DropTransformStmt DropOpClassStmt DropOpFamilyStmt
297
297
DropRoleStmt
@@ -653,7 +653,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
653
653
%type <node> RowSecurityOptionalWithCheck RowSecurityOptionalExpr
654
654
%type <list> RowSecurityDefaultToRole RowSecurityOptionalToRole
655
655
656
-
656
+ %type <list> constraints_set_list
657
+ %type <boolean> constraints_set_mode
657
658
%type <string> OptTableSpace OptConsTableSpace
658
659
%type <rolespec> OptTableSpaceOwner
659
660
%type <integer> opt_check_option
@@ -895,7 +896,9 @@ stmt:
895
896
| AlterTypeStmt
896
897
| AnalyzeStmt
897
898
| CallStmt
899
+ | CheckPointStmt
898
900
| CreateConversionStmt
901
+ | ConstraintsSetStmt
899
902
| CopyStmt
900
903
| ClusterStmt
901
904
| CreateAsStmt
@@ -923,6 +926,7 @@ stmt:
923
926
| DeclareCursorStmt
924
927
| DefineStmt
925
928
| DeleteStmt
929
+ | DiscardStmt
926
930
| DoStmt
927
931
| DropdbStmt
928
932
| DropGraphStmt
@@ -5226,10 +5230,7 @@ def_arg: func_type { $$ = (Node *)$1; }
5226
5230
| all_op { $$ = (Node *)$1 ; }
5227
5231
| NumericOnly { $$ = (Node *)$1 ; }
5228
5232
| Sconst { $$ = (Node *)makeString($1 ); }
5229
- //| NONE { $$ = (Node *)makeString(pstrdup($1 )); }
5230
- // XXX Temporary
5231
- | TRUE_P { $$ = (Node *)makeBoolAConst(true , @1 ); }
5232
- | FALSE_P { $$ = (Node *)makeBoolAConst(false , @1 ); }
5233
+ | NONE { $$ = (Node *)makeString(pstrdup($1 )); }
5233
5234
;
5234
5235
5235
5236
@@ -8448,7 +8449,7 @@ DefineStmt:
8448
8449
n->params = $6 ;
8449
8450
$$ = (Node *)n;
8450
8451
}
8451
- /* | CREATE TEXT_P SEARCH PARSER any_name definition
8452
+ /* | CREATE TEXT_P SEARCH PARSER any_name definition TODO
8452
8453
{
8453
8454
DefineStmt *n = makeNode(DefineStmt);
8454
8455
n->kind = OBJECT_TSPARSER;
@@ -11032,7 +11033,78 @@ opt_slice_bound:
11032
11033
;
11033
11034
11034
11035
11036
+ ConstraintsSetStmt :
11037
+ SET CONSTRAINTS constraints_set_list constraints_set_mode
11038
+ {
11039
+ ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt);
11040
+ n->constraints = $3 ;
11041
+ n->deferred = $4 ;
11042
+ $$ = (Node *) n;
11043
+ }
11044
+ ;
11045
+
11046
+ constraints_set_list :
11047
+ ALL { $$ = NIL; }
11048
+ | qualified_name_list { $$ = $1 ; }
11049
+ ;
11050
+
11051
+ constraints_set_mode :
11052
+ DEFERRED { $$ = true ; }
11053
+ | IMMEDIATE { $$ = false ; }
11054
+ ;
11055
+
11056
+
11057
+ /*
11058
+ * Checkpoint statement
11059
+ */
11060
+ CheckPointStmt :
11061
+ CHECKPOINT
11062
+ {
11063
+ CheckPointStmt *n = makeNode(CheckPointStmt);
11064
+ $$ = (Node *)n;
11065
+ }
11066
+ ;
11067
+
11068
+
11069
+ /* ****************************************************************************
11070
+ *
11071
+ * DISCARD { ALL | TEMP | PLANS | SEQUENCES }
11072
+ *
11073
+ *****************************************************************************/
11074
+
11075
+ DiscardStmt :
11076
+ DISCARD ALL
11077
+ {
11078
+ DiscardStmt *n = makeNode(DiscardStmt);
11079
+ n->target = DISCARD_ALL;
11080
+ $$ = (Node *) n;
11081
+ }
11082
+ | DISCARD TEMP
11083
+ {
11084
+ DiscardStmt *n = makeNode(DiscardStmt);
11085
+ n->target = DISCARD_TEMP;
11086
+ $$ = (Node *) n;
11087
+ }
11088
+ | DISCARD TEMPORARY
11089
+ {
11090
+ DiscardStmt *n = makeNode(DiscardStmt);
11091
+ n->target = DISCARD_TEMP;
11092
+ $$ = (Node *) n;
11093
+ }
11094
+ | DISCARD PLANS
11095
+ {
11096
+ DiscardStmt *n = makeNode(DiscardStmt);
11097
+ n->target = DISCARD_PLANS;
11098
+ $$ = (Node *) n;
11099
+ }
11100
+ | DISCARD SEQUENCES
11101
+ {
11102
+ DiscardStmt *n = makeNode(DiscardStmt);
11103
+ n->target = DISCARD_SEQUENCES;
11104
+ $$ = (Node *) n;
11105
+ }
11035
11106
11107
+ ;
11036
11108
11037
11109
/* ****************************************************************************
11038
11110
*
0 commit comments