提交 b2fdaf9b 编写于 作者: J Jemish Patel and Jesse Zhang 提交者: Dhanashree Kashid

More consistent ref-counting [#144468913]

We ensure all three cases of PdxlnCorrelatedNLJoin take ownership of the
DXLProperties object
上级 54565e06
...@@ -3256,6 +3256,7 @@ CTranslatorExprToDXL::PdxlnCorrelatedNLJoin ...@@ -3256,6 +3256,7 @@ CTranslatorExprToDXL::PdxlnCorrelatedNLJoin
{ {
case COperator::EopPhysicalTableScan: case COperator::EopPhysicalTableScan:
{ {
pdxlprop->AddRef();
// create and return a table scan node // create and return a table scan node
pdxln = PdxlnTblScanFromNLJoinOuter(pexprOuterChild, pdxlnCond, pdrgpcr, pdrgpdsBaseTables, pulNonGatherMotions, pdxlprop); pdxln = PdxlnTblScanFromNLJoinOuter(pexprOuterChild, pdxlnCond, pdrgpcr, pdrgpdsBaseTables, pulNonGatherMotions, pdxlprop);
break; break;
...@@ -3263,6 +3264,7 @@ CTranslatorExprToDXL::PdxlnCorrelatedNLJoin ...@@ -3263,6 +3264,7 @@ CTranslatorExprToDXL::PdxlnCorrelatedNLJoin
case COperator::EopPhysicalFilter: case COperator::EopPhysicalFilter:
{ {
pdxlprop->AddRef();
pdxln = PdxlnResultFromNLJoinOuter(pexprOuterChild, pdxlnCond, pdrgpcr, pdrgpdsBaseTables, pulNonGatherMotions, pfDML, pdxlprop); pdxln = PdxlnResultFromNLJoinOuter(pexprOuterChild, pdxlnCond, pdrgpcr, pdrgpdsBaseTables, pulNonGatherMotions, pfDML, pdxlprop);
break; break;
} }
...@@ -3411,7 +3413,6 @@ CTranslatorExprToDXL::PdxlnTblScanFromNLJoinOuter ...@@ -3411,7 +3413,6 @@ CTranslatorExprToDXL::PdxlnTblScanFromNLJoinOuter
) )
{ {
// create a table scan over the input expression, without a filter // create a table scan over the input expression, without a filter
pdxlprop->AddRef();
CDXLNode *pdxlnTblScan = PdxlnTblScan CDXLNode *pdxlnTblScan = PdxlnTblScan
( (
pexprRelational, pexprRelational,
...@@ -3486,6 +3487,7 @@ CTranslatorExprToDXL::PdxlnResultFromNLJoinOuter ...@@ -3486,6 +3487,7 @@ CTranslatorExprToDXL::PdxlnResultFromNLJoinOuter
{ {
// create a result node from the input expression // create a result node from the input expression
CDXLNode *pdxlnResult = PdxlnResult(pexprRelational, pdrgpcr, pdrgpdsBaseTables, pulNonGatherMotions, pfDML, pdxlprop); CDXLNode *pdxlnResult = PdxlnResult(pexprRelational, pdrgpcr, pdrgpdsBaseTables, pulNonGatherMotions, pfDML, pdxlprop);
pdxlprop->Release();
// In case the OuterChild is a physical sequence, it will already have the filter in the partition selector and // In case the OuterChild is a physical sequence, it will already have the filter in the partition selector and
// dynamic scan, thus we should not replace the filter. // dynamic scan, thus we should not replace the filter.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册