From 693e7aa85d1e67c2616ec3480255f367ac3d9e69 Mon Sep 17 00:00:00 2001 From: Colm McHugh Date: Mon, 25 Nov 2024 10:35:00 +0000 Subject: [PATCH] Fix diffs in error messages in create_index, privileges vanilla tests --- src/backend/distributed/commands/index.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/commands/index.c b/src/backend/distributed/commands/index.c index 2b6941393..6598b8a7c 100644 --- a/src/backend/distributed/commands/index.c +++ b/src/backend/distributed/commands/index.c @@ -1109,6 +1109,7 @@ RangeVarCallbackForReindexIndex(const RangeVar *relation, Oid relId, Oid oldRelI char relkind; struct ReindexIndexCallbackState *state = arg; LOCKMODE table_lockmode; + Oid table_oid; /* * Lock level here should match table lock in reindex_index() for @@ -1146,13 +1147,24 @@ RangeVarCallbackForReindexIndex(const RangeVar *relation, Oid relId, Oid oldRelI errmsg("\"%s\" is not an index", relation->relname))); /* Check permissions */ + + #if PG_VERSION_NUM >= PG_VERSION_17 + table_oid = IndexGetRelation(relId, true); + if (OidIsValid(table_oid)) + { + AclResult aclresult = pg_class_aclcheck(table_oid, GetUserId(), ACL_MAINTAIN); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, OBJECT_INDEX, relation->relname); + } + #else if (!object_ownercheck(RelationRelationId, relId, GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_INDEX, relation->relname); + #endif /* Lock heap before index to avoid deadlock. */ if (relId != oldRelId) { - Oid table_oid = IndexGetRelation(relId, true); + table_oid = IndexGetRelation(relId, true); /* * If the OID isn't valid, it means the index was concurrently