Пример #1
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalCTEAnchor::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalCTEAnchor::PxfsCandidates
	(
	IMemoryPool *pmp
	)
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	(void) pxfs->FExchangeSet(CXform::ExfCTEAnchor2Sequence);
	(void) pxfs->FExchangeSet(CXform::ExfCTEAnchor2TrivialSelect);
	return pxfs;
}
Пример #2
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalLimit::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalLimit::PxfsCandidates
	(
	IMemoryPool *pmp
	) 
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	
	(void) pxfs->FExchangeSet(CXform::ExfImplementLimit);
	(void) pxfs->FExchangeSet(CXform::ExfSplitLimit);
	
	return pxfs;
}
Пример #3
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalTVF::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalTVF::PxfsCandidates
	(
	IMemoryPool *pmp
	) 
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);

	(void) pxfs->FExchangeSet(CXform::ExfUnnestTVF);
	(void) pxfs->FExchangeSet(CXform::ExfImplementTVF);
	(void) pxfs->FExchangeSet(CXform::ExfImplementTVFNoArgs);
	return pxfs;
}
//---------------------------------------------------------------------------
//	@function:
//		CLogicalGbAggDeduplicate::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalGbAggDeduplicate::PxfsCandidates
	(
	IMemoryPool *pmp
	)
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	(void) pxfs->FExchangeSet(CXform::ExfPushGbDedupBelowJoin);
	(void) pxfs->FExchangeSet(CXform::ExfSplitGbAggDedup);
	(void) pxfs->FExchangeSet(CXform::ExfGbAggDedup2HashAggDedup);
	(void) pxfs->FExchangeSet(CXform::ExfGbAggDedup2StreamAggDedup);
	return pxfs;
}
Пример #5
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalLeftSemiApply::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalLeftSemiApply::PxfsCandidates
	(
	IMemoryPool *pmp
	)
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);

	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiApply2LeftSemiJoin);
	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiApplyWithExternalCorrs2InnerJoin);
	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiApply2LeftSemiJoinNoCorrelations);

	return pxfs;
}
Пример #6
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalInnerApply::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalInnerApply::PxfsCandidates
	(
	IMemoryPool *pmp
	) 
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	
	(void) pxfs->FExchangeSet(CXform::ExfInnerApply2InnerJoin);
	(void) pxfs->FExchangeSet(CXform::ExfInnerApply2InnerJoinNoCorrelations);
	(void) pxfs->FExchangeSet(CXform::ExfInnerApplyWithOuterKey2InnerJoin);
	
	return pxfs;
}
Пример #7
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalFullOuterJoin::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalFullOuterJoin::PxfsCandidates
	(
	IMemoryPool *pmp
	)
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	(void) pxfs->FExchangeSet(CXform::ExfExpandFullOuterJoin);
	return pxfs;
}
Пример #8
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalDifferenceAll::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalDifferenceAll::PxfsCandidates
	(
	IMemoryPool *pmp
	)
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	(void) pxfs->FExchangeSet(CXform::ExfDifferenceAll2LeftAntiSemiJoin);
	return pxfs;
}
Пример #9
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalUnion::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalUnion::PxfsCandidates
	(
	IMemoryPool *pmp
	) 
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	(void) pxfs->FExchangeSet(CXform::ExfUnion2UnionAll);
	return pxfs;
}
//---------------------------------------------------------------------------
//	@function:
//		CLogicalInnerCorrelatedApply::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalInnerCorrelatedApply::PxfsCandidates
	(
	IMemoryPool *pmp
	)
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	(void) pxfs->FExchangeSet(CXform::ExfImplementInnerCorrelatedApply);

	return pxfs;
}
Пример #11
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalGet::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalGet::PxfsCandidates
	(
	IMemoryPool *pmp
	) 
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	
	(void) pxfs->FExchangeSet(CXform::ExfGet2TableScan);
	
	return pxfs;
}
Пример #12
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalLeftSemiJoin::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalLeftSemiJoin::PxfsCandidates
	(
	IMemoryPool *pmp
	)
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);

	(void) pxfs->FExchangeSet(CXform::ExfSemiJoinSemiJoinSwap);
	(void) pxfs->FExchangeSet(CXform::ExfSemiJoinAntiSemiJoinSwap);
	(void) pxfs->FExchangeSet(CXform::ExfSemiJoinAntiSemiJoinNotInSwap);
	(void) pxfs->FExchangeSet(CXform::ExfSemiJoinInnerJoinSwap);
	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiJoin2InnerJoin);
	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiJoin2InnerJoinUnderGb);
	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiJoin2CrossProduct);
	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiJoin2NLJoin);
	(void) pxfs->FExchangeSet(CXform::ExfLeftSemiJoin2HashJoin);

	return pxfs;
}
Пример #13
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalSelect::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalSelect::PxfsCandidates
	(
	IMemoryPool *pmp
	) 
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);

	(void) pxfs->FExchangeSet(CXform::ExfSelect2Apply);
	(void) pxfs->FExchangeSet(CXform::ExfInlineCTEConsumerUnderSelect);
	(void) pxfs->FExchangeSet(CXform::ExfPushGbWithHavingBelowJoin);
	(void) pxfs->FExchangeSet(CXform::ExfSelect2IndexGet);
	(void) pxfs->FExchangeSet(CXform::ExfSelect2DynamicIndexGet);
	(void) pxfs->FExchangeSet(CXform::ExfSelect2PartialDynamicIndexGet);
	(void) pxfs->FExchangeSet(CXform::ExfSelect2BitmapBoolOp);
	(void) pxfs->FExchangeSet(CXform::ExfSelect2DynamicBitmapBoolOp);
	(void) pxfs->FExchangeSet(CXform::ExfSimplifySelectWithSubquery);
	(void) pxfs->FExchangeSet(CXform::ExfSelect2Filter);

	return pxfs;
}
Пример #14
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalInnerJoin::PxfsCandidates
//
//	@doc:
//		Get candidate xforms
//
//---------------------------------------------------------------------------
CXformSet *
CLogicalInnerJoin::PxfsCandidates
	(
	IMemoryPool *pmp
	) 
	const
{
	CXformSet *pxfs = GPOS_NEW(pmp) CXformSet(pmp);
	
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoin2NLJoin);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoin2HashJoin);
	(void) pxfs->FExchangeSet(CXform::ExfSubqJoin2Apply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoin2IndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoin2DynamicIndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoin2PartialDynamicIndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoin2BitmapIndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinWithInnerSelect2IndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinWithInnerSelect2DynamicIndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinWithInnerSelect2PartialDynamicIndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoin2DynamicBitmapIndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinWithInnerSelect2BitmapIndexGetApply);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinWithInnerSelect2DynamicBitmapIndexGetApply);

	(void) pxfs->FExchangeSet(CXform::ExfJoinCommutativity);
	(void) pxfs->FExchangeSet(CXform::ExfJoinAssociativity);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinSemiJoinSwap);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinAntiSemiJoinSwap);
	(void) pxfs->FExchangeSet(CXform::ExfInnerJoinAntiSemiJoinNotInSwap);
	
	return pxfs;
}