Update dummy CREATE ASSERTION grammar

While we are probably still far away from fully implementing
assertions, all patch proposals appear to take issue with the existing
dummy grammar CREATE/DROP ASSERTION productions, so update those a
little bit.  Rename the rule, use any_name instead of name, and remove
some unused code.  Also remove the production for DROP ASSERTION,
since that would most likely be handled via the generic DROP support.

extracted from a patch by Joe Wildish
This commit is contained in:
Peter Eisentraut 2018-09-26 13:26:24 +02:00
parent a3d2844852
commit a49ceda6a0

View File

@ -259,11 +259,11 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
CreateOpFamilyStmt AlterOpFamilyStmt CreatePLangStmt CreateOpFamilyStmt AlterOpFamilyStmt CreatePLangStmt
CreateSchemaStmt CreateSeqStmt CreateStmt CreateStatsStmt CreateTableSpaceStmt CreateSchemaStmt CreateSeqStmt CreateStmt CreateStatsStmt CreateTableSpaceStmt
CreateFdwStmt CreateForeignServerStmt CreateForeignTableStmt CreateFdwStmt CreateForeignServerStmt CreateForeignTableStmt
CreateAssertStmt CreateTransformStmt CreateTrigStmt CreateEventTrigStmt CreateAssertionStmt CreateTransformStmt CreateTrigStmt CreateEventTrigStmt
CreateUserStmt CreateUserMappingStmt CreateRoleStmt CreatePolicyStmt CreateUserStmt CreateUserMappingStmt CreateRoleStmt CreatePolicyStmt
CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt DoStmt CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt DoStmt
DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt
DropAssertStmt DropCastStmt DropRoleStmt DropCastStmt DropRoleStmt
DropdbStmt DropTableSpaceStmt DropdbStmt DropTableSpaceStmt
DropTransformStmt DropTransformStmt
DropUserMappingStmt ExplainStmt FetchStmt DropUserMappingStmt ExplainStmt FetchStmt
@ -860,7 +860,7 @@ stmt :
| CopyStmt | CopyStmt
| CreateAmStmt | CreateAmStmt
| CreateAsStmt | CreateAsStmt
| CreateAssertStmt | CreateAssertionStmt
| CreateCastStmt | CreateCastStmt
| CreateConversionStmt | CreateConversionStmt
| CreateDomainStmt | CreateDomainStmt
@ -896,7 +896,6 @@ stmt :
| DeleteStmt | DeleteStmt
| DiscardStmt | DiscardStmt
| DoStmt | DoStmt
| DropAssertStmt
| DropCastStmt | DropCastStmt
| DropOpClassStmt | DropOpClassStmt
| DropOpFamilyStmt | DropOpFamilyStmt
@ -5639,43 +5638,19 @@ enable_trigger:
/***************************************************************************** /*****************************************************************************
* *
* QUERIES : * QUERY :
* CREATE ASSERTION ... * CREATE ASSERTION ...
* DROP ASSERTION ...
* *
*****************************************************************************/ *****************************************************************************/
CreateAssertStmt: CreateAssertionStmt:
CREATE ASSERTION name CHECK '(' a_expr ')' CREATE ASSERTION any_name CHECK '(' a_expr ')' ConstraintAttributeSpec
ConstraintAttributeSpec
{ {
CreateTrigStmt *n = makeNode(CreateTrigStmt);
n->trigname = $3;
n->args = list_make1($6);
n->isconstraint = true;
processCASbits($8, @8, "ASSERTION",
&n->deferrable, &n->initdeferred, NULL,
NULL, yyscanner);
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("CREATE ASSERTION is not yet implemented"))); errmsg("CREATE ASSERTION is not yet implemented")));
$$ = (Node *)n; $$ = NULL;
}
;
DropAssertStmt:
DROP ASSERTION name opt_drop_behavior
{
DropStmt *n = makeNode(DropStmt);
n->objects = NIL;
n->behavior = $4;
n->removeType = OBJECT_TRIGGER; /* XXX */
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("DROP ASSERTION is not yet implemented")));
$$ = (Node *) n;
} }
; ;