diff options
Diffstat (limited to 'src/backend/commands/schemacmds.c')
-rw-r--r-- | src/backend/commands/schemacmds.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c index dc6cb46e4e7..f0ebe2d1c31 100644 --- a/src/backend/commands/schemacmds.c +++ b/src/backend/commands/schemacmds.c @@ -246,6 +246,7 @@ RenameSchema(const char *oldname, const char *newname) Relation rel; AclResult aclresult; ObjectAddress address; + Form_pg_namespace nspform; rel = heap_open(NamespaceRelationId, RowExclusiveLock); @@ -255,7 +256,8 @@ RenameSchema(const char *oldname, const char *newname) (errcode(ERRCODE_UNDEFINED_SCHEMA), errmsg("schema \"%s\" does not exist", oldname))); - nspOid = HeapTupleGetOid(tup); + nspform = (Form_pg_namespace) GETSTRUCT(tup); + nspOid = nspform->oid; /* make sure the new name doesn't exist */ if (OidIsValid(get_namespace_oid(newname, true))) @@ -264,7 +266,7 @@ RenameSchema(const char *oldname, const char *newname) errmsg("schema \"%s\" already exists", newname))); /* must be owner */ - if (!pg_namespace_ownercheck(HeapTupleGetOid(tup), GetUserId())) + if (!pg_namespace_ownercheck(nspOid, GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_SCHEMA, oldname); @@ -281,10 +283,10 @@ RenameSchema(const char *oldname, const char *newname) errdetail("The prefix \"pg_\" is reserved for system schemas."))); /* rename */ - namestrcpy(&(((Form_pg_namespace) GETSTRUCT(tup))->nspname), newname); + namestrcpy(&nspform->nspname, newname); CatalogTupleUpdate(rel, &tup->t_self, tup); - InvokeObjectPostAlterHook(NamespaceRelationId, HeapTupleGetOid(tup), 0); + InvokeObjectPostAlterHook(NamespaceRelationId, nspOid, 0); ObjectAddressSet(address, NamespaceRelationId, nspOid); @@ -324,6 +326,7 @@ AlterSchemaOwner(const char *name, Oid newOwnerId) HeapTuple tup; Relation rel; ObjectAddress address; + Form_pg_namespace nspform; rel = heap_open(NamespaceRelationId, RowExclusiveLock); @@ -333,7 +336,8 @@ AlterSchemaOwner(const char *name, Oid newOwnerId) (errcode(ERRCODE_UNDEFINED_SCHEMA), errmsg("schema \"%s\" does not exist", name))); - nspOid = HeapTupleGetOid(tup); + nspform = (Form_pg_namespace) GETSTRUCT(tup); + nspOid = nspform->oid; AlterSchemaOwner_internal(tup, rel, newOwnerId); @@ -372,7 +376,7 @@ AlterSchemaOwner_internal(HeapTuple tup, Relation rel, Oid newOwnerId) AclResult aclresult; /* Otherwise, must be owner of the existing object */ - if (!pg_namespace_ownercheck(HeapTupleGetOid(tup), GetUserId())) + if (!pg_namespace_ownercheck(nspForm->oid, GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_SCHEMA, NameStr(nspForm->nspname)); @@ -422,10 +426,10 @@ AlterSchemaOwner_internal(HeapTuple tup, Relation rel, Oid newOwnerId) heap_freetuple(newtuple); /* Update owner dependency reference */ - changeDependencyOnOwner(NamespaceRelationId, HeapTupleGetOid(tup), + changeDependencyOnOwner(NamespaceRelationId, nspForm->oid, newOwnerId); } InvokeObjectPostAlterHook(NamespaceRelationId, - HeapTupleGetOid(tup), 0); + nspForm->oid, 0); } |