This is an automated email from the ASF dual-hosted git repository.
yjhjstz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
The following commit(s) were added to refs/heads/main by this push:
new 770364780f4 ORCA: Fix memory leak in CWindowOids by adding destructor
(#1533)
770364780f4 is described below
commit 770364780f48800c23c79dae3825295b3e7eed0b
Author: Jianghua.yjh <[email protected]>
AuthorDate: Wed Jan 21 23:27:38 2026 +0800
ORCA: Fix memory leak in CWindowOids by adding destructor (#1533)
* ORCA: Fix memory leak in CWindowOids by adding destructor
CWindowOids class was leaking three CMDIdGPDB objects (m_MDIdRowNumber,
m_MDIdRank, m_MDDenseRank) that were allocated in the constructor but
never released.
Fixes ORCA unit test failures:
- gporca_test_CXformTest
- gporca_test_CConstExprEvaluatorDefaultTest
---
src/backend/gporca/libgpopt/include/gpopt/base/CWindowOids.h | 2 ++
src/backend/gporca/libgpopt/src/base/CWindowOids.cpp | 7 +++++++
2 files changed, 9 insertions(+)
diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CWindowOids.h
b/src/backend/gporca/libgpopt/include/gpopt/base/CWindowOids.h
index ba120eac015..6d20b4948c2 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/base/CWindowOids.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/base/CWindowOids.h
@@ -60,6 +60,8 @@ public:
CWindowOids(CMemoryPool *mp, OID row_number_oid, OID rank_oid,
OID dense_rank_oid);
+ ~CWindowOids() override;
+
// accessor of oid value of "row_number" function
OID OidRowNumber() const;
IMDId *MDIdRowNumber() const;
diff --git a/src/backend/gporca/libgpopt/src/base/CWindowOids.cpp
b/src/backend/gporca/libgpopt/src/base/CWindowOids.cpp
index da744a018d9..e2f326d3aaf 100644
--- a/src/backend/gporca/libgpopt/src/base/CWindowOids.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CWindowOids.cpp
@@ -18,6 +18,13 @@ CWindowOids::CWindowOids(CMemoryPool *mp, OID
row_number_oid, OID rank_oid,
m_MDDenseRank = GPOS_NEW(mp) CMDIdGPDB(IMDId::EmdidGeneral,
m_oidDenseRank);
}
+CWindowOids::~CWindowOids()
+{
+ CRefCount::SafeRelease(m_MDIdRowNumber);
+ CRefCount::SafeRelease(m_MDIdRank);
+ CRefCount::SafeRelease(m_MDDenseRank);
+}
+
OID
CWindowOids::OidRowNumber() const
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]