diff options
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/alter.c | 3 | ||||
-rw-r--r-- | src/backend/commands/typecmds.c | 11 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c index 8513837fa10..cc11858d174 100644 --- a/src/backend/commands/alter.c +++ b/src/backend/commands/alter.c @@ -134,8 +134,9 @@ ExecRenameStmt(RenameStmt *stmt) RenameTSConfiguration(stmt->object, stmt->newname); break; + case OBJECT_DOMAIN: case OBJECT_TYPE: - RenameType(stmt->object, stmt->newname); + RenameType(stmt); break; default: diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index ea8f7f099a2..811273a01d7 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -3074,8 +3074,10 @@ GetDomainConstraints(Oid typeOid) * Execute ALTER TYPE RENAME */ void -RenameType(List *names, const char *newTypeName) +RenameType(RenameStmt *stmt) { + List *names = stmt->object; + const char *newTypeName = stmt->newname; TypeName *typename; Oid typeOid; Relation rel; @@ -3099,6 +3101,13 @@ RenameType(List *names, const char *newTypeName) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TYPE, format_type_be(typeOid)); + /* ALTER DOMAIN used on a non-domain? */ + if (stmt->renameType == OBJECT_DOMAIN && typTup->typtype != TYPTYPE_DOMAIN) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not a domain", + format_type_be(typeOid)))); + /* * If it's a composite type, we need to check that it really is a * free-standing composite type, and not a table's rowtype. We want people |