From c2b28ed3731706e2c007ced17058ea03bb7ad099 Mon Sep 17 00:00:00 2001 From: wusong Date: Fri, 11 Apr 2025 14:24:46 +0800 Subject: [PATCH] fix bug #IAUQBF reindex cstore heap use after free in memcheck --- src/common/backend/catalog/index.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/backend/catalog/index.cpp b/src/common/backend/catalog/index.cpp index f2b2b033a1..fb91d13ad7 100644 --- a/src/common/backend/catalog/index.cpp +++ b/src/common/backend/catalog/index.cpp @@ -5700,6 +5700,7 @@ bool ReindexRelation(Oid relid, int flags, int reindexType, void *baseDesc, Adap foreach (indexId, indexIds) { Oid indexOid = lfirst_oid(indexId); Relation indexRel = index_open(indexOid, AccessShareLock); + bool index_unique = (indexRel->rd_index && indexRel->rd_index->indisunique); if ((((uint32)reindexType) & REINDEX_ALL_INDEX) || ((((uint32)reindexType) & REINDEX_BTREE_INDEX) && (indexRel->rd_rel->relam == BTREE_AM_OID)) || @@ -5712,7 +5713,7 @@ bool ReindexRelation(Oid relid, int flags, int reindexType, void *baseDesc, Adap memInfo, dbWide, baseDesc, isTruncGTT); #ifndef ENABLE_MULTIPLE_NODES - if (RelationIsCUFormat(rel) && indexRel->rd_index != NULL && indexRel->rd_index->indisunique) { + if (RelationIsCUFormat(rel) && index_unique) { ReindexDeltaIndex(indexOid, InvalidOid); } #endif -- Gitee