refactor ownership changed afbfc02983f86c4d71825efa6befd547fe81a926

pg16_kickoff
onderkalaci 2023-04-26 18:47:02 +03:00
parent eca67443de
commit 93f487d6d9
4 changed files with 9 additions and 8 deletions

View File

@ -1969,7 +1969,7 @@ columnar_relation_storageid(PG_FUNCTION_ARGS)
Oid relationId = PG_GETARG_OID(0); Oid relationId = PG_GETARG_OID(0);
Relation relation = relation_open(relationId, AccessShareLock); Relation relation = relation_open(relationId, AccessShareLock);
if (!pg_class_ownercheck(relationId, GetUserId())) if (!object_ownercheck(RelationRelationId, relationId, GetUserId()))
{ {
aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_TABLE, aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_TABLE,
get_rel_name(relationId)); get_rel_name(relationId));

View File

@ -17,6 +17,7 @@
#include "catalog/catalog.h" #include "catalog/catalog.h"
#include "catalog/index.h" #include "catalog/index.h"
#include "catalog/namespace.h" #include "catalog/namespace.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_class.h" #include "catalog/pg_class.h"
#include "commands/defrem.h" #include "commands/defrem.h"
#include "commands/tablecmds.h" #include "commands/tablecmds.h"
@ -1055,8 +1056,8 @@ RangeVarCallbackForDropIndex(const RangeVar *rel, Oid relOid, Oid oldRelOid, voi
errmsg("\"%s\" is not an index", rel->relname))); errmsg("\"%s\" is not an index", rel->relname)));
/* Allow DROP to either table owner or schema owner */ /* Allow DROP to either table owner or schema owner */
if (!pg_class_ownercheck(relOid, GetUserId()) && if (!object_ownercheck(RelationRelationId, relOid, GetUserId()) &&
!pg_namespace_ownercheck(classform->relnamespace, GetUserId())) !object_ownercheck(NamespaceRelationId, classform->relnamespace, GetUserId()))
{ {
aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_INDEX, rel->relname); aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_INDEX, rel->relname);
} }
@ -1140,7 +1141,7 @@ RangeVarCallbackForReindexIndex(const RangeVar *relation, Oid relId, Oid oldRelI
errmsg("\"%s\" is not an index", relation->relname))); errmsg("\"%s\" is not an index", relation->relname)));
/* Check permissions */ /* Check permissions */
if (!pg_class_ownercheck(relId, GetUserId())) if (!object_ownercheck(RelationRelationId, relId, GetUserId()))
aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_INDEX, relation->relname); aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_INDEX, relation->relname);
/* Lock heap before index to avoid deadlock. */ /* Lock heap before index to avoid deadlock. */

View File

@ -2248,13 +2248,13 @@ EnsureTablePermissions(Oid relationId, AclMode mode)
void void
EnsureTableOwner(Oid relationId) EnsureTableOwner(Oid relationId)
{ {
if (!pg_class_ownercheck(relationId, GetUserId())) if (!object_ownercheck(RelationRelationId, relationId, GetUserId()))
{ {
aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_TABLE, aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_TABLE,
get_rel_name(relationId)); get_rel_name(relationId));
} }
} }
#include "catalog/pg_proc_d.h"
/* /*
* Check that the current user has owner rights to functionId, error out if * Check that the current user has owner rights to functionId, error out if
@ -2264,7 +2264,7 @@ EnsureTableOwner(Oid relationId)
void void
EnsureFunctionOwner(Oid functionId) EnsureFunctionOwner(Oid functionId)
{ {
if (!pg_proc_ownercheck(functionId, GetUserId())) if (!object_ownercheck(ProcedureRelationId, functionId, GetUserId()))
{ {
aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_FUNCTION, aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_FUNCTION,
get_func_name(functionId)); get_func_name(functionId));

View File

@ -168,7 +168,7 @@ aclcheckAggregate(ObjectType objectType, Oid userOid, Oid funcOid)
AclResult aclresult; AclResult aclresult;
if (funcOid != InvalidOid) if (funcOid != InvalidOid)
{ {
aclresult = pg_proc_aclcheck(funcOid, userOid, ACL_EXECUTE); aclresult = object_aclcheck(ProcedureRelationId, funcOid, userOid, ACL_EXECUTE);
if (aclresult != ACLCHECK_OK) if (aclresult != ACLCHECK_OK)
{ {
aclcheck_error(aclresult, objectType, get_func_name(funcOid)); aclcheck_error(aclresult, objectType, get_func_name(funcOid));