本文整理汇总了C++中CDXLNode::Pdxlop方法的典型用法代码示例。如果您正苦于以下问题:C++ CDXLNode::Pdxlop方法的具体用法?C++ CDXLNode::Pdxlop怎么用?C++ CDXLNode::Pdxlop使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CDXLNode
的用法示例。
在下文中一共展示了CDXLNode::Pdxlop方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalRandomMotion::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalRandomMotion::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
) const
{
// assert proj list and filter are valid
CDXLPhysical::AssertValid(pdxln, fValidateChildren);
GPOS_ASSERT(m_pdrgpiInputSegIds != NULL);
GPOS_ASSERT(0 < m_pdrgpiInputSegIds->UlLength());
GPOS_ASSERT(m_pdrgpiOutputSegIds != NULL);
GPOS_ASSERT(0 < m_pdrgpiOutputSegIds->UlLength());
GPOS_ASSERT(EdxlrandommIndexSentinel == pdxln->UlArity());
CDXLNode *pdxlnChild = (*pdxln)[EdxlrandommIndexChild];
GPOS_ASSERT(EdxloptypePhysical == pdxlnChild->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
}
示例2:
//---------------------------------------------------------------------------
// @function:
// CDXLScalarWindowFrameEdge::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLScalarWindowFrameEdge::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
const ULONG ulArity = pdxln->UlArity();
GPOS_ASSERT(1 >= ulArity);
GPOS_ASSERT_IMP((m_edxlfb == EdxlfbBoundedPreceding || m_edxlfb == EdxlfbBoundedFollowing
|| m_edxlfb == EdxlfbDelayedBoundedPreceding || m_edxlfb == EdxlfbDelayedBoundedFollowing), 1 == ulArity);
GPOS_ASSERT_IMP((m_edxlfb == EdxlfbUnboundedPreceding || m_edxlfb == EdxlfbUnboundedFollowing || m_edxlfb == EdxlfbCurrentRow), 0 == ulArity);
for (ULONG ul = 0; ul < ulArity; ++ul)
{
CDXLNode *pdxlnArg = (*pdxln)[ul];
GPOS_ASSERT(EdxloptypeScalar == pdxlnArg->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnArg->Pdxlop()->AssertValid(pdxlnArg, fValidateChildren);
}
}
}
示例3:
//---------------------------------------------------------------------------
// @function:
// CDXLScalarBitmapBoolOp::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLScalarBitmapBoolOp::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
EdxlBitmapBoolOp edxlbitmapboolop = ((CDXLScalarBitmapBoolOp *) pdxln->Pdxlop())->Edxlbitmapboolop();
GPOS_ASSERT( (edxlbitmapboolop == EdxlbitmapAnd) || (edxlbitmapboolop == EdxlbitmapOr));
ULONG ulArity = pdxln->UlArity();
GPOS_ASSERT(2 == ulArity);
for (ULONG ul = 0; ul < ulArity; ++ul)
{
CDXLNode *pdxlnArg = (*pdxln)[ul];
Edxlopid edxlop = pdxlnArg->Pdxlop()->Edxlop();
GPOS_ASSERT(EdxlopScalarBitmapBoolOp == edxlop || EdxlopScalarBitmapIndexProbe == edxlop);
if (fValidateChildren)
{
pdxlnArg->Pdxlop()->AssertValid(pdxlnArg, fValidateChildren);
}
}
}
示例4:
//---------------------------------------------------------------------------
// @function:
// CDXLScalarBoolExpr::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLScalarBoolExpr::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
EdxlBoolExprType edxlbooltype = ((CDXLScalarBoolExpr *) pdxln->Pdxlop())->EdxlBoolType();
GPOS_ASSERT( (edxlbooltype == Edxlnot) || (edxlbooltype == Edxlor) || (edxlbooltype == Edxland));
const ULONG ulArity = pdxln->UlArity();
if(edxlbooltype == Edxlnot)
{
GPOS_ASSERT(1 == ulArity);
}
else
{
GPOS_ASSERT(2 <= ulArity);
}
for (ULONG ul = 0; ul < ulArity; ++ul)
{
CDXLNode *pdxlnArg = (*pdxln)[ul];
GPOS_ASSERT(EdxloptypeScalar == pdxlnArg->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnArg->Pdxlop()->AssertValid(pdxlnArg, fValidateChildren);
}
}
}
示例5:
//---------------------------------------------------------------------------
// @function:
// CDXLLogicalWindow::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLLogicalWindow::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
) const
{
GPOS_ASSERT(2 == pdxln->UlArity());
CDXLNode *pdxlnProjList = (*pdxln)[0];
CDXLNode *pdxlnChild = (*pdxln)[1];
GPOS_ASSERT(EdxlopScalarProjectList == pdxlnProjList->Pdxlop()->Edxlop());
GPOS_ASSERT(EdxloptypeLogical == pdxlnChild->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnProjList->Pdxlop()->AssertValid(pdxlnProjList, fValidateChildren);
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
const ULONG ulArity = pdxlnProjList->UlArity();
for (ULONG ul = 0; ul < ulArity; ++ul)
{
CDXLNode *pdxlnPrEl = (*pdxlnProjList)[ul];
GPOS_ASSERT(EdxlopScalarIdent != pdxlnPrEl->Pdxlop()->Edxlop());
}
GPOS_ASSERT(NULL != m_pdrgpdxlws);
GPOS_ASSERT(0 < m_pdrgpdxlws->UlLength());
}
示例6:
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalResult::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalResult::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
GPOS_ASSERT(EdxlresultIndexSentinel >= pdxln->UlArity());
// check that one time filter is valid
CDXLNode *pdxlnOneTimeFilter = (*pdxln)[EdxlresultIndexOneTimeFilter];
GPOS_ASSERT(EdxlopScalarOneTimeFilter == pdxlnOneTimeFilter->Pdxlop()->Edxlop());
if (fValidateChildren)
{
pdxlnOneTimeFilter->Pdxlop()->AssertValid(pdxlnOneTimeFilter, fValidateChildren);
}
if (EdxlresultIndexSentinel == pdxln->UlArity())
{
CDXLNode *pdxlnChild = (*pdxln)[EdxlresultIndexChild];
GPOS_ASSERT(EdxloptypePhysical == pdxlnChild->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
}
}
示例7:
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalIndexScan::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalIndexScan::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
// assert proj list and filter are valid
CDXLPhysical::AssertValid(pdxln, fValidateChildren);
// index scan has only 3 children
GPOS_ASSERT(3 == pdxln->UlArity());
// assert validity of the index descriptor
GPOS_ASSERT(NULL != m_pdxlid);
GPOS_ASSERT(NULL != m_pdxlid->Pmdname());
GPOS_ASSERT(m_pdxlid->Pmdname()->Pstr()->FValid());
// assert validity of the table descriptor
GPOS_ASSERT(NULL != m_pdxltabdesc);
GPOS_ASSERT(NULL != m_pdxltabdesc->Pmdname());
GPOS_ASSERT(m_pdxltabdesc->Pmdname()->Pstr()->FValid());
CDXLNode *pdxlnIndexConds = (*pdxln)[EdxlisIndexCondition];
// assert children are of right type (physical/scalar)
GPOS_ASSERT(EdxlopScalarIndexCondList == pdxlnIndexConds->Pdxlop()->Edxlop());
if (fValidateChildren)
{
pdxlnIndexConds->Pdxlop()->AssertValid(pdxlnIndexConds, fValidateChildren);
}
}
示例8:
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalLimit::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalLimit::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
) const
{
GPOS_ASSERT(4 == pdxln->UlArity());
// Assert proj list is valid
CDXLNode *pdxlnProjList = (*pdxln)[EdxllimitIndexProjList];
GPOS_ASSERT(EdxlopScalarProjectList == pdxlnProjList->Pdxlop()->Edxlop());
// assert child plan is a physical plan and is valid
CDXLNode *pdxlnChild = (*pdxln)[EdxllimitIndexChildPlan];
GPOS_ASSERT(EdxloptypePhysical == pdxlnChild->Pdxlop()->Edxloperatortype());
// Assert the validity of Count and Offset
CDXLNode *pdxlnCount = (*pdxln)[EdxllimitIndexLimitCount];
GPOS_ASSERT(EdxlopScalarLimitCount == pdxlnCount->Pdxlop()->Edxlop());
CDXLNode *pdxlnOffset = (*pdxln)[EdxllimitIndexLimitOffset];
GPOS_ASSERT(EdxlopScalarLimitOffset == pdxlnOffset->Pdxlop()->Edxlop());
if (fValidateChildren)
{
pdxlnProjList->Pdxlop()->AssertValid(pdxlnProjList, fValidateChildren);
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
pdxlnCount->Pdxlop()->AssertValid(pdxlnCount, fValidateChildren);
pdxlnOffset->Pdxlop()->AssertValid(pdxlnOffset, fValidateChildren);
}
}
示例9: Edxltype
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalMergeJoin::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalMergeJoin::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
// assert proj list and filter are valid
CDXLPhysical::AssertValid(pdxln, fValidateChildren);
GPOS_ASSERT(EdxlmjIndexSentinel == pdxln->UlArity());
GPOS_ASSERT(EdxljtSentinel > Edxltype());
CDXLNode *pdxlnJoinFilter = (*pdxln)[EdxlmjIndexJoinFilter];
CDXLNode *pdxlnMergeClauses = (*pdxln)[EdxlmjIndexMergeCondList];
CDXLNode *pdxlnLeft = (*pdxln)[EdxlmjIndexLeftChild];
CDXLNode *pdxlnRight = (*pdxln)[EdxlmjIndexRightChild];
// assert children are of right type (physical/scalar)
GPOS_ASSERT(EdxlopScalarJoinFilter == pdxlnJoinFilter->Pdxlop()->Edxlop());
GPOS_ASSERT(EdxlopScalarMergeCondList == pdxlnMergeClauses->Pdxlop()->Edxlop());
GPOS_ASSERT(EdxloptypePhysical == pdxlnLeft->Pdxlop()->Edxloperatortype());
GPOS_ASSERT(EdxloptypePhysical == pdxlnRight->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnJoinFilter->Pdxlop()->AssertValid(pdxlnJoinFilter, fValidateChildren);
pdxlnMergeClauses->Pdxlop()->AssertValid(pdxlnMergeClauses, fValidateChildren);
pdxlnLeft->Pdxlop()->AssertValid(pdxlnLeft, fValidateChildren);
pdxlnRight->Pdxlop()->AssertValid(pdxlnRight, fValidateChildren);
}
}
示例10:
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalDML::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalDML::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
GPOS_ASSERT(2 == pdxln->UlArity());
CDXLNode *pdxlnChild = (*pdxln)[1];
GPOS_ASSERT(EdxloptypePhysical == pdxlnChild->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
}
示例11:
//---------------------------------------------------------------------------
// @function:
// CDXLScalarCoerceViaIO::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLScalarCoerceViaIO::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
) const
{
GPOS_ASSERT(1 == pdxln->UlArity());
CDXLNode *pdxlnChild = (*pdxln)[0];
GPOS_ASSERT(EdxloptypeScalar == pdxlnChild->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
}
示例12:
//---------------------------------------------------------------------------
// @function:
// CDXLLogicalDelete::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLLogicalDelete::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
GPOS_ASSERT(1 == pdxln->UlArity());
CDXLNode *pdxlnChild = (*pdxln)[0];
GPOS_ASSERT(EdxloptypeLogical == pdxlnChild->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
}
示例13:
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalCTEConsumer::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalCTEConsumer::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
) const
{
GPOS_ASSERT(1 == pdxln->UlArity());
CDXLNode *pdxlnPrL = (*pdxln)[0];
GPOS_ASSERT(EdxlopScalarProjectList == pdxlnPrL->Pdxlop()->Edxlop());
if (fValidateChildren)
{
pdxlnPrL->Pdxlop()->AssertValid(pdxlnPrL, fValidateChildren);
}
}
示例14:
//---------------------------------------------------------------------------
// @function:
// CDXLPhysicalMaterialize::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLPhysicalMaterialize::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
GPOS_ASSERT(EdxlspoolNone == m_edxlsptype || EdxlspoolMaterialize == m_edxlsptype);
GPOS_ASSERT(EdxlmatIndexSentinel == pdxln->UlArity());
CDXLNode *pdxlnChild = (*pdxln)[EdxlmatIndexChild];
GPOS_ASSERT(EdxloptypePhysical == pdxlnChild->Pdxlop()->Edxloperatortype());
if (fValidateChildren)
{
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
}
示例15:
//---------------------------------------------------------------------------
// @function:
// CDXLScalarSortColList::AssertValid
//
// @doc:
// Checks whether operator node is well-structured
//
//---------------------------------------------------------------------------
void
CDXLScalarSortColList::AssertValid
(
const CDXLNode *pdxln,
BOOL fValidateChildren
)
const
{
const ULONG ulArity = pdxln->UlArity();
for (ULONG ul = 0; ul < ulArity; ul++)
{
CDXLNode *pdxlnChild = (*pdxln)[ul];
GPOS_ASSERT(EdxlopScalarSortCol == pdxlnChild->Pdxlop()->Edxlop());
if (fValidateChildren)
{
pdxlnChild->Pdxlop()->AssertValid(pdxlnChild, fValidateChildren);
}
}
}