Skip to content

Commit 39f06c0

Browse files
committed
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
1 parent 882fbf2 commit 39f06c0

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/backend/gporca/libgpopt/include/gpopt/base/CWindowOids.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ class CWindowOids : public CRefCount
6060
CWindowOids(CMemoryPool *mp, OID row_number_oid, OID rank_oid,
6161
OID dense_rank_oid);
6262

63+
~CWindowOids() override;
64+
6365
// accessor of oid value of "row_number" function
6466
OID OidRowNumber() const;
6567
IMDId *MDIdRowNumber() const;

src/backend/gporca/libgpopt/src/base/CWindowOids.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ CWindowOids::CWindowOids(CMemoryPool *mp, OID row_number_oid, OID rank_oid,
1818
m_MDDenseRank = GPOS_NEW(mp) CMDIdGPDB(IMDId::EmdidGeneral, m_oidDenseRank);
1919
}
2020

21+
CWindowOids::~CWindowOids()
22+
{
23+
m_MDIdRowNumber->Release();
24+
m_MDIdRank->Release();
25+
m_MDDenseRank->Release();
26+
}
27+
2128
OID
2229
CWindowOids::OidRowNumber() const
2330
{

0 commit comments

Comments
 (0)