From e0483b08472737f134ec071d2ef6b6006ab6973f Mon Sep 17 00:00:00 2001 From: Hao Wu Date: Tue, 9 Jul 2024 16:01:36 +0800 Subject: [PATCH] Fix compile error in c++20 In c++20, more constraints are applied: * constructor and destructor are not allowed to have template id * adding two enum value needs explicit convertion --- .../gporca/libgpopt/include/gpopt/base/CStateMachine.h | 8 ++------ .../libgpopt/include/gpopt/search/CJobStateMachine.h | 3 +-- .../gporca/libgpopt/include/gpopt/xforms/CXform.h | 2 +- .../libgpopt/include/gpopt/xforms/CXformApply2Join.h | 9 ++++----- .../gporca/libgpos/include/gpos/common/CAutoP.h | 6 +++--- .../gporca/libgpos/include/gpos/common/CAutoRef.h | 6 +++--- .../gporca/libgpos/include/gpos/common/CAutoRg.h | 6 +++--- .../libgpos/include/gpos/common/CDynamicPtrArray.h | 7 +++---- .../gporca/libgpos/include/gpos/common/CEnumSet.h | 10 +++++----- .../gporca/libgpos/include/gpos/common/CEnumSetIter.h | 7 +++---- .../gporca/libgpos/include/gpos/common/CHashMap.h | 8 +++----- .../gporca/libgpos/include/gpos/common/CHashMapIter.h | 8 +++----- .../gporca/libgpos/include/gpos/common/CHashSet.h | 6 +++--- .../gporca/libgpos/include/gpos/common/CHashSetIter.h | 6 +++--- .../gporca/libgpos/include/gpos/common/CStack.h | 2 +- .../libgpos/include/gpos/common/CSyncHashtable.h | 4 ++-- .../include/gpos/common/CSyncHashtableAccessByIter.h | 5 ++--- .../include/gpos/common/CSyncHashtableAccessByKey.h | 5 ++--- .../include/gpos/common/CSyncHashtableAccessorBase.h | 7 +++---- .../libgpos/include/gpos/common/CSyncHashtableIter.h | 6 +++--- .../server/src/unittest/gpopt/minidump/CICGTest.cpp | 2 +- 21 files changed, 54 insertions(+), 69 deletions(-) diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CStateMachine.h b/src/backend/gporca/libgpopt/include/gpopt/base/CStateMachine.h index add0200f9f4..b2e23bed192 100644 --- a/src/backend/gporca/libgpopt/include/gpopt/base/CStateMachine.h +++ b/src/backend/gporca/libgpopt/include/gpopt/base/CStateMachine.h @@ -254,14 +254,10 @@ class CStateMachine } public: - CStateMachine( - const CStateMachine &) = delete; + CStateMachine(const CStateMachine &) = delete; // ctor - CStateMachine() + CStateMachine() : m_tenumstate(TesInitial()) { GPOS_ASSERT(0 < tenumstateSentinel && 0 < tenumeventSentinel && diff --git a/src/backend/gporca/libgpopt/include/gpopt/search/CJobStateMachine.h b/src/backend/gporca/libgpopt/include/gpopt/search/CJobStateMachine.h index 4dec2937338..6eed88dc4b7 100644 --- a/src/backend/gporca/libgpopt/include/gpopt/search/CJobStateMachine.h +++ b/src/backend/gporca/libgpopt/include/gpopt/search/CJobStateMachine.h @@ -95,8 +95,7 @@ class CJobStateMachine CJobStateMachine(const CJobStateMachine &) = delete; // ctor - CJobStateMachine() = - default; + CJobStateMachine() = default; // dtor ~CJobStateMachine() = default; diff --git a/src/backend/gporca/libgpopt/include/gpopt/xforms/CXform.h b/src/backend/gporca/libgpopt/include/gpopt/xforms/CXform.h index 6be419cc47a..f490703a6c1 100644 --- a/src/backend/gporca/libgpopt/include/gpopt/xforms/CXform.h +++ b/src/backend/gporca/libgpopt/include/gpopt/xforms/CXform.h @@ -25,7 +25,7 @@ #include "naucrates/traceflags/traceflags.h" // Macro for enabling and disabling xforms -#define GPOPT_DISABLE_XFORM_TF(x) EopttraceDisableXformBase + x +#define GPOPT_DISABLE_XFORM_TF(x) EopttraceDisableXformBase + static_cast(x) #define GPOPT_ENABLE_XFORM(x) GPOS_UNSET_TRACE(GPOPT_DISABLE_XFORM_TF(x)) #define GPOPT_DISABLE_XFORM(x) GPOS_SET_TRACE(GPOPT_DISABLE_XFORM_TF(x)) #define GPOPT_FENABLED_XFORM(x) !GPOS_FTRACE(GPOPT_DISABLE_XFORM_TF(x)) diff --git a/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformApply2Join.h b/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformApply2Join.h index f1d903889aa..8243e0657e5 100644 --- a/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformApply2Join.h +++ b/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformApply2Join.h @@ -257,7 +257,7 @@ class CXformApply2Join : public CXformExploration CXformApply2Join(const CXformApply2Join &) = delete; // ctor for deep pattern - explicit CXformApply2Join(CMemoryPool *mp, BOOL) + explicit CXformApply2Join(CMemoryPool *mp, BOOL) : // pattern CXformExploration(GPOS_NEW(mp) CExpression( mp, GPOS_NEW(mp) TApply(mp), @@ -272,7 +272,7 @@ class CXformApply2Join : public CXformExploration } // ctor for shallow pattern - explicit CXformApply2Join(CMemoryPool *mp) + explicit CXformApply2Join(CMemoryPool *mp) : // pattern CXformExploration(GPOS_NEW(mp) CExpression( mp, GPOS_NEW(mp) TApply(mp), @@ -287,14 +287,13 @@ class CXformApply2Join : public CXformExploration } // ctor for passed pattern - CXformApply2Join(CMemoryPool *, // mp - CExpression *pexprPattern) + CXformApply2Join(CMemoryPool * /* mp */, CExpression *pexprPattern) : CXformExploration(pexprPattern) { } // dtor - ~CXformApply2Join() override = default; + ~CXformApply2Join() override = default; // is transformation an Apply decorrelation (Apply To Join) xform? BOOL diff --git a/src/backend/gporca/libgpos/include/gpos/common/CAutoP.h b/src/backend/gporca/libgpos/include/gpos/common/CAutoP.h index b097bd1e00e..1f70c69aebe 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CAutoP.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CAutoP.h @@ -39,14 +39,14 @@ class CAutoP : public CStackObject T *m_object; public: - CAutoP(const CAutoP &) = delete; + CAutoP(const CAutoP &) = delete; // ctor - explicit CAutoP() : m_object(nullptr) + explicit CAutoP() : m_object(nullptr) { } - explicit CAutoP(T *object) : m_object(object) + explicit CAutoP(T *object) : m_object(object) { } diff --git a/src/backend/gporca/libgpos/include/gpos/common/CAutoRef.h b/src/backend/gporca/libgpos/include/gpos/common/CAutoRef.h index 557d22c1e53..a7346e3428b 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CAutoRef.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CAutoRef.h @@ -30,15 +30,15 @@ class CAutoRef : public CAutoP { private: public: - CAutoRef(const CAutoRef &) = delete; + CAutoRef(const CAutoRef &) = delete; // ctor - explicit CAutoRef() : CAutoP() + explicit CAutoRef() : CAutoP() { } // ctor - explicit CAutoRef(T *object) : CAutoP(object) + explicit CAutoRef(T *object) : CAutoP(object) { } diff --git a/src/backend/gporca/libgpos/include/gpos/common/CAutoRg.h b/src/backend/gporca/libgpos/include/gpos/common/CAutoRg.h index b70a942e95b..a5038f38306 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CAutoRg.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CAutoRg.h @@ -34,15 +34,15 @@ class CAutoRg : public CStackObject T *m_object_array; public: - CAutoRg(const CAutoRg &) = delete; + CAutoRg(const CAutoRg &) = delete; // ctor - explicit CAutoRg() : m_object_array(nullptr) + explicit CAutoRg() : m_object_array(nullptr) { } // ctor - explicit CAutoRg(T *object_array) : m_object_array(object_array) + explicit CAutoRg(T *object_array) : m_object_array(object_array) { } diff --git a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h index c73668c1634..f74f87f3b53 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h @@ -145,11 +145,10 @@ class CDynamicPtrArray : public CRefCount } public: - CDynamicPtrArray(const CDynamicPtrArray &) = - delete; + CDynamicPtrArray(const CDynamicPtrArray &) = delete; // ctor - explicit CDynamicPtrArray(CMemoryPool *mp, ULONG min_size = 4, + explicit CDynamicPtrArray(CMemoryPool *mp, ULONG min_size = 4, ULONG expansion_factor = 10) : m_mp(mp), m_capacity(0), @@ -165,7 +164,7 @@ class CDynamicPtrArray : public CRefCount } // dtor - ~CDynamicPtrArray() override + ~CDynamicPtrArray() override { Clear(); diff --git a/src/backend/gporca/libgpos/include/gpos/common/CEnumSet.h b/src/backend/gporca/libgpos/include/gpos/common/CEnumSet.h index 8a35eeb4dbf..4760b9c5d43 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CEnumSet.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CEnumSet.h @@ -30,22 +30,22 @@ class CEnumSet : public CBitSet { private: public: - CEnumSet(const CEnumSet &) = delete; + CEnumSet(const CEnumSet &) = delete; // ctor - explicit CEnumSet(CMemoryPool *mp) + explicit CEnumSet(CMemoryPool *mp) : CBitSet(mp, sentinel_index) { } - explicit CEnumSet( - CMemoryPool *mp, const CEnumSet &enum_set) + explicit CEnumSet( + CMemoryPool *mp, const CEnumSet &enum_set) : CBitSet(mp, enum_set) { } // dtor - ~CEnumSet() override = default; + ~CEnumSet() override = default; // determine if bit is set BOOL diff --git a/src/backend/gporca/libgpos/include/gpos/common/CEnumSetIter.h b/src/backend/gporca/libgpos/include/gpos/common/CEnumSetIter.h index 53fe0917cc8..6471c2c441f 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CEnumSetIter.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CEnumSetIter.h @@ -30,18 +30,17 @@ class CEnumSetIter : public CBitSetIter { private: public: - CEnumSetIter(const CEnumSetIter &) = - delete; + CEnumSetIter(const CEnumSetIter &) = delete; // ctor - explicit CEnumSetIter( + explicit CEnumSetIter( const CEnumSet &enum_set) : CBitSetIter(enum_set) { } // dtor - ~CEnumSetIter() = default; + ~CEnumSetIter() = default; // current enum T diff --git a/src/backend/gporca/libgpos/include/gpos/common/CHashMap.h b/src/backend/gporca/libgpos/include/gpos/common/CHashMap.h index 8c6e5f515b3..ca3e28af922 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CHashMap.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CHashMap.h @@ -177,12 +177,10 @@ class CHashMap : public CRefCount } public: - CHashMap(const CHashMap &) = - delete; + CHashMap(const CHashMap &) = delete; // ctor - CHashMap(CMemoryPool *mp, - ULONG num_chains = 127) + CHashMap(CMemoryPool *mp, ULONG num_chains = 127) : m_mp(mp), m_num_chains(num_chains), m_size(0), @@ -196,7 +194,7 @@ class CHashMap : public CRefCount } // dtor - ~CHashMap() override + ~CHashMap() override { // release all hash chains Clear(); diff --git a/src/backend/gporca/libgpos/include/gpos/common/CHashMapIter.h b/src/backend/gporca/libgpos/include/gpos/common/CHashMapIter.h index 1b4acc0351e..3dc6b24b946 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CHashMapIter.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CHashMapIter.h @@ -59,19 +59,17 @@ class CHashMapIter : public CStackObject } public: - CHashMapIter(const CHashMapIter - &) = delete; + CHashMapIter(const CHashMapIter &) = delete; // ctor - CHashMapIter(TMap *ptm) + CHashMapIter(TMap *ptm) : m_map(ptm), m_chain_idx(0), m_key_idx(0) { GPOS_ASSERT(nullptr != ptm); } // dtor - virtual ~CHashMapIter() = - default; + virtual ~CHashMapIter() = default; // advance iterator to next element BOOL diff --git a/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h b/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h index d77e4b298ac..19ffbc76992 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h @@ -160,10 +160,10 @@ class CHashSet : public CRefCount } public: - CHashSet(const CHashSet &) = delete; + CHashSet(const CHashSet &) = delete; // ctor - CHashSet(CMemoryPool *mp, ULONG size = 127) + CHashSet(CMemoryPool *mp, ULONG size = 127) : m_mp(mp), m_num_chains(size), m_size(0), @@ -177,7 +177,7 @@ class CHashSet : public CRefCount } // dtor - ~CHashSet() override + ~CHashSet() override { // release all hash chains Clear(); diff --git a/src/backend/gporca/libgpos/include/gpos/common/CHashSetIter.h b/src/backend/gporca/libgpos/include/gpos/common/CHashSetIter.h index 7ce0d37c491..761a75734df 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CHashSetIter.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CHashSetIter.h @@ -35,17 +35,17 @@ class CHashSetIter : public CStackObject BOOL m_is_initialized; public: - CHashSetIter(const CHashSetIter &) = delete; + CHashSetIter(const CHashSetIter &) = delete; // ctor - CHashSetIter(TSet *set) + CHashSetIter(TSet *set) : m_set(set), m_chain_idx(0), m_elem_idx(0) { GPOS_ASSERT(nullptr != set); } // dtor - virtual ~CHashSetIter() = default; + virtual ~CHashSetIter() = default; // advance iterator to next element BOOL diff --git a/src/backend/gporca/libgpos/include/gpos/common/CStack.h b/src/backend/gporca/libgpos/include/gpos/common/CStack.h index ea2ff511c14..df7b9d582cc 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CStack.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CStack.h @@ -38,7 +38,7 @@ class CStack CStack(CStack &) = delete; // c'tor - CStack(CMemoryPool *mp, ULONG min_size = 4) : m_size(0) + CStack(CMemoryPool *mp, ULONG min_size = 4) : m_size(0) { m_dynamic_ptr_array = GPOS_NEW(mp) CDynamicPtrArray(mp, min_size, 10); diff --git a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtable.h b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtable.h index bc9000d6edb..e37eb882dd1 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtable.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtable.h @@ -144,7 +144,7 @@ class CSyncHashtable using DestroyEntryFuncPtr = void (*)(T *); // ctor - CSyncHashtable() + CSyncHashtable() : m_buckets(nullptr), m_invalid_key(nullptr) @@ -154,7 +154,7 @@ class CSyncHashtable // dtor // deallocates hashtable internals, does not destroy // client objects - ~CSyncHashtable() + ~CSyncHashtable() { Cleanup(); } diff --git a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByIter.h b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByIter.h index 52c56b620e6..8529de325aa 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByIter.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByIter.h @@ -58,11 +58,10 @@ class CSyncHashtableAccessByIter : public CSyncHashtableAccessorBase } public: - CSyncHashtableAccessByIter(const CSyncHashtableAccessByIter &) = - delete; + CSyncHashtableAccessByIter(const CSyncHashtableAccessByIter &) = delete; // ctor - explicit CSyncHashtableAccessByIter(CSyncHashtableIter &iter) + explicit CSyncHashtableAccessByIter(CSyncHashtableIter &iter) : Base(iter.m_ht, iter.m_bucket_idx), m_iter(iter) { } diff --git a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByKey.h b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByKey.h index 1d84b63f173..1d1ffda24f5 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByKey.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessByKey.h @@ -68,11 +68,10 @@ class CSyncHashtableAccessByKey : public CSyncHashtableAccessorBase #endif // GPOS_DEBUG public: - CSyncHashtableAccessByKey(const CSyncHashtableAccessByKey &) = - delete; + CSyncHashtableAccessByKey(const CSyncHashtableAccessByKey &) = delete; // ctor - CSyncHashtableAccessByKey(CSyncHashtable &ht, const K &key) + CSyncHashtableAccessByKey(CSyncHashtable &ht, const K &key) : Base(ht, ht.GetBucketIndex(key)), m_key(key) { } diff --git a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessorBase.h b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessorBase.h index 0de152dc2c5..38f03210993 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessorBase.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableAccessorBase.h @@ -46,13 +46,13 @@ class CSyncHashtableAccessorBase : public CStackObject protected: // ctor - protected to restrict instantiation to children - CSyncHashtableAccessorBase(CSyncHashtable &ht, ULONG bucket_idx) + CSyncHashtableAccessorBase(CSyncHashtable &ht, ULONG bucket_idx) : m_ht(ht), m_bucket(m_ht.GetBucket(bucket_idx)) { } // dtor - virtual ~CSyncHashtableAccessorBase() = default; + virtual ~CSyncHashtableAccessorBase() = default; // accessor to hashtable CSyncHashtable & @@ -130,8 +130,7 @@ class CSyncHashtableAccessorBase : public CStackObject } public: - CSyncHashtableAccessorBase(const CSyncHashtableAccessorBase &) = - delete; + CSyncHashtableAccessorBase(const CSyncHashtableAccessorBase &) = delete; // unlinks element void diff --git a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableIter.h b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableIter.h index b8ddb465154..e4a6964b9b3 100644 --- a/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableIter.h +++ b/src/backend/gporca/libgpos/include/gpos/common/CSyncHashtableIter.h @@ -113,10 +113,10 @@ class CSyncHashtableIter BOOL m_invalid_elem_inserted; public: - CSyncHashtableIter(const CSyncHashtableIter &) = delete; + CSyncHashtableIter(const CSyncHashtableIter &) = delete; // ctor - explicit CSyncHashtableIter(CSyncHashtable &ht) + explicit CSyncHashtableIter(CSyncHashtable &ht) : m_ht(ht), m_bucket_idx(0), m_invalid_elem(nullptr), @@ -133,7 +133,7 @@ class CSyncHashtableIter } // dtor - ~CSyncHashtableIter() + ~CSyncHashtableIter() { if (m_invalid_elem_inserted) { diff --git a/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp b/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp index 725709870de..603f5ffc040 100644 --- a/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp +++ b/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp @@ -187,7 +187,7 @@ CICGTest::EresUnittest_RunUnsupportedMinidumpTests() true /*value*/); CAutoTraceFlag atf2( - EopttraceDisableXformBase + CXform::ExfDynamicGet2DynamicTableScan, + EopttraceDisableXformBase + static_cast(CXform::ExfDynamicGet2DynamicTableScan), true); CAutoMemoryPool amp(CAutoMemoryPool::ElcNone);