greenplumn CPhysicalDynamicTableScan 源码
greenplumn CPhysicalDynamicTableScan 代码
文件路径:/src/backend/gporca/libgpopt/src/operators/CPhysicalDynamicTableScan.cpp
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2012 EMC Corp.
//
// @filename:
// CPhysicalDynamicTableScan.cpp
//
// @doc:
// Implementation of dynamic table scan operator
//---------------------------------------------------------------------------
#include "gpopt/operators/CPhysicalDynamicTableScan.h"
#include "gpos/base.h"
#include "gpopt/base/CDistributionSpec.h"
#include "gpopt/base/CDistributionSpecHashed.h"
#include "gpopt/base/CDistributionSpecRandom.h"
#include "gpopt/base/CDistributionSpecSingleton.h"
#include "gpopt/base/CUtils.h"
#include "gpopt/metadata/CName.h"
#include "gpopt/metadata/CTableDescriptor.h"
#include "naucrates/statistics/CStatisticsUtils.h"
using namespace gpopt;
//---------------------------------------------------------------------------
// @function:
// CPhysicalDynamicTableScan::CPhysicalDynamicTableScan
//
// @doc:
// Ctor
//
//---------------------------------------------------------------------------
CPhysicalDynamicTableScan::CPhysicalDynamicTableScan(
CMemoryPool *mp, const CName *pnameAlias, CTableDescriptor *ptabdesc,
ULONG ulOriginOpId, ULONG scan_id, CColRefArray *pdrgpcrOutput,
CColRef2dArray *pdrgpdrgpcrParts, IMdIdArray *partition_mdids,
ColRefToUlongMapArray *root_col_mapping_per_part)
: CPhysicalDynamicScan(mp, ptabdesc, ulOriginOpId, pnameAlias, scan_id,
pdrgpcrOutput, pdrgpdrgpcrParts, partition_mdids,
root_col_mapping_per_part)
{
}
//---------------------------------------------------------------------------
// @function:
// CPhysicalDynamicTableScan::Matches
//
// @doc:
// match operator
//
//---------------------------------------------------------------------------
BOOL
CPhysicalDynamicTableScan::Matches(COperator *pop) const
{
return CUtils::FMatchDynamicScan(this, pop);
}
//---------------------------------------------------------------------------
// @function:
// CPhysicalDynamicTableScan::PstatsDerive
//
// @doc:
// Statistics derivation during costing
//
//---------------------------------------------------------------------------
IStatistics *
CPhysicalDynamicTableScan::PstatsDerive(CMemoryPool *mp,
CExpressionHandle &exprhdl,
CReqdPropPlan *prpplan,
IStatisticsArray * // stats_ctxt
) const
{
GPOS_ASSERT(nullptr != prpplan);
return CStatisticsUtils::DeriveStatsForDynamicScan(
mp, exprhdl, ScanId(), prpplan->Pepp()->PppsRequired());
}
CPartitionPropagationSpec *
CPhysicalDynamicTableScan::PppsDerive(CMemoryPool *mp,
CExpressionHandle &) const
{
CPartitionPropagationSpec *pps = GPOS_NEW(mp) CPartitionPropagationSpec(mp);
pps->Insert(ScanId(), CPartitionPropagationSpec::EpptConsumer,
Ptabdesc()->MDId(), nullptr, nullptr);
return pps;
}
// EOF
相关信息
相关文章
greenplumn CExpressionFactorizer 源码
greenplumn CExpressionHandle 源码
greenplumn CExpressionPreprocessor 源码
greenplumn CExpressionUtils 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦