greenplumn CSearchStrategyTest 源码

  • 2022-08-18
  • 浏览 (315)

greenplumn CSearchStrategyTest 代码

文件路径:/src/backend/gporca/server/include/unittest/gpopt/search/CSearchStrategyTest.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2012 EMC Corp.
//
//	@filename:
//		CSearchStrategyTest.h
//
//	@doc:
//		Test for search strategy
//---------------------------------------------------------------------------
#ifndef GPOPT_CSearchStrategyTest_H
#define GPOPT_CSearchStrategyTest_H

#include "gpos/base.h"

#include "gpopt/operators/CExpression.h"
#include "gpopt/search/CSearchStage.h"

namespace gpopt
{
//---------------------------------------------------------------------------
//	@class:
//		CSearchStrategyTest
//
//	@doc:
//		unittest for search strategy
//
//---------------------------------------------------------------------------
class CSearchStrategyTest
{
private:
	// type definition for of expression generator
	using Pfpexpr = CExpression *(*) (CMemoryPool *);

	// type definition for of optimize function
	using PfnOptimize = void (*)(CMemoryPool *, CExpression *,
								 CSearchStageArray *);

	// generate random search strategy
	static CSearchStageArray *PdrgpssRandom(CMemoryPool *mp);

	// run optimize function on given expression
	static void Optimize(CMemoryPool *mp, Pfpexpr pfnGenerator,
						 CSearchStageArray *search_stage_array,
						 PfnOptimize pfnOptimize);

	static void BuildMemo(CMemoryPool *mp, CExpression *pexprInput,
						  CSearchStageArray *search_stage_array);

public:
	// unittests driver
	static GPOS_RESULT EresUnittest();

#ifdef GPOS_DEBUG
	// test search strategy with recursive optimization
	static GPOS_RESULT EresUnittest_RecursiveOptimize();
#endif	// GPOS_DEBUG

	// test search strategy with multi-threaded optimization
	static GPOS_RESULT EresUnittest_MultiThreadedOptimize();

	// test reading search strategy from XML file
	static GPOS_RESULT EresUnittest_Parsing();

	// test search strategy that times out
	static GPOS_RESULT EresUnittest_Timeout();

	// test exception handling when parsing search strategy
	static GPOS_RESULT EresUnittest_ParsingWithException();

};	// CSearchStrategyTest

}  // namespace gpopt

#endif	// !GPOPT_CSearchStrategyTest_H


// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn COptimizationJobsTest 源码

greenplumn CTreeMapTest 源码

0  赞