greenplumn CPartKeys 源码
greenplumn CPartKeys 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/base/CPartKeys.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2014 VMware, Inc. or its affiliates.
//
// @filename:
// CPartKeys.h
//
// @doc:
// A collection of partitioning keys for a partitioned table
//---------------------------------------------------------------------------
#ifndef GPOPT_CPartKeys_H
#define GPOPT_CPartKeys_H
#include "gpos/base.h"
#include "gpopt/base/CColRef.h"
namespace gpopt
{
using namespace gpos;
// fwd decl
class CColRefSet;
class CPartKeys;
// array of part keys
using CPartKeysArray = CDynamicPtrArray<CPartKeys, CleanupRelease>;
//---------------------------------------------------------------------------
// @class:
// CPartKeys
//
// @doc:
// A collection of partitioning keys for a partitioned table
//
//---------------------------------------------------------------------------
class CPartKeys : public CRefCount, public DbgPrintMixin<CPartKeys>
{
private:
// partitioning keys
CColRef2dArray *m_pdrgpdrgpcr;
// number of levels
ULONG m_num_of_part_levels;
public:
CPartKeys(const CPartKeys &) = delete;
// ctor
explicit CPartKeys(CColRef2dArray *pdrgpdrgpcr);
// dtor
~CPartKeys() override;
// return key at a given level
CColRef *PcrKey(ULONG ulLevel) const;
// return array of keys
CColRef2dArray *
Pdrgpdrgpcr() const
{
return m_pdrgpdrgpcr;
}
// number of levels
ULONG
GetPartitioningLevel() const
{
return m_num_of_part_levels;
}
// copy part key into the given memory pool
CPartKeys *PpartkeysCopy(CMemoryPool *mp);
// check whether the key columns overlap the given column
BOOL FOverlap(CColRefSet *pcrs) const;
// create a new PartKeys object from the current one by remapping the
// keys using the given hashmap
CPartKeys *PpartkeysRemap(CMemoryPool *mp,
UlongToColRefMap *colref_mapping) const;
// print
IOstream &OsPrint(IOstream &os) const;
// copy array of part keys into given memory pool
static CPartKeysArray *PdrgppartkeysCopy(
CMemoryPool *mp, const CPartKeysArray *pdrgppartkeys);
}; // CPartKeys
// shorthand for printing
inline IOstream &
operator<<(IOstream &os, CPartKeys &partkeys)
{
return partkeys.OsPrint(os);
}
} // namespace gpopt
#endif // !GPOPT_CPartKeys_H
// EOF
相关信息
相关文章
greenplumn CColConstraintsArrayMapper 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦