greenplumn COptimizerConfig 源码
greenplumn COptimizerConfig 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/optimizer/COptimizerConfig.h
//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2018 VMware, Inc. or its affiliates.
//
//	@filename:
//		COptimizerConfig.h
//
//	@doc:
//		Configurations used by the optimizer
//---------------------------------------------------------------------------
#ifndef GPOPT_COptimizerConfig_H
#define GPOPT_COptimizerConfig_H
#include "gpos/base.h"
#include "gpos/common/CDynamicPtrArray.h"
#include "gpos/common/CRefCount.h"
#include "gpopt/base/CWindowOids.h"
#include "gpopt/engine/CCTEConfig.h"
#include "gpopt/engine/CEnumeratorConfig.h"
#include "gpopt/engine/CHint.h"
#include "gpopt/engine/CStatisticsConfig.h"
namespace gpopt
{
using namespace gpos;
// forward decl
class ICostModel;
//---------------------------------------------------------------------------
//	@class:
//		COptimizerConfig
//
//	@doc:
//		Configuration parameters of the optimizer including damping factors used
//		during statistics derivation, CTE inlining cut-off threshold, Id of plan to
//		be extracted (if plan enumeration is enabled), number of plans to be sampled
//		from the space (if plan sampling is enabled) etc.
//
//		Most of these configurations can be changed from outside ORCA through
//		GUCs. They are also included in optimizer’s minidumps under
//		<dxl:OptimizerConfig> element
//
//---------------------------------------------------------------------------
class COptimizerConfig : public CRefCount
{
private:
	// plan enumeration configuration
	CEnumeratorConfig *m_enumerator_cfg;
	// statistics configuration
	CStatisticsConfig *m_stats_conf;
	// CTE configuration
	CCTEConfig *m_cte_conf;
	// cost model configuration
	ICostModel *m_cost_model;
	// hint configuration
	CHint *m_hint;
	// default window oids
	CWindowOids *m_window_oids;
public:
	// ctor
	COptimizerConfig(CEnumeratorConfig *pec, CStatisticsConfig *stats_config,
					 CCTEConfig *pcteconf, ICostModel *pcm, CHint *phint,
					 CWindowOids *pdefoidsGPDB);
	// dtor
	~COptimizerConfig() override;
	// plan enumeration configuration
	CEnumeratorConfig *
	GetEnumeratorCfg() const
	{
		return m_enumerator_cfg;
	}
	// statistics configuration
	CStatisticsConfig *
	GetStatsConf() const
	{
		return m_stats_conf;
	}
	// CTE configuration
	CCTEConfig *
	GetCteConf() const
	{
		return m_cte_conf;
	}
	// cost model configuration
	ICostModel *
	GetCostModel() const
	{
		return m_cost_model;
	}
	// default window oids
	CWindowOids *
	GetWindowOids() const
	{
		return m_window_oids;
	}
	// hint configuration
	CHint *
	GetHint() const
	{
		return m_hint;
	}
	// generate default optimizer configurations
	static COptimizerConfig *PoconfDefault(CMemoryPool *mp);
	// generate default optimizer configurations with the given cost model
	static COptimizerConfig *PoconfDefault(CMemoryPool *mp, ICostModel *pcm);
	void Serialize(CMemoryPool *mp, CXMLSerializer *xml_serializer,
				   CBitSet *pbsTrace) const;
};	// class COptimizerConfig
}  // namespace gpopt
#endif	// !GPOPT_COptimizerConfig_H
// EOF
相关信息
相关文章
                        
                            0
                        
                        
                             赞
                        
                    
                    
                热门推荐
- 
                        2、 - 优质文章
- 
                        3、 gate.io
- 
                        8、 openharmony
- 
                        9、 golang