aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/cluster.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/cluster.c')
-rw-r--r--src/backend/commands/cluster.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index e805e28a39e..997c1bde6b5 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -25,6 +25,7 @@
#include "catalog/dependency.h"
#include "catalog/heap.h"
#include "catalog/index.h"
+#include "catalog/namespace.h"
#include "catalog/toasting.h"
#include "commands/cluster.h"
#include "commands/tablecmds.h"
@@ -106,15 +107,12 @@ cluster(ClusterStmt *stmt, bool isTopLevel)
indexOid = InvalidOid;
Relation rel;
- /* Find and lock the table */
- rel = heap_openrv(stmt->relation, AccessExclusiveLock);
-
- tableOid = RelationGetRelid(rel);
-
- /* Check permissions */
- if (!pg_class_ownercheck(tableOid, GetUserId()))
- aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
- RelationGetRelationName(rel));
+ /* Find, lock, and check permissions on the table */
+ tableOid = RangeVarGetRelidExtended(stmt->relation,
+ AccessExclusiveLock,
+ false, false,
+ RangeVarCallbackOwnsTable, NULL);
+ rel = heap_open(tableOid, NoLock);
/*
* Reject clustering a remote temp table ... their local buffer