diff --git a/src/common/backend/parser/gram.y b/src/common/backend/parser/gram.y index c353719df..176dc68d5 100644 --- a/src/common/backend/parser/gram.y +++ b/src/common/backend/parser/gram.y @@ -620,7 +620,7 @@ static int errstate; %type TableConstraint TableLikeClause ForeignTableLikeClause %type excluding_option_list TableLikeOptionList TableLikeIncludingOption TableLikeExcludingOption -%type ColQualList +%type ColQualList WithOptions %type ColConstraint ColConstraintElem ConstraintAttr InformationalConstraintElem %type key_actions key_delete key_match key_update key_action %type ConstraintAttributeSpec ConstraintAttributeElem @@ -5793,7 +5793,7 @@ ColCmprsMode: DELTA {$$ = ATT_CMPR_DELTA;} /* delta compression */ | /* EMPTY */ {$$ = ATT_CMPR_UNDEFINED;} /* not specified by user */ ; -columnOptions: ColId WITH OPTIONS ColQualList +columnOptions: ColId WithOptions ColQualList { ColumnDef *n = makeNode(ColumnDef); n->colname = $1; @@ -5806,12 +5806,16 @@ columnOptions: ColId WITH OPTIONS ColQualList n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; - SplitColQualList($4, &n->constraints, &n->collClause, &n->clientLogicColumnRef, + SplitColQualList($3, &n->constraints, &n->collClause, &n->clientLogicColumnRef, yyscanner); $$ = (Node *)n; } ; +WithOptions: + WITH OPTIONS {$$ = NIL; } + | /*EMPTY*/ {$$ = NIL; } + ColQualList: ColQualList ColConstraint { $$ = lappend($1, $2); } | /*EMPTY*/ { $$ = NIL; } diff --git a/src/common/interfaces/libpq/frontend_parser/gram.y b/src/common/interfaces/libpq/frontend_parser/gram.y index 1e8a32eab..ff7485f7c 100755 --- a/src/common/interfaces/libpq/frontend_parser/gram.y +++ b/src/common/interfaces/libpq/frontend_parser/gram.y @@ -386,7 +386,7 @@ extern THR_LOCAL bool stmt_contains_operator_plus; %type TableConstraint TableLikeClause %type excluding_option_list TableLikeOptionList TableLikeIncludingOption TableLikeExcludingOption -%type ColQualList +%type ColQualList WithOptions %type ColConstraint ColConstraintElem ConstraintAttr InformationalConstraintElem %type key_actions key_delete key_match key_update key_action %type ConstraintAttributeSpec ConstraintAttributeElem @@ -4846,7 +4846,7 @@ ColCmprsMode: DELTA {$$ = ATT_CMPR_DELTA;} /* delta compression */ | /* EMPTY */ {$$ = ATT_CMPR_UNDEFINED;} /* not specified by user */ ; -columnOptions: ColId WITH OPTIONS ColQualList +columnOptions: ColId WithOptions ColQualList { ColumnDef *n = makeNode(ColumnDef); n->colname = $1; @@ -4861,11 +4861,15 @@ columnOptions: ColId WITH OPTIONS ColQualList n->collOid = InvalidOid; n->clientLogicColumnRef=NULL; - SplitColQualList($4, &n->constraints, &n->collClause,&n->clientLogicColumnRef, yyscanner); + SplitColQualList($3, &n->constraints, &n->collClause,&n->clientLogicColumnRef, yyscanner); $$ = (Node *)n; } ; +WithOptions: + WITH OPTIONS {$$ = NIL; } + | /*EMPTY*/ {$$ = NIL; } + ColQualList: ColQualList ColConstraint { $$ = lappend($1, $2); } | /*EMPTY*/ { $$ = NIL; }