greenplumn CPartPruneStepsBuilder 源码
greenplumn CPartPruneStepsBuilder 代码
文件路径:/src/include/gpopt/translate/CPartPruneStepsBuilder.h
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2011 Greenplum, Inc.
//
// @filename:
// CPartPruneStepsBuilder.h
//
// @doc:
// Utility class to construct PartPruneInfos with appropriate
// PartPruningSteps from partitioning filter expressions
//---------------------------------------------------------------------------
#ifndef GPDXL_CPartPruneStepsBuilder_H
#define GPDXL_CPartPruneStepsBuilder_H
#include "gpos/base.h"
#include "gpopt/translate/CMappingColIdVarPlStmt.h"
#include "gpopt/translate/CTranslatorDXLToScalar.h"
#include "naucrates/dxl/operators/CDXLNode.h"
using namespace gpos;
namespace gpdxl
{
class CPartPruneStepsBuilder
{
private:
// root partitioned tabled
Relation m_relation;
// index in the rtable
Index m_rtindex;
// list of pruned scan nodes denoted as an index of the relation's partition_mdids
ULongPtrArray *m_part_indexes;
// colid -> var mapping from the subtree
CMappingColIdVarPlStmt *m_colid_var_mapping;
// dxl -> scalar translator
CTranslatorDXLToScalar *m_translator_dxl_to_scalar;
// ctor
CPartPruneStepsBuilder(Relation relation, Index rtindex,
ULongPtrArray *part_indexes,
CMappingColIdVarPlStmt *colid_var_mapping,
CTranslatorDXLToScalar *translator_dxl_to_scalar);
CPartPruneStepsBuilder(const CPartPruneStepsBuilder &) = default;
public:
// dtor
~CPartPruneStepsBuilder() = default;
static List *CreatePartPruneInfos(
CDXLNode *filterNode, Relation relation, Index rtindex,
ULongPtrArray *part_indexes, CMappingColIdVarPlStmt *colid_var_mapping,
CTranslatorDXLToScalar *translator_dxl_to_scalar);
PartitionedRelPruneInfo *CreatePartPruneInfoForOneLevel(
CDXLNode *filterNode);
List *PartPruneStepsFromFilter(CDXLNode *filterNode, INT *step_id,
List *steps_list);
List *PartPruneStepFromScalarCmp(CDXLNode *node, INT *step_id,
List *steps_list);
List *PartPruneStepFromScalarBoolExpr(CDXLNode *node, INT *step_id,
List *steps_list);
};
} // namespace gpdxl
#endif // !GPDXL_CPartPruneStepsBuilder_H
//EOF
相关信息
相关文章
greenplumn CContextDXLToPlStmt 源码
greenplumn CContextQueryToDXL 源码
greenplumn CDXLTranslateContext 源码
greenplumn CDXLTranslateContextBaseTable 源码
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦