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

Commit2787458

Browse files
committed
Disallow ALTER DOMAIN on non-domain type everywhere
This has been the behavior already in most cases, but throughomission, ALTER DOMAIN / OWNER TO and ALTER DOMAIN / SET SCHEMA wouldsilently work on non-domain types as well.
1 parent8137f2c commit2787458

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

‎src/backend/commands/alter.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt)
213213

214214
caseOBJECT_TYPE:
215215
caseOBJECT_DOMAIN:
216-
AlterTypeNamespace(stmt->object,stmt->newschema);
216+
AlterTypeNamespace(stmt->object,stmt->newschema,stmt->objectType);
217217
break;
218218

219219
default:
@@ -510,7 +510,7 @@ ExecAlterOwnerStmt(AlterOwnerStmt *stmt)
510510

511511
caseOBJECT_TYPE:
512512
caseOBJECT_DOMAIN:/* same as TYPE */
513-
AlterTypeOwner(stmt->object,newowner);
513+
AlterTypeOwner(stmt->object,newowner,stmt->objectType);
514514
break;
515515

516516
caseOBJECT_TSDICTIONARY:

‎src/backend/commands/typecmds.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3165,7 +3165,7 @@ RenameType(RenameStmt *stmt)
31653165
* Change the owner of a type.
31663166
*/
31673167
void
3168-
AlterTypeOwner(List*names,OidnewOwnerId)
3168+
AlterTypeOwner(List*names,OidnewOwnerId,ObjectTypeobjecttype)
31693169
{
31703170
TypeName*typename;
31713171
OidtypeOid;
@@ -3195,6 +3195,13 @@ AlterTypeOwner(List *names, Oid newOwnerId)
31953195
tup=newtup;
31963196
typTup= (Form_pg_type)GETSTRUCT(tup);
31973197

3198+
/* Don't allow ALTER DOMAIN on a type */
3199+
if (objecttype==OBJECT_DOMAIN&&typTup->typtype!=TYPTYPE_DOMAIN)
3200+
ereport(ERROR,
3201+
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
3202+
errmsg("%s is not a domain",
3203+
format_type_be(typeOid))));
3204+
31983205
/*
31993206
* If it's a composite type, we need to check that it really is a
32003207
* free-standing composite type, and not a table's rowtype. We want people
@@ -3328,7 +3335,7 @@ AlterTypeOwnerInternal(Oid typeOid, Oid newOwnerId,
33283335
* Execute ALTER TYPE SET SCHEMA
33293336
*/
33303337
void
3331-
AlterTypeNamespace(List*names,constchar*newschema)
3338+
AlterTypeNamespace(List*names,constchar*newschema,ObjectTypeobjecttype)
33323339
{
33333340
TypeName*typename;
33343341
OidtypeOid;
@@ -3338,6 +3345,13 @@ AlterTypeNamespace(List *names, const char *newschema)
33383345
typename=makeTypeNameFromNameList(names);
33393346
typeOid=typenameTypeId(NULL,typename);
33403347

3348+
/* Don't allow ALTER DOMAIN on a type */
3349+
if (objecttype==OBJECT_DOMAIN&&get_typtype(typeOid)!=TYPTYPE_DOMAIN)
3350+
ereport(ERROR,
3351+
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
3352+
errmsg("%s is not a domain",
3353+
format_type_be(typeOid))));
3354+
33413355
/* get schema OID and check its permissions */
33423356
nspOid=LookupCreationNamespace(newschema);
33433357

‎src/include/commands/typecmds.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ extern void AlterDomainDropConstraint(List *names, const char *constrName,
3838
externList*GetDomainConstraints(OidtypeOid);
3939

4040
externvoidRenameType(RenameStmt*stmt);
41-
externvoidAlterTypeOwner(List*names,OidnewOwnerId);
41+
externvoidAlterTypeOwner(List*names,OidnewOwnerId,ObjectTypeobjecttype);
4242
externvoidAlterTypeOwnerInternal(OidtypeOid,OidnewOwnerId,
4343
boolhasDependEntry);
44-
externvoidAlterTypeNamespace(List*names,constchar*newschema);
44+
externvoidAlterTypeNamespace(List*names,constchar*newschema,ObjectTypeobjecttype);
4545
externOidAlterTypeNamespace_oid(OidtypeOid,OidnspOid);
4646
externOidAlterTypeNamespaceInternal(OidtypeOid,OidnspOid,
4747
boolisImplicitArray,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp