mirror of https://github.com/citusdata/citus.git
refactor ownership changed afbfc02983f86c4d71825efa6befd547fe81a926
parent
eca67443de
commit
93f487d6d9
|
@ -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));
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue