greenplumn CTranslatorDXLToExprUtils 源码
greenplumn CTranslatorDXLToExprUtils 代码
文件路径:/src/backend/gporca/libgpopt/include/gpopt/translate/CTranslatorDXLToExprUtils.h
//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2012 EMC Corp.
//
//	@filename:
//		CTranslatorDXLToExprUtils.h
//
//	@doc:
//		Class providing helper methods for translating from DXL to Expr
//---------------------------------------------------------------------------
#ifndef GPOPT_CTranslatorDXLToExprUtils_H
#define GPOPT_CTranslatorDXLToExprUtils_H
#include "gpos/base.h"
#include "gpopt/mdcache/CMDAccessor.h"
#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/CExpression.h"
#include "gpopt/operators/CScalarBoolOp.h"
#include "gpopt/operators/CScalarConst.h"
#include "naucrates/dxl/operators/CDXLColDescr.h"
#include "naucrates/dxl/operators/CDXLNode.h"
#include "naucrates/dxl/operators/CDXLScalarBoolExpr.h"
namespace gpmd
{
class IMDRelation;
}
namespace gpopt
{
using namespace gpos;
using namespace gpmd;
using namespace gpdxl;
//---------------------------------------------------------------------------
//	@class:
//		CTranslatorDXLToExprUtils
//
//	@doc:
//		Class providing helper methods for translating from DXL to Expr
//
//---------------------------------------------------------------------------
class CTranslatorDXLToExprUtils
{
public:
	// create a cast expression from INT to INT8
	static CExpression *PexprConstInt8(CMemoryPool *mp,
									   CMDAccessor *md_accessor,
									   CSystemId sysid, LINT liValue);
	// create a scalar const operator from a DXL scalar const operator
	static CScalarConst *PopConst(CMemoryPool *mp, CMDAccessor *md_accessor,
								  const CDXLScalarConstValue *dxl_op);
	// create a datum from a DXL scalar const operator
	static IDatum *GetDatum(CMDAccessor *md_accessor,
							const CDXLScalarConstValue *dxl_op);
	// create a datum array from a dxl datum array
	static IDatumArray *Pdrgpdatum(CMemoryPool *mp, CMDAccessor *md_accessor,
								   const CDXLDatumArray *pdrgpdatum);
	// update table descriptor's key sets info from the MD cache object
	static void AddKeySets(CMemoryPool *mp, CTableDescriptor *ptabdesc,
						   const IMDRelation *pmdrel,
						   UlongToUlongMap *phmululColMapping);
	// check if a dxl node is a boolean expression of the given type
	static BOOL FScalarBool(const CDXLNode *dxlnode,
							EdxlBoolExprType edxlboolexprtype);
	// returns the equivalent bool expression type in the optimizer for
	// a given DXL bool expression type
	static CScalarBoolOp::EBoolOperator EBoolOperator(
		EdxlBoolExprType edxlbooltype);
	// construct a dynamic array of col refs corresponding to the given col ids
	static CColRefArray *Pdrgpcr(CMemoryPool *mp,
								 UlongToColRefMap *colref_mapping,
								 const ULongPtrArray *colids);
	// is the given expression is a scalar function that casts
	static BOOL FCastFunc(CMDAccessor *md_accessor, const CDXLNode *dxlnode,
						  IMDId *pmdidInput);
};
}  // namespace gpopt
#endif	// !GPOPT_CTranslatorDXLToExprUtils_H
// EOF
相关信息
相关文章
greenplumn CTranslatorDXLToExpr 源码
                        
                            0
                        
                        
                             赞
                        
                    
                    
                热门推荐
- 
                        2、 - 优质文章
- 
                        3、 gate.io
- 
                        8、 openharmony
- 
                        9、 golang