greenplumn CConstExprEvaluatorDefaultTest 源码
greenplumn CConstExprEvaluatorDefaultTest 代码
文件路径:/src/backend/gporca/server/src/unittest/gpopt/eval/CConstExprEvaluatorDefaultTest.cpp
//---------------------------------------------------------------------------
// Greenplum Database
// Copyright (C) 2014 VMware, Inc. or its affiliates.
//
// @filename:
// CConstExprEvaluatorDefaultTest.cpp
//
// @doc:
// Unit tests for CConstExprEvaluatorDefault
//
// @owner:
//
//
// @test:
//
//---------------------------------------------------------------------------
#include "unittest/gpopt/eval/CConstExprEvaluatorDefaultTest.h"
#include "gpopt/base/CAutoOptCtxt.h"
#include "gpopt/base/CUtils.h"
#include "gpopt/eval/CConstExprEvaluatorDefault.h"
#include "gpopt/mdcache/CMDAccessor.h"
#include "gpopt/operators/CScalarNullTest.h"
#include "naucrates/md/CMDProviderMemory.h"
#include "unittest/base.h"
#include "unittest/gpopt/CTestUtils.h"
using namespace gpos;
using namespace gpopt;
//---------------------------------------------------------------------------
// @function:
// CConstExprEvaluatorDefaultTest::EresUnittest
//
// @doc:
// Executes all unit tests for CConstExprEvaluatorDefault
//
//---------------------------------------------------------------------------
GPOS_RESULT
CConstExprEvaluatorDefaultTest::EresUnittest()
{
CAutoMemoryPool amp;
CMemoryPool *mp = amp.Pmp();
CConstExprEvaluatorDefault *pceevaldefault =
GPOS_NEW(mp) CConstExprEvaluatorDefault();
GPOS_ASSERT(!pceevaldefault->FCanEvalExpressions());
// setup a file-based provider
CMDProviderMemory *pmdp = CTestUtils::m_pmdpf;
pmdp->AddRef();
CMDAccessor mda(mp, CMDCache::Pcache(), CTestUtils::m_sysidDefault, pmdp);
// install opt context in TLS
CAutoOptCtxt aoc(mp, &mda, nullptr, /* pceeval */
CTestUtils::GetCostModel(mp));
// Test evaluation of an integer constant
{
ULONG ulVal = 123456;
CExpression *pexprUl = CUtils::PexprScalarConstInt4(mp, ulVal);
#ifdef GPOS_DEBUG
CExpression *pexprUlResult = pceevaldefault->PexprEval(pexprUl);
CScalarConst *pscalarconstUl = CScalarConst::PopConvert(pexprUl->Pop());
CScalarConst *pscalarconstUlResult =
CScalarConst::PopConvert(pexprUlResult->Pop());
GPOS_ASSERT(pscalarconstUl->Matches(pscalarconstUlResult));
pexprUlResult->Release();
#endif // GPOS_DEBUG
pexprUl->Release();
}
// Test evaluation of a null test expression
{
ULONG ulVal = 123456;
CExpression *pexprUl = CUtils::PexprScalarConstInt4(mp, ulVal);
CExpression *pexprIsNull = CUtils::PexprIsNull(mp, pexprUl);
#ifdef GPOS_DEBUG
CExpression *pexprResult = pceevaldefault->PexprEval(pexprIsNull);
gpopt::CScalarNullTest *pscalarnulltest =
CScalarNullTest::PopConvert(pexprIsNull->Pop());
GPOS_ASSERT(pscalarnulltest->Matches(pexprResult->Pop()));
pexprResult->Release();
#endif // GPOS_DEBUG
pexprIsNull->Release();
}
pceevaldefault->Release();
return GPOS_OK;
}
// EOF
相关信息
相关文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦