@@ -263,10 +263,10 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
263263 CreateUserStmt CreateUserMappingStmt CreateRoleStmt CreatePolicyStmt
264264 CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt DoStmt
265265 DropGroupStmt DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt
266- DropAssertStmt DropTrigStmt DropRuleStmt DropCastStmt DropRoleStmt
267- DropPolicyStmt DropUserStmt DropdbStmt DropTableSpaceStmt DropFdwStmt
266+ DropAssertStmt DropCastStmt DropRoleStmt
267+ DropUserStmt DropdbStmt DropTableSpaceStmt
268268 DropTransformStmt
269- DropForeignServerStmt DropUserMappingStmt ExplainStmt FetchStmt
269+ DropUserMappingStmt ExplainStmt FetchStmt
270270 GrantStmt GrantRoleStmt ImportForeignSchemaStmt IndexStmt InsertStmt
271271 ListenStmt LoadStmt LockStmt NotifyStmt ExplainableStmt PreparableStmt
272272 CreateFunctionStmt AlterFunctionStmt ReindexStmt RemoveAggrStmt
@@ -440,7 +440,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
440440%type <boolean> copy_from opt_program
441441
442442%type <ival> opt_column event cursor_options opt_hold opt_set_data
443- %type <objtype> drop_type_any_name drop_type_name
443+ %type <objtype> drop_type_any_name drop_type_name drop_type_name_on_any_name
444444 comment_type_any_name comment_type_name
445445 security_label_type_any_name security_label_type_name
446446
@@ -885,20 +885,15 @@ stmt :
885885 | DoStmt
886886 | DropAssertStmt
887887 | DropCastStmt
888- | DropFdwStmt
889- | DropForeignServerStmt
890888 | DropGroupStmt
891889 | DropOpClassStmt
892890 | DropOpFamilyStmt
893891 | DropOwnedStmt
894- | DropPolicyStmt
895892 | DropPLangStmt
896- | DropRuleStmt
897893 | DropStmt
898894 | DropSubscriptionStmt
899895 | DropTableSpaceStmt
900896 | DropTransformStmt
901- | DropTrigStmt
902897 | DropRoleStmt
903898 | DropUserStmt
904899 | DropUserMappingStmt
@@ -4511,35 +4506,6 @@ opt_fdw_options:
45114506 | /* EMPTY*/ { $$ = NIL; }
45124507 ;
45134508
4514- /* ****************************************************************************
4515- *
4516- * QUERY :
4517- * DROP FOREIGN DATA WRAPPER name
4518- *
4519- ****************************************************************************/
4520-
4521- DropFdwStmt : DROP FOREIGN DATA_P WRAPPER name opt_drop_behavior
4522- {
4523- DropStmt *n = makeNode(DropStmt);
4524- n->removeType = OBJECT_FDW;
4525- n->objects = list_make1(makeString($5 ));
4526- n->missing_ok = false ;
4527- n->behavior = $6 ;
4528- n->concurrent = false ;
4529- $$ = (Node *) n;
4530- }
4531- | DROP FOREIGN DATA_P WRAPPER IF_P EXISTS name opt_drop_behavior
4532- {
4533- DropStmt *n = makeNode(DropStmt);
4534- n->removeType = OBJECT_FDW;
4535- n->objects = list_make1(makeString($7 ));
4536- n->missing_ok = true ;
4537- n->behavior = $8 ;
4538- n->concurrent = false ;
4539- $$ = (Node *) n;
4540- }
4541- ;
4542-
45434509/* ****************************************************************************
45444510 *
45454511 * QUERY :
@@ -4671,35 +4637,6 @@ opt_foreign_server_version:
46714637 | /* EMPTY*/ { $$ = NULL ; }
46724638 ;
46734639
4674- /* ****************************************************************************
4675- *
4676- * QUERY :
4677- * DROP SERVER name
4678- *
4679- ****************************************************************************/
4680-
4681- DropForeignServerStmt : DROP SERVER name opt_drop_behavior
4682- {
4683- DropStmt *n = makeNode(DropStmt);
4684- n->removeType = OBJECT_FOREIGN_SERVER;
4685- n->objects = list_make1(makeString($3 ));
4686- n->missing_ok = false ;
4687- n->behavior = $4 ;
4688- n->concurrent = false ;
4689- $$ = (Node *) n;
4690- }
4691- | DROP SERVER IF_P EXISTS name opt_drop_behavior
4692- {
4693- DropStmt *n = makeNode(DropStmt);
4694- n->removeType = OBJECT_FOREIGN_SERVER;
4695- n->objects = list_make1(makeString($5 ));
4696- n->missing_ok = true ;
4697- n->behavior = $6 ;
4698- n->concurrent = false ;
4699- $$ = (Node *) n;
4700- }
4701- ;
4702-
47034640/* ****************************************************************************
47044641 *
47054642 * QUERY :
@@ -4975,7 +4912,6 @@ AlterUserMappingStmt: ALTER USER MAPPING FOR auth_ident SERVER name alter_generi
49754912 * [USING (qual)] [WITH CHECK (with check qual)]
49764913 * ALTER POLICY name ON table [TO role, ...]
49774914 * [USING (qual)] [WITH CHECK (with check qual)]
4978- * DROP POLICY name ON table
49794915 *
49804916 *****************************************************************************/
49814917
@@ -5010,29 +4946,6 @@ AlterPolicyStmt:
50104946 }
50114947 ;
50124948
5013- DropPolicyStmt :
5014- DROP POLICY name ON any_name opt_drop_behavior
5015- {
5016- DropStmt *n = makeNode(DropStmt);
5017- n->removeType = OBJECT_POLICY;
5018- n->objects = list_make1(lappend($5 , makeString($3 )));
5019- n->behavior = $6 ;
5020- n->missing_ok = false ;
5021- n->concurrent = false ;
5022- $$ = (Node *) n;
5023- }
5024- | DROP POLICY IF_P EXISTS name ON any_name opt_drop_behavior
5025- {
5026- DropStmt *n = makeNode(DropStmt);
5027- n->removeType = OBJECT_POLICY;
5028- n->objects = list_make1(lappend($7 , makeString($5 )));
5029- n->behavior = $8 ;
5030- n->missing_ok = true ;
5031- n->concurrent = false ;
5032- $$ = (Node *) n;
5033- }
5034- ;
5035-
50364949RowSecurityOptionalExpr :
50374950 USING ' (' a_expr ' )' { $$ = $3 ; }
50384951 | /* EMPTY */ { $$ = NULL ; }
@@ -5105,7 +5018,6 @@ CreateAmStmt: CREATE ACCESS METHOD name TYPE_P INDEX HANDLER handler_name
51055018 *
51065019 * QUERIES :
51075020 * CREATE TRIGGER ...
5108- * DROP TRIGGER ...
51095021 *
51105022 *****************************************************************************/
51115023
@@ -5332,30 +5244,6 @@ ConstraintAttributeElem:
53325244 ;
53335245
53345246
5335- DropTrigStmt :
5336- DROP TRIGGER name ON any_name opt_drop_behavior
5337- {
5338- DropStmt *n = makeNode(DropStmt);
5339- n->removeType = OBJECT_TRIGGER;
5340- n->objects = list_make1(lappend($5 , makeString($3 )));
5341- n->behavior = $6 ;
5342- n->missing_ok = false ;
5343- n->concurrent = false ;
5344- $$ = (Node *) n;
5345- }
5346- | DROP TRIGGER IF_P EXISTS name ON any_name opt_drop_behavior
5347- {
5348- DropStmt *n = makeNode(DropStmt);
5349- n->removeType = OBJECT_TRIGGER;
5350- n->objects = list_make1(lappend($7 , makeString($5 )));
5351- n->behavior = $8 ;
5352- n->missing_ok = true ;
5353- n->concurrent = false ;
5354- $$ = (Node *) n;
5355- }
5356- ;
5357-
5358-
53595247/* ****************************************************************************
53605248 *
53615249 * QUERIES :
@@ -6034,6 +5922,26 @@ DropStmt: DROP drop_type_any_name IF_P EXISTS any_name_list opt_drop_behavior
60345922 n->concurrent = false ;
60355923 $$ = (Node *)n;
60365924 }
5925+ | DROP drop_type_name_on_any_name name ON any_name opt_drop_behavior
5926+ {
5927+ DropStmt *n = makeNode(DropStmt);
5928+ n->removeType = $2 ;
5929+ n->objects = list_make1(lappend($5 , makeString($3 )));
5930+ n->behavior = $6 ;
5931+ n->missing_ok = false ;
5932+ n->concurrent = false ;
5933+ $$ = (Node *) n;
5934+ }
5935+ | DROP drop_type_name_on_any_name IF_P EXISTS name ON any_name opt_drop_behavior
5936+ {
5937+ DropStmt *n = makeNode(DropStmt);
5938+ n->removeType = $2 ;
5939+ n->objects = list_make1(lappend($7 , makeString($5 )));
5940+ n->behavior = $8 ;
5941+ n->missing_ok = true ;
5942+ n->concurrent = false ;
5943+ $$ = (Node *) n;
5944+ }
60375945 | DROP TYPE_P type_name_list opt_drop_behavior
60385946 {
60395947 DropStmt *n = makeNode(DropStmt);
@@ -6117,8 +6025,17 @@ drop_type_name:
61176025 ACCESS METHOD { $$ = OBJECT_ACCESS_METHOD; }
61186026 | EVENT TRIGGER { $$ = OBJECT_EVENT_TRIGGER; }
61196027 | EXTENSION { $$ = OBJECT_EXTENSION; }
6028+ | FOREIGN DATA_P WRAPPER { $$ = OBJECT_FDW; }
61206029 | PUBLICATION { $$ = OBJECT_PUBLICATION; }
61216030 | SCHEMA { $$ = OBJECT_SCHEMA; }
6031+ | SERVER { $$ = OBJECT_FOREIGN_SERVER; }
6032+ ;
6033+
6034+ /* object types attached to a table */
6035+ drop_type_name_on_any_name :
6036+ POLICY { $$ = OBJECT_POLICY; }
6037+ | RULE { $$ = OBJECT_RULE; }
6038+ | TRIGGER { $$ = OBJECT_TRIGGER; }
61226039 ;
61236040
61246041any_name_list :
@@ -9277,30 +9194,6 @@ opt_instead:
92779194 ;
92789195
92799196
9280- DropRuleStmt :
9281- DROP RULE name ON any_name opt_drop_behavior
9282- {
9283- DropStmt *n = makeNode(DropStmt);
9284- n->removeType = OBJECT_RULE;
9285- n->objects = list_make1(lappend($5 , makeString($3 )));
9286- n->behavior = $6 ;
9287- n->missing_ok = false ;
9288- n->concurrent = false ;
9289- $$ = (Node *) n;
9290- }
9291- | DROP RULE IF_P EXISTS name ON any_name opt_drop_behavior
9292- {
9293- DropStmt *n = makeNode(DropStmt);
9294- n->removeType = OBJECT_RULE;
9295- n->objects = list_make1(lappend($7 , makeString($5 )));
9296- n->behavior = $8 ;
9297- n->missing_ok = true ;
9298- n->concurrent = false ;
9299- $$ = (Node *) n;
9300- }
9301- ;
9302-
9303-
93049197/* ****************************************************************************
93059198 *
93069199 * QUERY:
0 commit comments