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

Commit8f5b596

Browse files
committed
Refactor AlterExtensionContentsStmt grammar
Make use of the general object support already used by COMMENT, DROP,and SECURITY LABEL.Discussion:https://www.postgresql.org/message-id/flat/163c00a5-f634-ca52-fc7c-0e53deda8735%402ndquadrant.com
1 parenta332b36 commit8f5b596

File tree

3 files changed

+31
-149
lines changed

3 files changed

+31
-149
lines changed

‎src/backend/commands/extension.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3269,6 +3269,25 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt,
32693269
Relationrelation;
32703270
OidoldExtension;
32713271

3272+
switch (stmt->objtype)
3273+
{
3274+
caseOBJECT_DATABASE:
3275+
caseOBJECT_EXTENSION:
3276+
caseOBJECT_INDEX:
3277+
caseOBJECT_PUBLICATION:
3278+
caseOBJECT_ROLE:
3279+
caseOBJECT_STATISTIC_EXT:
3280+
caseOBJECT_SUBSCRIPTION:
3281+
caseOBJECT_TABLESPACE:
3282+
ereport(ERROR,
3283+
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
3284+
errmsg("cannot add an object of this type to an extension")));
3285+
break;
3286+
default:
3287+
/* OK */
3288+
break;
3289+
}
3290+
32723291
extension.classId=ExtensionRelationId;
32733292
extension.objectId=get_extension_oid(stmt->extname, false);
32743293
extension.objectSubId=0;

‎src/backend/parser/gram.y

Lines changed: 11 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -4546,50 +4546,41 @@ alter_extension_opt_item:
45464546
*****************************************************************************/
45474547

45484548
AlterExtensionContentsStmt:
4549-
ALTEREXTENSIONnameadd_dropACCESSMETHODname
4549+
ALTEREXTENSIONnameadd_dropobject_type_namename
45504550
{
45514551
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
45524552
n->extname =$3;
45534553
n->action =$4;
4554-
n->objtype =OBJECT_ACCESS_METHOD;
4555-
n->object = (Node *) makeString($7);
4554+
n->objtype =$5;
4555+
n->object = (Node *) makeString($6);
45564556
$$ = (Node *)n;
45574557
}
4558-
|ALTEREXTENSIONnameadd_dropAGGREGATEaggregate_with_argtypes
4558+
|ALTEREXTENSIONnameadd_dropobject_type_any_nameany_name
45594559
{
45604560
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
45614561
n->extname =$3;
45624562
n->action =$4;
4563-
n->objtype =OBJECT_AGGREGATE;
4563+
n->objtype =$5;
45644564
n->object = (Node *)$6;
45654565
$$ = (Node *)n;
45664566
}
4567-
|ALTEREXTENSIONnameadd_dropCAST'('TypenameASTypename')'
4568-
{
4569-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4570-
n->extname =$3;
4571-
n->action =$4;
4572-
n->objtype = OBJECT_CAST;
4573-
n->object = (Node *) list_make2($7,$9);
4574-
$$ = (Node *) n;
4575-
}
4576-
|ALTEREXTENSIONnameadd_dropCOLLATIONany_name
4567+
|ALTEREXTENSIONnameadd_dropAGGREGATEaggregate_with_argtypes
45774568
{
45784569
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
45794570
n->extname =$3;
45804571
n->action =$4;
4581-
n->objtype =OBJECT_COLLATION;
4572+
n->objtype =OBJECT_AGGREGATE;
45824573
n->object = (Node *)$6;
45834574
$$ = (Node *)n;
45844575
}
4585-
|ALTEREXTENSIONnameadd_dropCONVERSION_Pany_name
4576+
|ALTEREXTENSIONnameadd_dropCAST'('TypenameASTypename')'
45864577
{
45874578
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
45884579
n->extname =$3;
45894580
n->action =$4;
4590-
n->objtype =OBJECT_CONVERSION;
4591-
n->object = (Node *)$6;
4592-
$$ = (Node *)n;
4581+
n->objtype =OBJECT_CAST;
4582+
n->object = (Node *)list_make2($7,$9);
4583+
$$ = (Node *)n;
45934584
}
45944585
|ALTEREXTENSIONnameadd_dropDOMAIN_PTypename
45954586
{
@@ -4609,15 +4600,6 @@ AlterExtensionContentsStmt:
46094600
n->object = (Node *)$6;
46104601
$$ = (Node *)n;
46114602
}
4612-
|ALTEREXTENSIONnameadd_dropopt_proceduralLANGUAGEname
4613-
{
4614-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4615-
n->extname =$3;
4616-
n->action =$4;
4617-
n->objtype = OBJECT_LANGUAGE;
4618-
n->object = (Node *) makeString($7);
4619-
$$ = (Node *)n;
4620-
}
46214603
|ALTEREXTENSIONnameadd_dropOPERATORoperator_with_argtypes
46224604
{
46234605
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
@@ -4663,123 +4645,6 @@ AlterExtensionContentsStmt:
46634645
n->object = (Node *)$6;
46644646
$$ = (Node *)n;
46654647
}
4666-
|ALTEREXTENSIONnameadd_dropSCHEMAname
4667-
{
4668-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4669-
n->extname =$3;
4670-
n->action =$4;
4671-
n->objtype = OBJECT_SCHEMA;
4672-
n->object = (Node *) makeString($6);
4673-
$$ = (Node *)n;
4674-
}
4675-
|ALTEREXTENSIONnameadd_dropEVENTTRIGGERname
4676-
{
4677-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4678-
n->extname =$3;
4679-
n->action =$4;
4680-
n->objtype = OBJECT_EVENT_TRIGGER;
4681-
n->object = (Node *) makeString($7);
4682-
$$ = (Node *)n;
4683-
}
4684-
|ALTEREXTENSIONnameadd_dropTABLEany_name
4685-
{
4686-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4687-
n->extname =$3;
4688-
n->action =$4;
4689-
n->objtype = OBJECT_TABLE;
4690-
n->object = (Node *)$6;
4691-
$$ = (Node *)n;
4692-
}
4693-
|ALTEREXTENSIONnameadd_dropTEXT_PSEARCHPARSERany_name
4694-
{
4695-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4696-
n->extname =$3;
4697-
n->action =$4;
4698-
n->objtype = OBJECT_TSPARSER;
4699-
n->object = (Node *)$8;
4700-
$$ = (Node *)n;
4701-
}
4702-
|ALTEREXTENSIONnameadd_dropTEXT_PSEARCHDICTIONARYany_name
4703-
{
4704-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4705-
n->extname =$3;
4706-
n->action =$4;
4707-
n->objtype = OBJECT_TSDICTIONARY;
4708-
n->object = (Node *)$8;
4709-
$$ = (Node *)n;
4710-
}
4711-
|ALTEREXTENSIONnameadd_dropTEXT_PSEARCHTEMPLATEany_name
4712-
{
4713-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4714-
n->extname =$3;
4715-
n->action =$4;
4716-
n->objtype = OBJECT_TSTEMPLATE;
4717-
n->object = (Node *)$8;
4718-
$$ = (Node *)n;
4719-
}
4720-
|ALTEREXTENSIONnameadd_dropTEXT_PSEARCHCONFIGURATIONany_name
4721-
{
4722-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4723-
n->extname =$3;
4724-
n->action =$4;
4725-
n->objtype = OBJECT_TSCONFIGURATION;
4726-
n->object = (Node *)$8;
4727-
$$ = (Node *)n;
4728-
}
4729-
|ALTEREXTENSIONnameadd_dropSEQUENCEany_name
4730-
{
4731-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4732-
n->extname =$3;
4733-
n->action =$4;
4734-
n->objtype = OBJECT_SEQUENCE;
4735-
n->object = (Node *)$6;
4736-
$$ = (Node *)n;
4737-
}
4738-
|ALTEREXTENSIONnameadd_dropVIEWany_name
4739-
{
4740-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4741-
n->extname =$3;
4742-
n->action =$4;
4743-
n->objtype = OBJECT_VIEW;
4744-
n->object = (Node *)$6;
4745-
$$ = (Node *)n;
4746-
}
4747-
|ALTEREXTENSIONnameadd_dropMATERIALIZEDVIEWany_name
4748-
{
4749-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4750-
n->extname =$3;
4751-
n->action =$4;
4752-
n->objtype = OBJECT_MATVIEW;
4753-
n->object = (Node *)$7;
4754-
$$ = (Node *)n;
4755-
}
4756-
|ALTEREXTENSIONnameadd_dropFOREIGNTABLEany_name
4757-
{
4758-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4759-
n->extname =$3;
4760-
n->action =$4;
4761-
n->objtype = OBJECT_FOREIGN_TABLE;
4762-
n->object = (Node *)$7;
4763-
$$ = (Node *)n;
4764-
}
4765-
|ALTEREXTENSIONnameadd_dropFOREIGNDATA_PWRAPPERname
4766-
{
4767-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4768-
n->extname =$3;
4769-
n->action =$4;
4770-
n->objtype = OBJECT_FDW;
4771-
n->object = (Node *) makeString($8);
4772-
$$ = (Node *)n;
4773-
}
4774-
|ALTEREXTENSIONnameadd_dropSERVERname
4775-
{
4776-
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);
4777-
n->extname =$3;
4778-
n->action =$4;
4779-
n->objtype = OBJECT_FOREIGN_SERVER;
4780-
n->object = (Node *) makeString($6);
4781-
$$ = (Node *)n;
4782-
}
47834648
|ALTEREXTENSIONnameadd_dropTRANSFORMFORTypenameLANGUAGEname
47844649
{
47854650
AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt);

‎src/test/modules/test_pg_dump/expected/test_pg_dump.out

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
CREATE ROLE regress_dump_test_role;
22
CREATE EXTENSION test_pg_dump;
33
ALTER EXTENSION test_pg_dump ADD DATABASE postgres; -- error
4-
ERROR: syntax error at or near "DATABASE"
5-
LINE 1: ALTER EXTENSION test_pg_dump ADD DATABASE postgres;
6-
^
4+
ERROR: cannot add an object of this type to an extension
75
CREATE TABLE test_pg_dump_t1 (c1 int, junk text);
86
ALTER TABLE test_pg_dump_t1 DROP COLUMN junk; -- to exercise dropped-col cases
97
CREATE VIEW test_pg_dump_v1 AS SELECT * FROM test_pg_dump_t1;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp