This is an automated email from the ASF dual-hosted git repository. maxyang pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 40761e71af3b977ef7f405372a6ad848536edf7e Author: David Kimura <[email protected]> AuthorDate: Mon Mar 27 10:45:39 2023 -0700 [ORCA] Alternative approach for comparison expression reordering (#15242) An effect of the preprocessor step added in commit 063b0abc, is that compare expressions can be added that are of the form (CONST OP IDENT). Issue with that is that when the range of a constraint interval is constructed it assumes a specific order of the operands such that the IDENT is on the left side. There are 2 different approaches to solve that issue: 1) Update constraint constructor to use the commutative operator 2) Fix up the tree to reorder the scalar compare children This commit goes with the second approach by leveraging preprocessor step PexprReorderScalarCmpChildren(). It includes a partial revert of commit 25fc6e00, but keeps the added test cases. It also removes the code added for first approach that was introduced in commit 063b0abc. --- .../dxl/expressiontests/LOJ-TO-InnerJoin-Q1.xml | 8 - .../dxl/expressiontests/LOJ-TO-InnerJoin-Q11.xml | 8 - .../dxl/expressiontests/LOJ-TO-InnerJoin-Q12.xml | 8 - .../dxl/expressiontests/LOJ-TO-InnerJoin-Q13.xml | 8 - .../dxl/expressiontests/LOJ-TO-InnerJoin-Q14.xml | 8 - .../dxl/expressiontests/LOJ-TO-InnerJoin-Q15.xml | 8 - .../dxl/expressiontests/LOJ-TO-InnerJoin-Q8.xml | 8 - .../dxl/expressiontests/LOJ-TO-InnerJoin-Q9.xml | 8 - .../WinFunc-OuterRef-Partition-Order-Query.xml | 8 - .../WinFunc-OuterRef-Partition-Query.xml | 8 - .../minidump/AnyPredicate-Over-UnionOfConsts.mdp | 2 +- .../minidump/AnySubqueryWithSubqueryInScalar.mdp | 8 - .../dxl/minidump/AnySubqueryWithVolatileFunc.mdp | 12 - .../gporca/data/dxl/minidump/BRINScan-Or.mdp | 48 --- .../data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp | 12 - .../BitmapIndexApply-Complex-Condition.mdp | 8 - .../minidump/BitmapIndexNLOJWithProjectNonPart.mdp | 8 - .../minidump/BtreeIndexNLJWithProjectNoPart.mdp | 8 - .../gporca/data/dxl/minidump/CollapseNot.mdp | 12 - .../dxl/minidump/DML-With-WindowFunc-OuterRef.mdp | 8 - .../gporca/data/dxl/minidump/DPE-SemiJoin.mdp | 8 - .../data/dxl/minidump/Date-TimeStamp-HashJoin.mdp | 8 - .../data/dxl/minidump/DirectDispatch-IndexScan.mdp | 8 - ...rectDispatch-SingleCol-Disjunction-Negative.mdp | 8 - .../gporca/data/dxl/minidump/EquivClassesLimit.mdp | 8 - .../data/dxl/minidump/ExtractPredicateFromDisj.mdp | 8 - ...ExtractPredicateFromDisjWithComputedColumns.mdp | 8 - .../gporca/data/dxl/minidump/GroupByOuterRef.mdp | 8 - .../gporca/data/dxl/minidump/HJN-DeeperOuter.mdp | 29 -- ...pply-MultiDistKeys-IncompletePDS-3-DistCols.mdp | 8 - ...verlappingHeterogenousIndex-ANDPredicate-AO.mdp | 12 - ...rlappingHeterogenousIndex-ANDPredicate-HEAP.mdp | 12 - ...pingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp | 12 - ...ppingHomogenousIndexesOnRoot-ORPredicate-AO.mdp | 12 - ...OverlappingHeterogenousIndex-ORPredicate-AO.mdp | 12 - ...pingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp | 12 - ...ppingHomogenousIndexesOnRoot-ORPredicate-AO.mdp | 12 - .../gporca/data/dxl/minidump/IndexScan-AndedIn.mdp | 12 - .../data/dxl/minidump/IndexScan-ORPredsAOPart.mdp | 12 - .../data/dxl/minidump/InferPredicatesForLimit.mdp | 12 - .../data/dxl/minidump/InferPredicatesForPartSQ.mdp | 12 - .../minidump/InferPredicatesFromExistsSubquery.mdp | 12 - .../dxl/minidump/InferPredicatesJoinSubquery.mdp | 12 - .../dxl/minidump/InferPredicatesMultiColumns.mdp | 12 - .../dxl/minidump/Join_OuterChild_DistUniversal.mdp | 8 - .../dxl/minidump/LOJ-IndexApply-MultiIndexes.mdp | 16 - .../dxl/minidump/LeftJoin-With-Pred-On-Inner2.mdp | 8 - .../dxl/minidump/LogicalIndexGetDroppedCols.mdp | 17 - .../data/dxl/minidump/MultipleIndexPredicate.mdp | 12 - ...ngHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp | 12 - .../NotWellDefinedDisjunctConjunctPredicates.mdp | 16 - ...ngHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp | 12 - .../data/dxl/minidump/PartTbl-IsNullPredicate.mdp | 24 -- .../dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp | 8 - .../PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp | 24 -- .../gporca/data/dxl/minidump/PartTbl-SQAny.mdp | 13 - .../PushConstantSelectPredicateThruJoin-16.mdp | 296 ++++++++++++++ .../PushConstantSelectPredicateThruJoin-17.mdp | 265 +++++++++++++ .../dxl/minidump/PushFilterToSemiJoinLeftChild.mdp | 8 - .../dxl/minidump/PushGbBelowJoin-NegativeCase.mdp | 8 - .../minidump/PushSelectWithOuterRefBelowUnion.mdp | 8 - .../minidump/SemiJoinWithWindowsFuncInSubquery.mdp | 8 - .../data/dxl/minidump/Subq2OuterRef2InJoin.mdp | 8 - .../dxl/minidump/Subq2OuterRefMultiLevelInOn.mdp | 8 - .../data/dxl/minidump/Subq2PartialDecorrelate.mdp | 8 - .../data/dxl/minidump/TimeStamp-Date-HashJoin.mdp | 8 - .../minidump/Union-OuterRefs-Casting-Output.mdp | 17 - .../gporca/data/dxl/minidump/UnnestSQJoins.mdp | 8 - .../gporca/libgpopt/include/gpopt/base/CUtils.h | 7 - .../include/gpopt/operators/CPredicateUtils.h | 4 - .../libgpopt/src/base/CConstraintInterval.cpp | 32 +- src/backend/gporca/libgpopt/src/base/CUtils.cpp | 117 +----- .../src/operators/CExpressionPreprocessor.cpp | 37 +- .../libgpopt/src/operators/CPredicateUtils.cpp | 38 +- src/backend/gporca/server/CMakeLists.txt | 3 +- src/test/regress/expected/qp_select.out | 433 +++++++++++++++++++++ src/test/regress/greenplum_schedule | 2 +- src/test/regress/sql/qp_select.sql | 70 ++++ 78 files changed, 1136 insertions(+), 902 deletions(-) diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q1.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q1.xml index d84774e4aa..f145a8bbec 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q1.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q1.xml @@ -26,14 +26,6 @@ WHERE t1.a <= COALESCE(t2.a,t2.b); <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.150.1.0"/> - <dxl:Commutator Mdid="0.523.1.0"/> - <dxl:InverseOp Mdid="0.97.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q11.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q11.xml index db8c059f11..127290e76f 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q11.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q11.xml @@ -23,14 +23,6 @@ select * from t1 left outer join t2 using (a) where (t1.b=t2.b and t2.a > 0) is <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q12.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q12.xml index baa059756e..c5ea6caeac 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q12.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q12.xml @@ -23,14 +23,6 @@ select * from t1 left outer join t2 using (a) where (t1.b=t2.b and t2.a > 0) is <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q13.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q13.xml index 2e07e25a65..60e0d2317c 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q13.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q13.xml @@ -23,14 +23,6 @@ select * from t1 left outer join t2 using (a) where (t1.b=t2.b and t2.a > 0) is <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q14.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q14.xml index 5f07646779..d5703ccd48 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q14.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q14.xml @@ -23,14 +23,6 @@ select * from t1 left outer join t2 using (a) where (t1.b=t2.b and t2.a > 0) is <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q15.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q15.xml index 38a25ad8b3..5e98668e02 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q15.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q15.xml @@ -26,14 +26,6 @@ WHERE t1.a <= LEAST(t2.a,t2.b); <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.150.1.0"/> - <dxl:Commutator Mdid="0.523.1.0"/> - <dxl:InverseOp Mdid="0.97.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q8.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q8.xml index c2f11fb9da..210959e2ad 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q8.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q8.xml @@ -23,14 +23,6 @@ select * from t1 left outer join t2 using (a) where (t1.b=t2.b and t2.a > 0) is <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q9.xml b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q9.xml index 0a683f8f27..61dda65511 100644 --- a/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q9.xml +++ b/src/backend/gporca/data/dxl/expressiontests/LOJ-TO-InnerJoin-Q9.xml @@ -23,14 +23,6 @@ select * from t1 left outer join t2 using (a) where (t1.b=t2.b and t2.a > 0) is <dxl:TraceFlags Value="102120,103001,103014,103015,103022,103023,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Order-Query.xml b/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Order-Query.xml index 2f1e3348e4..efc1ce0ea8 100644 --- a/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Order-Query.xml +++ b/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Order-Query.xml @@ -97,14 +97,6 @@ select * from x where x.i in (select row_number() over(partition by x.i order by </dxl:IndexInfoList> <dxl:CheckConstraints/> </dxl:Relation> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Query.xml b/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Query.xml index 66ae8b6ed6..acfdd5df8a 100644 --- a/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Query.xml +++ b/src/backend/gporca/data/dxl/expressiontests/WinFunc-OuterRef-Partition-Query.xml @@ -97,14 +97,6 @@ select * from x where x.i in (select row_number() over(partition by x.i) from y) </dxl:IndexInfoList> <dxl:CheckConstraints/> </dxl:Relation> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/AnyPredicate-Over-UnionOfConsts.mdp b/src/backend/gporca/data/dxl/minidump/AnyPredicate-Over-UnionOfConsts.mdp index 9ab73214f6..6185a206df 100644 --- a/src/backend/gporca/data/dxl/minidump/AnyPredicate-Over-UnionOfConsts.mdp +++ b/src/backend/gporca/data/dxl/minidump/AnyPredicate-Over-UnionOfConsts.mdp @@ -167,7 +167,7 @@ </dxl:LogicalConstTable> </dxl:LogicalProject> </dxl:Query> - <dxl:Plan Id="0" SpaceSize="1480"> + <dxl:Plan Id="0" SpaceSize="1518"> <dxl:Result> <dxl:Properties> <dxl:Cost StartupCost="0" TotalCost="1724.000526" Rows="1.000000" Width="1"/> diff --git a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp index 54e150b380..1d158678ec 100644 --- a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp +++ b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp @@ -129,14 +129,6 @@ <dxl:SumAgg Mdid="0.2108.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.20.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.852.1.0"/> - <dxl:Commutator Mdid="0.416.1.0"/> - <dxl:InverseOp Mdid="0.36.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp index d594f690c1..dead815a80 100644 --- a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp +++ b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp @@ -174,18 +174,6 @@ <dxl:SumAgg Mdid="0.2108.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.672.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.701.1.0"/> - <dxl:RightType Mdid="0.701.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.295.1.0"/> - <dxl:Commutator Mdid="0.674.1.0"/> - <dxl:InverseOp Mdid="0.675.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1972.1.0"/> - <dxl:Opfamily Mdid="0.3024.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp b/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp index 2708d032bf..32ae9ac1e8 100644 --- a/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp +++ b/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp @@ -111,54 +111,6 @@ <dxl:Opfamily Mdid="0.4056.1.0"/> </dxl:Opfamilies> </dxl:Index> - <dxl:GPDBScalarOp Mdid="0.667.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.25.1.0"/> - <dxl:RightType Mdid="0.25.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.743.1.0"/> - <dxl:Commutator Mdid="0.665.1.0"/> - <dxl:InverseOp Mdid="0.664.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1994.1.0"/> - <dxl:Opfamily Mdid="0.4017.1.0"/> - <dxl:Opfamily Mdid="0.4056.1.0"/> - <dxl:Opfamily Mdid="0.10018.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.1322.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.1184.1.0"/> - <dxl:RightType Mdid="0.1184.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.1154.1.0"/> - <dxl:Commutator Mdid="0.1324.1.0"/> - <dxl:InverseOp Mdid="0.1325.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.434.1.0"/> - <dxl:Opfamily Mdid="0.4059.1.0"/> - <dxl:Opfamily Mdid="0.10006.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.541.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.21.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.167.1.0"/> - <dxl:Commutator Mdid="0.542.1.0"/> - <dxl:InverseOp Mdid="0.537.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1976.1.0"/> - <dxl:Opfamily Mdid="0.4054.1.0"/> - <dxl:Opfamily Mdid="0.10009.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.76.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.20.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.855.1.0"/> - <dxl:Commutator Mdid="0.418.1.0"/> - <dxl:InverseOp Mdid="0.80.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.665.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.25.1.0"/> <dxl:RightType Mdid="0.25.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp index d949cc92d6..7b20713989 100644 --- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp +++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp @@ -268,18 +268,6 @@ explain select * from t where c1 = 10 or (c2 = '4' and c5> 100); <dxl:Opfamily Mdid="0.3035.1.0"/> </dxl:Opfamilies> </dxl:Index> - <dxl:GPDBScalarOp Mdid="0.672.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.701.1.0"/> - <dxl:RightType Mdid="0.701.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.295.1.0"/> - <dxl:Commutator Mdid="0.674.1.0"/> - <dxl:InverseOp Mdid="0.675.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1972.1.0"/> - <dxl:Opfamily Mdid="0.3024.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.674.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.701.1.0"/> <dxl:RightType Mdid="0.701.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp index a76359f476..58fc4384dd 100644 --- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp +++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp @@ -188,14 +188,6 @@ EXPLAIN SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c3 > i1.c3 or t2.c1 <dxl:SumAgg Mdid="0.2111.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.1095.1.0" Name="<" ComparisonType="LT"> - <dxl:LeftType Mdid="0.1082.1.0"/> - <dxl:RightType Mdid="0.1082.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.1087.1.0"/> - <dxl:Commutator Mdid="0.1097.1.0"/> - <dxl:InverseOp Mdid="0.1098.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.1097.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.1082.1.0"/> <dxl:RightType Mdid="0.1082.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp index 052b0213c3..8c531ac438 100644 --- a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp +++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp @@ -54,14 +54,6 @@ <dxl:TraceFlags Value="101013,103045,102046,102048,102053,102054,102074,102120,102146,102152,103001,103014,103022,103027,103029,103038,104002,104003,104004,104005,105000,106000,102157,102158"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp b/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp index 2f5cc28044..32925c88c0 100644 --- a/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp +++ b/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp @@ -52,14 +52,6 @@ <dxl:TraceFlags Value="101013,103045,102046,102048,102053,102054,102074,102120,102146,102152,103001,103014,103022,103027,103029,103038,104002,104003,104004,104005,105000,106000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp b/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp index 48d0c18a6b..ff31201264 100644 --- a/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp +++ b/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp @@ -96,18 +96,6 @@ SELECT 1 FROM inverse WHERE NOT (cidr <<= ANY(SELECT * FROM inverse)); <dxl:SumAgg Mdid="0.2108.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.934.1.0" Name=">>=" ComparisonType="Other" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.869.1.0"/> - <dxl:RightType Mdid="0.869.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.930.1.0"/> - <dxl:Commutator Mdid="0.932.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.3550.1.0"/> - <dxl:Opfamily Mdid="0.3794.1.0"/> - <dxl:Opfamily Mdid="0.4102.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/DML-With-WindowFunc-OuterRef.mdp b/src/backend/gporca/data/dxl/minidump/DML-With-WindowFunc-OuterRef.mdp index 6099c07298..9ac19765eb 100644 --- a/src/backend/gporca/data/dxl/minidump/DML-With-WindowFunc-OuterRef.mdp +++ b/src/backend/gporca/data/dxl/minidump/DML-With-WindowFunc-OuterRef.mdp @@ -22,14 +22,6 @@ <dxl:TraceFlags Value="102001,102002,102003,102074,102120,102144,102152,103001,103014,103022,103027,103029,103033,103038,104002,104003,104004,104005,105000,106000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.CTAS,0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp b/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp index 10ede738c9..55bb92f14e 100644 --- a/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp +++ b/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp @@ -678,14 +678,6 @@ Select * from X where X.a < ANY (select a from P); <dxl:SumAgg Mdid="0.2108.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/Date-TimeStamp-HashJoin.mdp b/src/backend/gporca/data/dxl/minidump/Date-TimeStamp-HashJoin.mdp index 75c00e5360..9e5503c0e1 100644 --- a/src/backend/gporca/data/dxl/minidump/Date-TimeStamp-HashJoin.mdp +++ b/src/backend/gporca/data/dxl/minidump/Date-TimeStamp-HashJoin.mdp @@ -90,14 +90,6 @@ <dxl:SumAgg Mdid="0.0.0.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.2373.1.0" Name="=" ComparisonType="Eq"> - <dxl:LeftType Mdid="0.1114.1.0"/> - <dxl:RightType Mdid="0.1082.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.2366.1.0"/> - <dxl:Commutator Mdid="0.2347.1.0"/> - <dxl:InverseOp Mdid="0.2376.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.2060.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.1114.1.0"/> <dxl:RightType Mdid="0.1114.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp index b3bc896502..7894da1742 100644 --- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp +++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp @@ -344,14 +344,6 @@ where a=1 and b=0; </dxl:Relation> <dxl:ColumnStatistics Mdid="1.1962900.1.1.7" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> <dxl:ColumnStatistics Mdid="1.1962900.1.1.6" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-Negative.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-Negative.mdp index 61bc475412..4c8141d6cb 100644 --- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-Negative.mdp +++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-Negative.mdp @@ -149,14 +149,6 @@ explain select * from r where a<1 or a=3; <dxl:ColumnStatistics Mdid="1.1813600.1.1.0" Name="a" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> <dxl:ColumnStatistics Mdid="1.1813600.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> <dxl:ColumnStatistics Mdid="1.1813600.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp b/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp index 2b1171a9b5..38408546a8 100644 --- a/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp +++ b/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp @@ -24,14 +24,6 @@ <dxl:SumAgg Mdid="0.0.0.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp index b007a23f1b..3749a52ae6 100644 --- a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp +++ b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp @@ -47,14 +47,6 @@ WHERE ((sale_type = 's'::text AND dyear = 2001 AND year_total > 0::numeric) O <dxl:TraceFlags Value="103027,101013,102024,102025,102115,102116,102118,103001"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.1754.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.1700.1.0"/> - <dxl:RightType Mdid="0.1700.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.1722.1.0"/> - <dxl:Commutator Mdid="0.1756.1.0"/> - <dxl:InverseOp Mdid="0.1757.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp index 80fc75601d..c9586fadb0 100644 --- a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp +++ b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp @@ -36,14 +36,6 @@ where (cd.dyear = 2001 and s.tickets_cnt > 3) or (cd.dmoy = 4 and s.tickets_c <dxl:TraceFlags Value="102001,102002,102003,102024,102025,102115,102116,102117,102119,102144,103027,103033"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.37.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.20.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.854.1.0"/> - <dxl:Commutator Mdid="0.419.1.0"/> - <dxl:InverseOp Mdid="0.82.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp b/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp index 2322d47443..30299df4d9 100644 --- a/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp +++ b/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp @@ -84,14 +84,6 @@ where t.a in (select count(s.i) from s); <dxl:SumAgg Mdid="0.0.0.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp b/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp index 9daa9ebd84..2141ea2198 100644 --- a/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp +++ b/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp @@ -48,35 +48,6 @@ SELECT z.*,x.* FROM x,y,z WHERE x.i=y.i AND x.i=z.i; <dxl:SumAgg Mdid="0.2109.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.533.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.21.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.159.1.0"/> - <dxl:Commutator Mdid="0.532.1.0"/> - <dxl:InverseOp Mdid="0.539.1.0"/> - <dxl:HashOpfamily Mdid="0.1977.1.0"/> - <dxl:LegacyHashOpfamily Mdid="0.7100.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1976.1.0"/> - <dxl:Opfamily Mdid="0.1977.1.0"/> - <dxl:Opfamily Mdid="0.4054.1.0"/> - <dxl:Opfamily Mdid="0.7100.1.0"/> - <dxl:Opfamily Mdid="0.10009.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.149.1.0"/> - <dxl:Commutator Mdid="0.525.1.0"/> - <dxl:InverseOp Mdid="0.521.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.532.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.21.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-IncompletePDS-3-DistCols.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-IncompletePDS-3-DistCols.mdp index aa0c9023dc..492758341f 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-IncompletePDS-3-DistCols.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-IncompletePDS-3-DistCols.mdp @@ -36,14 +36,6 @@ <dxl:TraceFlags Value="101013,102001,102002,102003,103045,102046,102048,102053,102054,102074,102120,102144,102152,103001,103014,103022,103027,103029,103033,103038,104002,104003,104004,104005,105000,106000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-AO.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-AO.mdp index 97f6116137..0192addf51 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-AO.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-AO.mdp @@ -64,18 +64,6 @@ EXPLAIN SELECT * FROM foo_1_prt_p2 WHERE c > 10 AND f > 15; <dxl:Opfamily Mdid="0.3027.1.0"/> </dxl:Opfamilies> </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:Type Mdid="0.16.1.0" Name="bool" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="1" PassByValue="true"> <dxl:EqualityOp Mdid="0.91.1.0"/> <dxl:InequalityOp Mdid="0.85.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-HEAP.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-HEAP.mdp index e16082ca10..c268900c72 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-HEAP.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHeterogenousIndex-ANDPredicate-HEAP.mdp @@ -28,18 +28,6 @@ EXPLAIN SELECT * FROM foo_1_prt_p2 WHERE c > 10 AND f > 12; <dxl:TraceFlags Value="102001,102002,102003,102120,102144,103001,103014,103015,103022,103027,103033,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp index eb03ccc3bb..e5f8825f2c 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp @@ -28,18 +28,6 @@ EXPLAIN SELECT * FROM foo_1_prt_p2 WHERE c > 10 AND d > 14; <dxl:TraceFlags Value="102001,102002,102003,102120,102144,103001,103014,103015,103022,103027,103033,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp index 234959f99a..26cbdff9c2 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-NonOverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp @@ -28,18 +28,6 @@ EXPLAIN SELECT * FROM foo_1_prt_p2 WHERE e > 20 OR f > 22; <dxl:TraceFlags Value="102001,102002,102003,102074,102120,102144,103001,103014,103015,103022,103027,103033,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHeterogenousIndex-ORPredicate-AO.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHeterogenousIndex-ORPredicate-AO.mdp index 29b8bfdb69..8e0f3e8dc0 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHeterogenousIndex-ORPredicate-AO.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHeterogenousIndex-ORPredicate-AO.mdp @@ -33,18 +33,6 @@ EXPLAIN SELECT * FROM foo_1_prt_p1 WHERE c > 11 OR d > 20; <dxl:Opfamily Mdid="0.1976.1.0"/> </dxl:Opfamilies> </dxl:Index> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp index 0d2c26e9e4..6defbb8d0f 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp @@ -28,18 +28,6 @@ EXPLAIN SELECT * FROM foo_1_prt_p2 WHERE c > 10 AND d > 13; <dxl:TraceFlags Value="102001,102002,102003,102120,102144,103001,103014,103015,103022,103027,103033,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp index c79fdc9db8..5a88b1851d 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-OverlappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp @@ -28,18 +28,6 @@ EXPLAIN SELECT * FROM foo_1_prt_p2 WHERE c > 12 OR d > 13; <dxl:TraceFlags Value="103027,102074,102146,102120,103001,103014,103015,103022,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexScan-AndedIn.mdp b/src/backend/gporca/data/dxl/minidump/IndexScan-AndedIn.mdp index 2d63bc2165..c06a6b051d 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexScan-AndedIn.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexScan-AndedIn.mdp @@ -2191,18 +2191,6 @@ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="999"/> </dxl:StatsBucket> </dxl:ColumnStatistics> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/IndexScan-ORPredsAOPart.mdp b/src/backend/gporca/data/dxl/minidump/IndexScan-ORPredsAOPart.mdp index 4064c43901..0382a63070 100644 --- a/src/backend/gporca/data/dxl/minidump/IndexScan-ORPredsAOPart.mdp +++ b/src/backend/gporca/data/dxl/minidump/IndexScan-ORPredsAOPart.mdp @@ -61,18 +61,6 @@ <dxl:TraceFlags Value="101013,102001,102002,102003,102006,102074,102113,102120,102144,102147,103001,103014,103015,103022,103027,103029,103033,104003,104004,104005,104006,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/InferPredicatesForLimit.mdp b/src/backend/gporca/data/dxl/minidump/InferPredicatesForLimit.mdp index 3b6ef0ae5e..c3ec9f15b5 100644 --- a/src/backend/gporca/data/dxl/minidump/InferPredicatesForLimit.mdp +++ b/src/backend/gporca/data/dxl/minidump/InferPredicatesForLimit.mdp @@ -170,18 +170,6 @@ a < 2 should also be outside the limit but not below. <dxl:ColumnStatistics Mdid="1.49155.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/> <dxl:ColumnStatistics Mdid="1.49155.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/> <dxl:MDCast Mdid="3.23.1.0;23.1.0" Name="int4" BinaryCoercible="true" SourceTypeId="0.23.1.0" DestinationTypeId="0.23.1.0" CastFuncId="0.0.0.0"/> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/InferPredicatesForPartSQ.mdp b/src/backend/gporca/data/dxl/minidump/InferPredicatesForPartSQ.mdp index fd095184b8..6a7e6764e4 100644 --- a/src/backend/gporca/data/dxl/minidump/InferPredicatesForPartSQ.mdp +++ b/src/backend/gporca/data/dxl/minidump/InferPredicatesForPartSQ.mdp @@ -291,18 +291,6 @@ <dxl:SumAgg Mdid="0.2108.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/InferPredicatesFromExistsSubquery.mdp b/src/backend/gporca/data/dxl/minidump/InferPredicatesFromExistsSubquery.mdp index 2abaf608c6..61801b0235 100644 --- a/src/backend/gporca/data/dxl/minidump/InferPredicatesFromExistsSubquery.mdp +++ b/src/backend/gporca/data/dxl/minidump/InferPredicatesFromExistsSubquery.mdp @@ -33,18 +33,6 @@ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/InferPredicatesJoinSubquery.mdp b/src/backend/gporca/data/dxl/minidump/InferPredicatesJoinSubquery.mdp index 4ccd4142bd..a2935aad80 100644 --- a/src/backend/gporca/data/dxl/minidump/InferPredicatesJoinSubquery.mdp +++ b/src/backend/gporca/data/dxl/minidump/InferPredicatesJoinSubquery.mdp @@ -91,18 +91,6 @@ <dxl:DistrOpfamily Mdid="0.1977.1.0"/> </dxl:DistrOpfamilies> </dxl:Relation> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/InferPredicatesMultiColumns.mdp b/src/backend/gporca/data/dxl/minidump/InferPredicatesMultiColumns.mdp index 0a8d9f5cc2..970ca68c78 100644 --- a/src/backend/gporca/data/dxl/minidump/InferPredicatesMultiColumns.mdp +++ b/src/backend/gporca/data/dxl/minidump/InferPredicatesMultiColumns.mdp @@ -36,18 +36,6 @@ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/Join_OuterChild_DistUniversal.mdp b/src/backend/gporca/data/dxl/minidump/Join_OuterChild_DistUniversal.mdp index 86ca6fcc63..71c1317ddb 100644 --- a/src/backend/gporca/data/dxl/minidump/Join_OuterChild_DistUniversal.mdp +++ b/src/backend/gporca/data/dxl/minidump/Join_OuterChild_DistUniversal.mdp @@ -69,14 +69,6 @@ <dxl:SumAgg Mdid="0.0.0.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.150.1.0"/> - <dxl:Commutator Mdid="0.523.1.0"/> - <dxl:InverseOp Mdid="0.97.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-MultiIndexes.mdp b/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-MultiIndexes.mdp index 26c0fe5947..2ac77c0002 100644 --- a/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-MultiIndexes.mdp +++ b/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-MultiIndexes.mdp @@ -240,22 +240,6 @@ set optimizer_enable_hashjoin = off; <dxl:SumAgg Mdid="0.0.0.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.644.1.0" Name="<>" ComparisonType="NEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.30.1.0"/> - <dxl:RightType Mdid="0.30.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.619.1.0"/> - <dxl:Commutator Mdid="0.644.1.0"/> - <dxl:InverseOp Mdid="0.649.1.0"/> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.664.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.25.1.0"/> - <dxl:RightType Mdid="0.25.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.740.1.0"/> - <dxl:Commutator Mdid="0.666.1.0"/> - <dxl:InverseOp Mdid="0.667.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.666.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.25.1.0"/> <dxl:RightType Mdid="0.25.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/LeftJoin-With-Pred-On-Inner2.mdp b/src/backend/gporca/data/dxl/minidump/LeftJoin-With-Pred-On-Inner2.mdp index 1249bb5da6..a8ff4d3efc 100644 --- a/src/backend/gporca/data/dxl/minidump/LeftJoin-With-Pred-On-Inner2.mdp +++ b/src/backend/gporca/data/dxl/minidump/LeftJoin-With-Pred-On-Inner2.mdp @@ -24,14 +24,6 @@ <dxl:SumAgg Mdid="0.0.0.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/LogicalIndexGetDroppedCols.mdp b/src/backend/gporca/data/dxl/minidump/LogicalIndexGetDroppedCols.mdp index 442328bd7a..c416f95b11 100644 --- a/src/backend/gporca/data/dxl/minidump/LogicalIndexGetDroppedCols.mdp +++ b/src/backend/gporca/data/dxl/minidump/LogicalIndexGetDroppedCols.mdp @@ -104,23 +104,6 @@ EXPLAIN SELECT * FROM solo WHERE year_id=2017 AND month_id=6; <dxl:SumAgg Mdid="0.2109.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.533.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.21.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.159.1.0"/> - <dxl:Commutator Mdid="0.532.1.0"/> - <dxl:InverseOp Mdid="0.539.1.0"/> - <dxl:HashOpfamily Mdid="0.1977.1.0"/> - <dxl:LegacyHashOpfamily Mdid="0.7100.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1976.1.0"/> - <dxl:Opfamily Mdid="0.1977.1.0"/> - <dxl:Opfamily Mdid="0.4054.1.0"/> - <dxl:Opfamily Mdid="0.7100.1.0"/> - <dxl:Opfamily Mdid="0.10009.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.532.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.21.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/MultipleIndexPredicate.mdp b/src/backend/gporca/data/dxl/minidump/MultipleIndexPredicate.mdp index 13b21aea33..a5b91af8ec 100644 --- a/src/backend/gporca/data/dxl/minidump/MultipleIndexPredicate.mdp +++ b/src/backend/gporca/data/dxl/minidump/MultipleIndexPredicate.mdp @@ -84,18 +84,6 @@ <dxl:Opfamily Mdid="0.1994.1.0"/> </dxl:Opfamilies> </dxl:Index> - <dxl:GPDBScalarOp Mdid="0.2064.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.1114.1.0"/> - <dxl:RightType Mdid="0.1114.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.2057.1.0"/> - <dxl:Commutator Mdid="0.2062.1.0"/> - <dxl:InverseOp Mdid="0.2063.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.434.1.0"/> - <dxl:Opfamily Mdid="0.3041.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.2060.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.1114.1.0"/> <dxl:RightType Mdid="0.1114.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp b/src/backend/gporca/data/dxl/minidump/NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp index 85b76a10db..ddd9673389 100644 --- a/src/backend/gporca/data/dxl/minidump/NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp +++ b/src/backend/gporca/data/dxl/minidump/NonOverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp @@ -32,18 +32,6 @@ <dxl:ColumnStatistics Mdid="1.1237618.1.0.10" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/> <dxl:ColumnStatistics Mdid="1.1237618.1.0.3" Name="d" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/> <dxl:ColumnStatistics Mdid="1.1237618.1.0.2" Name="c" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/NotWellDefinedDisjunctConjunctPredicates.mdp b/src/backend/gporca/data/dxl/minidump/NotWellDefinedDisjunctConjunctPredicates.mdp index 3ce69f6364..25aad18548 100644 --- a/src/backend/gporca/data/dxl/minidump/NotWellDefinedDisjunctConjunctPredicates.mdp +++ b/src/backend/gporca/data/dxl/minidump/NotWellDefinedDisjunctConjunctPredicates.mdp @@ -41,22 +41,6 @@ <dxl:TraceFlags Value="101013,102001,102002,102003,102043,102074,102120,102144,103001,103014,103022,103026,103027,103029,103033,103038,104002,104003,104004,104005,106000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.20.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.852.1.0"/> - <dxl:Commutator Mdid="0.416.1.0"/> - <dxl:InverseOp Mdid="0.36.1.0"/> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.36.1.0" Name="<>" ComparisonType="NEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.20.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.853.1.0"/> - <dxl:Commutator Mdid="0.417.1.0"/> - <dxl:InverseOp Mdid="0.15.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.518.1.0" Name="<>" ComparisonType="NEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/OverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp b/src/backend/gporca/data/dxl/minidump/OverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp index 722d220274..12fdc5f122 100644 --- a/src/backend/gporca/data/dxl/minidump/OverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp +++ b/src/backend/gporca/data/dxl/minidump/OverlappingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp @@ -28,18 +28,6 @@ <dxl:TraceFlags Value="102001,102002,102003,102120,102144,103001,103014,103015,103022,103027,103033,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/PartTbl-IsNullPredicate.mdp b/src/backend/gporca/data/dxl/minidump/PartTbl-IsNullPredicate.mdp index fb5e7bbbf2..10d4f39589 100644 --- a/src/backend/gporca/data/dxl/minidump/PartTbl-IsNullPredicate.mdp +++ b/src/backend/gporca/data/dxl/minidump/PartTbl-IsNullPredicate.mdp @@ -32,30 +32,6 @@ explain select * from dd_part_singlecol where a is null and b is null; <dxl:Opfamily Mdid="0.3027.1.0"/> </dxl:Opfamilies> </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.149.1.0"/> - <dxl:Commutator Mdid="0.525.1.0"/> - <dxl:InverseOp Mdid="0.521.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:ColumnStatistics Mdid="1.66695.1.1.7" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> <dxl:ColumnStatistics Mdid="1.66695.1.1.6" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> <dxl:Type Mdid="0.16.1.0" Name="bool" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="1" PassByValue="true"> diff --git a/src/backend/gporca/data/dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp b/src/backend/gporca/data/dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp index 0b96858ec4..a0f1e6d5a3 100644 --- a/src/backend/gporca/data/dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp +++ b/src/backend/gporca/data/dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp @@ -397,14 +397,6 @@ <dxl:SumAgg Mdid="0.0.0.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp b/src/backend/gporca/data/dxl/minidump/PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp index dc3cf0ab6c..d275722956 100644 --- a/src/backend/gporca/data/dxl/minidump/PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp +++ b/src/backend/gporca/data/dxl/minidump/PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp @@ -325,30 +325,6 @@ </dxl:And> </dxl:PartConstraint> </dxl:Relation> - <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.149.1.0"/> - <dxl:Commutator Mdid="0.525.1.0"/> - <dxl:InverseOp Mdid="0.521.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> - <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.147.1.0"/> - <dxl:Commutator Mdid="0.97.1.0"/> - <dxl:InverseOp Mdid="0.523.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1978.1.0"/> - <dxl:Opfamily Mdid="0.3027.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/PartTbl-SQAny.mdp b/src/backend/gporca/data/dxl/minidump/PartTbl-SQAny.mdp index 5ac86571c5..75ebeb1e03 100644 --- a/src/backend/gporca/data/dxl/minidump/PartTbl-SQAny.mdp +++ b/src/backend/gporca/data/dxl/minidump/PartTbl-SQAny.mdp @@ -4,19 +4,6 @@ <dxl:Stacktrace/> <dxl:TraceFlags Value="102001,102002,102003,102144,103001,103027,103033"/> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.419.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.477.1.0"/> - <dxl:Commutator Mdid="0.37.1.0"/> - <dxl:InverseOp Mdid="0.420.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1976.1.0"/> - <dxl:Opfamily Mdid="0.4054.1.0"/> - <dxl:Opfamily Mdid="0.10009.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.1095.1.0" Name="<" ComparisonType="LT"> <dxl:LeftType Mdid="0.1082.1.0"/> <dxl:RightType Mdid="0.1082.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/PushConstantSelectPredicateThruJoin-16.mdp b/src/backend/gporca/data/dxl/minidump/PushConstantSelectPredicateThruJoin-16.mdp new file mode 100644 index 0000000000..521e8bc398 --- /dev/null +++ b/src/backend/gporca/data/dxl/minidump/PushConstantSelectPredicateThruJoin-16.mdp @@ -0,0 +1,296 @@ +<?xml version="1.0" encoding="UTF-8"?> +<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/"> + <dxl:Comment><![CDATA[ + Objective: Same objective as PushConstantSelectPredicateThruJoin-1.mdp with + range type operators. + + CREATE TABLE t(sample_time timestamp); + INSERT INTO t values ('2023-03-02 00:00:00'); + SELECT * FROM t + WHERE '2023-03-02 00:00:00'::timestamp(0) + interval '1 month' >= sample_time AND '2023-03-02 00:00:00'::timestamp(0) - interval '1 month' <= sample_time; + + QUERY PLAN + --------------------------------------------------------------------------------------------------------------------------------------------------------------- + Gather Motion 3:1 (slice1; segments: 3) + -> Seq Scan on t + Filter: ((sample_time <= '2023-04-02 00:00:00'::timestamp without time zone) AND (sample_time >= '2023-02-02 00:00:00'::timestamp without time zone)) + Optimizer: Pivotal Optimizer (GPORCA) + ]]> + </dxl:Comment> + <dxl:Thread Id="0"> + <dxl:OptimizerConfig> + <dxl:EnumeratorConfig Id="0" PlanSamples="0" CostThreshold="0"/> + <dxl:StatisticsConfig DampingFactorFilter="0.750000" DampingFactorJoin="0.000000" DampingFactorGroupBy="0.750000" MaxStatsBuckets="100"/> + <dxl:CTEConfig CTEInliningCutoff="0"/> + <dxl:WindowOids RowNumber="3100" Rank="3101"/> + <dxl:CostModelConfig CostModelType="1" SegmentsForCosting="3"> + <dxl:CostParams> + <dxl:CostParam Name="NLJFactor" Value="1024.000000" LowerBound="1023.500000" UpperBound="1024.500000"/> + </dxl:CostParams> + </dxl:CostModelConfig> + <dxl:Hint JoinArityForAssociativityCommutativity="18" ArrayExpansionThreshold="20" JoinOrderDynamicProgThreshold="10" BroadcastThreshold="100000" EnforceConstraintsOnDML="false" PushGroupByBelowSetopThreshold="10" XformBindThreshold="0" SkewFactor="0"/> + <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/> + </dxl:OptimizerConfig> + <dxl:Metadata SystemIds="0.GPDB"> + <dxl:GPDBScalarOp Mdid="0.2063.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> + <dxl:LeftType Mdid="0.1114.1.0"/> + <dxl:RightType Mdid="0.1114.1.0"/> + <dxl:ResultType Mdid="0.16.1.0"/> + <dxl:OpFunc Mdid="0.2055.1.0"/> + <dxl:Commutator Mdid="0.2065.1.0"/> + <dxl:InverseOp Mdid="0.2064.1.0"/> + <dxl:Opfamilies> + <dxl:Opfamily Mdid="0.434.1.0"/> + <dxl:Opfamily Mdid="0.4059.1.0"/> + <dxl:Opfamily Mdid="0.10006.1.0"/> + </dxl:Opfamilies> + </dxl:GPDBScalarOp> + <dxl:GPDBScalarOp Mdid="0.2065.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> + <dxl:LeftType Mdid="0.1114.1.0"/> + <dxl:RightType Mdid="0.1114.1.0"/> + <dxl:ResultType Mdid="0.16.1.0"/> + <dxl:OpFunc Mdid="0.2056.1.0"/> + <dxl:Commutator Mdid="0.2063.1.0"/> + <dxl:InverseOp Mdid="0.2062.1.0"/> + <dxl:Opfamilies> + <dxl:Opfamily Mdid="0.434.1.0"/> + <dxl:Opfamily Mdid="0.4059.1.0"/> + <dxl:Opfamily Mdid="0.10006.1.0"/> + </dxl:Opfamilies> + </dxl:GPDBScalarOp> + <dxl:Type Mdid="0.16.1.0" Name="bool" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="1" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.2222.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7124.1.0"/> + <dxl:EqualityOp Mdid="0.91.1.0"/> + <dxl:InequalityOp Mdid="0.85.1.0"/> + <dxl:LessThanOp Mdid="0.58.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.1694.1.0"/> + <dxl:GreaterThanOp Mdid="0.59.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.1695.1.0"/> + <dxl:ComparisonOp Mdid="0.1693.1.0"/> + <dxl:ArrayType Mdid="0.1000.1.0"/> + <dxl:MinAgg Mdid="0.0.0.0"/> + <dxl:MaxAgg Mdid="0.0.0.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.23.1.0" Name="int4" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.1977.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7100.1.0"/> + <dxl:EqualityOp Mdid="0.96.1.0"/> + <dxl:InequalityOp Mdid="0.518.1.0"/> + <dxl:LessThanOp Mdid="0.97.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.523.1.0"/> + <dxl:GreaterThanOp Mdid="0.521.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.525.1.0"/> + <dxl:ComparisonOp Mdid="0.351.1.0"/> + <dxl:ArrayType Mdid="0.1007.1.0"/> + <dxl:MinAgg Mdid="0.2132.1.0"/> + <dxl:MaxAgg Mdid="0.2116.1.0"/> + <dxl:AvgAgg Mdid="0.2101.1.0"/> + <dxl:SumAgg Mdid="0.2108.1.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.26.1.0" Name="oid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.1990.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7109.1.0"/> + <dxl:EqualityOp Mdid="0.607.1.0"/> + <dxl:InequalityOp Mdid="0.608.1.0"/> + <dxl:LessThanOp Mdid="0.609.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.611.1.0"/> + <dxl:GreaterThanOp Mdid="0.610.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.612.1.0"/> + <dxl:ComparisonOp Mdid="0.356.1.0"/> + <dxl:ArrayType Mdid="0.1028.1.0"/> + <dxl:MinAgg Mdid="0.2134.1.0"/> + <dxl:MaxAgg Mdid="0.2118.1.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.27.1.0" Name="tid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="6" PassByValue="false"> + <dxl:DistrOpfamily Mdid="0.2227.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7110.1.0"/> + <dxl:EqualityOp Mdid="0.387.1.0"/> + <dxl:InequalityOp Mdid="0.402.1.0"/> + <dxl:LessThanOp Mdid="0.2799.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.2801.1.0"/> + <dxl:GreaterThanOp Mdid="0.2800.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.2802.1.0"/> + <dxl:ComparisonOp Mdid="0.2794.1.0"/> + <dxl:ArrayType Mdid="0.1010.1.0"/> + <dxl:MinAgg Mdid="0.2798.1.0"/> + <dxl:MaxAgg Mdid="0.2797.1.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.29.1.0" Name="cid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.2226.1.0"/> + <dxl:EqualityOp Mdid="0.385.1.0"/> + <dxl:InequalityOp Mdid="0.0.0.0"/> + <dxl:LessThanOp Mdid="0.0.0.0"/> + <dxl:LessThanEqualsOp Mdid="0.0.0.0"/> + <dxl:GreaterThanOp Mdid="0.0.0.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.0.0.0"/> + <dxl:ComparisonOp Mdid="0.0.0.0"/> + <dxl:ArrayType Mdid="0.1012.1.0"/> + <dxl:MinAgg Mdid="0.0.0.0"/> + <dxl:MaxAgg Mdid="0.0.0.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.28.1.0" Name="xid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.2225.1.0"/> + <dxl:EqualityOp Mdid="0.352.1.0"/> + <dxl:InequalityOp Mdid="0.3315.1.0"/> + <dxl:LessThanOp Mdid="0.0.0.0"/> + <dxl:LessThanEqualsOp Mdid="0.0.0.0"/> + <dxl:GreaterThanOp Mdid="0.0.0.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.0.0.0"/> + <dxl:ComparisonOp Mdid="0.0.0.0"/> + <dxl:ArrayType Mdid="0.1011.1.0"/> + <dxl:MinAgg Mdid="0.0.0.0"/> + <dxl:MaxAgg Mdid="0.0.0.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:RelationStatistics Mdid="2.49166.1.0" Name="t" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/> + <dxl:Relation Mdid="6.49166.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1"> + <dxl:Columns> + <dxl:Column Name="sample_time" Attno="1" Mdid="0.1114.1.0" Nullable="true" ColWidth="8"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + </dxl:Columns> + <dxl:IndexInfoList/> + <dxl:CheckConstraints/> + <dxl:DistrOpfamilies> + <dxl:DistrOpfamily Mdid="0.2040.1.0"/> + </dxl:DistrOpfamilies> + </dxl:Relation> + <dxl:ColumnStatistics Mdid="1.49166.1.0.0" Name="sample_time" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/> + <dxl:RelationExtendedStatistics Mdid="10.49166.1.0" Name="t"/> + <dxl:Type Mdid="0.1114.1.0" Name="timestamp" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="8" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.2040.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7111.1.0"/> + <dxl:EqualityOp Mdid="0.2060.1.0"/> + <dxl:InequalityOp Mdid="0.2061.1.0"/> + <dxl:LessThanOp Mdid="0.2062.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.2063.1.0"/> + <dxl:GreaterThanOp Mdid="0.2064.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.2065.1.0"/> + <dxl:ComparisonOp Mdid="0.2045.1.0"/> + <dxl:ArrayType Mdid="0.1115.1.0"/> + <dxl:MinAgg Mdid="0.2142.1.0"/> + <dxl:MaxAgg Mdid="0.2126.1.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + </dxl:Metadata> + <dxl:Query> + <dxl:OutputColumns> + <dxl:Ident ColId="1" ColName="sample_time" TypeMdid="0.1114.1.0"/> + </dxl:OutputColumns> + <dxl:CTEList/> + <dxl:LogicalSelect> + <dxl:And> + <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.2065.1.0"> + <dxl:ConstValue TypeMdid="0.1114.1.0" Value="AIBk5E2bAgA=" DoubleValue="733708800000000.000000"/> + <dxl:Ident ColId="1" ColName="sample_time" TypeMdid="0.1114.1.0"/> + </dxl:Comparison> + <dxl:Comparison ComparisonOperator="<=" OperatorMdid="0.2063.1.0"> + <dxl:ConstValue TypeMdid="0.1114.1.0" Value="AGDBA6uWAgA=" DoubleValue="728611200000000.000000"/> + <dxl:Ident ColId="1" ColName="sample_time" TypeMdid="0.1114.1.0"/> + </dxl:Comparison> + </dxl:And> + <dxl:LogicalGet> + <dxl:TableDescriptor Mdid="6.49166.1.0" TableName="t" LockMode="1"> + <dxl:Columns> + <dxl:Column ColId="1" Attno="1" ColName="sample_time" TypeMdid="0.1114.1.0" ColWidth="8"/> + <dxl:Column ColId="2" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/> + <dxl:Column ColId="3" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="4" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="5" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="6" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="7" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/> + <dxl:Column ColId="8" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/> + </dxl:Columns> + </dxl:TableDescriptor> + </dxl:LogicalGet> + </dxl:LogicalSelect> + </dxl:Query> + <dxl:Plan Id="0" SpaceSize="1"> + <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1"> + <dxl:Properties> + <dxl:Cost StartupCost="0" TotalCost="431.000089" Rows="1.000000" Width="8"/> + </dxl:Properties> + <dxl:ProjList> + <dxl:ProjElem ColId="0" Alias="sample_time"> + <dxl:Ident ColId="0" ColName="sample_time" TypeMdid="0.1114.1.0"/> + </dxl:ProjElem> + </dxl:ProjList> + <dxl:Filter/> + <dxl:SortingColumnList/> + <dxl:TableScan> + <dxl:Properties> + <dxl:Cost StartupCost="0" TotalCost="431.000059" Rows="1.000000" Width="8"/> + </dxl:Properties> + <dxl:ProjList> + <dxl:ProjElem ColId="0" Alias="sample_time"> + <dxl:Ident ColId="0" ColName="sample_time" TypeMdid="0.1114.1.0"/> + </dxl:ProjElem> + </dxl:ProjList> + <dxl:Filter> + <dxl:And> + <dxl:Comparison ComparisonOperator="<=" OperatorMdid="0.2063.1.0"> + <dxl:Ident ColId="0" ColName="sample_time" TypeMdid="0.1114.1.0"/> + <dxl:ConstValue TypeMdid="0.1114.1.0" Value="AIBk5E2bAgA=" DoubleValue="733708800000000.000000"/> + </dxl:Comparison> + <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.2065.1.0"> + <dxl:Ident ColId="0" ColName="sample_time" TypeMdid="0.1114.1.0"/> + <dxl:ConstValue TypeMdid="0.1114.1.0" Value="AGDBA6uWAgA=" DoubleValue="728611200000000.000000"/> + </dxl:Comparison> + </dxl:And> + </dxl:Filter> + <dxl:TableDescriptor Mdid="6.49166.1.0" TableName="t" LockMode="1"> + <dxl:Columns> + <dxl:Column ColId="0" Attno="1" ColName="sample_time" TypeMdid="0.1114.1.0" ColWidth="8"/> + <dxl:Column ColId="1" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/> + <dxl:Column ColId="2" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="3" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="4" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="5" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="6" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/> + <dxl:Column ColId="7" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/> + </dxl:Columns> + </dxl:TableDescriptor> + </dxl:TableScan> + </dxl:GatherMotion> + </dxl:Plan> + </dxl:Thread> +</dxl:DXLMessage> diff --git a/src/backend/gporca/data/dxl/minidump/PushConstantSelectPredicateThruJoin-17.mdp b/src/backend/gporca/data/dxl/minidump/PushConstantSelectPredicateThruJoin-17.mdp new file mode 100644 index 0000000000..0e9a176657 --- /dev/null +++ b/src/backend/gporca/data/dxl/minidump/PushConstantSelectPredicateThruJoin-17.mdp @@ -0,0 +1,265 @@ +<?xml version="1.0" encoding="UTF-8"?> +<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/"> + <dxl:Comment><![CDATA[ + Objective: Same objective as PushConstantSelectPredicateThruJoin-14.mdp + operator that does not have commutative operator. Below example uses text + starts_with operator ^@. + CREATE TABLE t(a text); + INSERT INTO t VALUES ('a'), ('b'), ('c'); + EXPLAIN (COSTS OFF) SELECT * FROM t WHERE 'a' ^@ a; + QUERY PLAN + ------------------------------------------ + Gather Motion 3:1 (slice1; segments: 3) + -> Seq Scan on t + Filter: ('a'::text ^@ a) + Optimizer: Pivotal Optimizer (GPORCA) + ]]> + </dxl:Comment> + <dxl:Thread Id="0"> + <dxl:OptimizerConfig> + <dxl:EnumeratorConfig Id="0" PlanSamples="0" CostThreshold="0"/> + <dxl:StatisticsConfig DampingFactorFilter="0.750000" DampingFactorJoin="0.000000" DampingFactorGroupBy="0.750000" MaxStatsBuckets="100"/> + <dxl:CTEConfig CTEInliningCutoff="0"/> + <dxl:WindowOids RowNumber="3100" Rank="3101"/> + <dxl:CostModelConfig CostModelType="1" SegmentsForCosting="3"> + <dxl:CostParams> + <dxl:CostParam Name="NLJFactor" Value="1024.000000" LowerBound="1023.500000" UpperBound="1024.500000"/> + </dxl:CostParams> + </dxl:CostModelConfig> + <dxl:Hint JoinArityForAssociativityCommutativity="18" ArrayExpansionThreshold="20" JoinOrderDynamicProgThreshold="10" BroadcastThreshold="100000" EnforceConstraintsOnDML="false" PushGroupByBelowSetopThreshold="10" XformBindThreshold="0" SkewFactor="0"/> + <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/> + </dxl:OptimizerConfig> + <dxl:Metadata SystemIds="0.GPDB"> + <dxl:Type Mdid="0.16.1.0" Name="bool" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="1" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.2222.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7124.1.0"/> + <dxl:EqualityOp Mdid="0.91.1.0"/> + <dxl:InequalityOp Mdid="0.85.1.0"/> + <dxl:LessThanOp Mdid="0.58.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.1694.1.0"/> + <dxl:GreaterThanOp Mdid="0.59.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.1695.1.0"/> + <dxl:ComparisonOp Mdid="0.1693.1.0"/> + <dxl:ArrayType Mdid="0.1000.1.0"/> + <dxl:MinAgg Mdid="0.0.0.0"/> + <dxl:MaxAgg Mdid="0.0.0.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.23.1.0" Name="int4" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.1977.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7100.1.0"/> + <dxl:EqualityOp Mdid="0.96.1.0"/> + <dxl:InequalityOp Mdid="0.518.1.0"/> + <dxl:LessThanOp Mdid="0.97.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.523.1.0"/> + <dxl:GreaterThanOp Mdid="0.521.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.525.1.0"/> + <dxl:ComparisonOp Mdid="0.351.1.0"/> + <dxl:ArrayType Mdid="0.1007.1.0"/> + <dxl:MinAgg Mdid="0.2132.1.0"/> + <dxl:MaxAgg Mdid="0.2116.1.0"/> + <dxl:AvgAgg Mdid="0.2101.1.0"/> + <dxl:SumAgg Mdid="0.2108.1.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.25.1.0" Name="text" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="true" IsFixedLength="false" Length="-1" PassByValue="false"> + <dxl:DistrOpfamily Mdid="0.1995.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7105.1.0"/> + <dxl:EqualityOp Mdid="0.98.1.0"/> + <dxl:InequalityOp Mdid="0.531.1.0"/> + <dxl:LessThanOp Mdid="0.664.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.665.1.0"/> + <dxl:GreaterThanOp Mdid="0.666.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.667.1.0"/> + <dxl:ComparisonOp Mdid="0.360.1.0"/> + <dxl:ArrayType Mdid="0.1009.1.0"/> + <dxl:MinAgg Mdid="0.2145.1.0"/> + <dxl:MaxAgg Mdid="0.2129.1.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.26.1.0" Name="oid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.1990.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7109.1.0"/> + <dxl:EqualityOp Mdid="0.607.1.0"/> + <dxl:InequalityOp Mdid="0.608.1.0"/> + <dxl:LessThanOp Mdid="0.609.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.611.1.0"/> + <dxl:GreaterThanOp Mdid="0.610.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.612.1.0"/> + <dxl:ComparisonOp Mdid="0.356.1.0"/> + <dxl:ArrayType Mdid="0.1028.1.0"/> + <dxl:MinAgg Mdid="0.2134.1.0"/> + <dxl:MaxAgg Mdid="0.2118.1.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.27.1.0" Name="tid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="6" PassByValue="false"> + <dxl:DistrOpfamily Mdid="0.2227.1.0"/> + <dxl:LegacyDistrOpfamily Mdid="0.7110.1.0"/> + <dxl:EqualityOp Mdid="0.387.1.0"/> + <dxl:InequalityOp Mdid="0.402.1.0"/> + <dxl:LessThanOp Mdid="0.2799.1.0"/> + <dxl:LessThanEqualsOp Mdid="0.2801.1.0"/> + <dxl:GreaterThanOp Mdid="0.2800.1.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.2802.1.0"/> + <dxl:ComparisonOp Mdid="0.2794.1.0"/> + <dxl:ArrayType Mdid="0.1010.1.0"/> + <dxl:MinAgg Mdid="0.2798.1.0"/> + <dxl:MaxAgg Mdid="0.2797.1.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.29.1.0" Name="cid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.2226.1.0"/> + <dxl:EqualityOp Mdid="0.385.1.0"/> + <dxl:InequalityOp Mdid="0.0.0.0"/> + <dxl:LessThanOp Mdid="0.0.0.0"/> + <dxl:LessThanEqualsOp Mdid="0.0.0.0"/> + <dxl:GreaterThanOp Mdid="0.0.0.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.0.0.0"/> + <dxl:ComparisonOp Mdid="0.0.0.0"/> + <dxl:ArrayType Mdid="0.1012.1.0"/> + <dxl:MinAgg Mdid="0.0.0.0"/> + <dxl:MaxAgg Mdid="0.0.0.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:Type Mdid="0.28.1.0" Name="xid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="4" PassByValue="true"> + <dxl:DistrOpfamily Mdid="0.2225.1.0"/> + <dxl:EqualityOp Mdid="0.352.1.0"/> + <dxl:InequalityOp Mdid="0.3315.1.0"/> + <dxl:LessThanOp Mdid="0.0.0.0"/> + <dxl:LessThanEqualsOp Mdid="0.0.0.0"/> + <dxl:GreaterThanOp Mdid="0.0.0.0"/> + <dxl:GreaterThanEqualsOp Mdid="0.0.0.0"/> + <dxl:ComparisonOp Mdid="0.0.0.0"/> + <dxl:ArrayType Mdid="0.1011.1.0"/> + <dxl:MinAgg Mdid="0.0.0.0"/> + <dxl:MaxAgg Mdid="0.0.0.0"/> + <dxl:AvgAgg Mdid="0.0.0.0"/> + <dxl:SumAgg Mdid="0.0.0.0"/> + <dxl:CountAgg Mdid="0.2147.1.0"/> + </dxl:Type> + <dxl:GPDBScalarOp Mdid="0.3877.1.0" Name="^@" ComparisonType="Other" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> + <dxl:LeftType Mdid="0.25.1.0"/> + <dxl:RightType Mdid="0.25.1.0"/> + <dxl:ResultType Mdid="0.16.1.0"/> + <dxl:OpFunc Mdid="0.3696.1.0"/> + <dxl:Opfamilies> + <dxl:Opfamily Mdid="0.4017.1.0"/> + </dxl:Opfamilies> + </dxl:GPDBScalarOp> + <dxl:ColumnStatistics Mdid="1.81926.1.0.0" Name="a" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/> + <dxl:RelationStatistics Mdid="2.81926.1.0" Name="t" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/> + <dxl:Relation Mdid="6.81926.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1"> + <dxl:Columns> + <dxl:Column Name="a" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="8"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"> + <dxl:DefaultValue/> + </dxl:Column> + </dxl:Columns> + <dxl:IndexInfoList/> + <dxl:CheckConstraints/> + <dxl:DistrOpfamilies> + <dxl:DistrOpfamily Mdid="0.1995.1.0"/> + </dxl:DistrOpfamilies> + </dxl:Relation> + <dxl:RelationExtendedStatistics Mdid="10.81926.1.0" Name="t"/> + </dxl:Metadata> + <dxl:Query> + <dxl:OutputColumns> + <dxl:Ident ColId="1" ColName="a" TypeMdid="0.25.1.0"/> + </dxl:OutputColumns> + <dxl:CTEList/> + <dxl:LogicalSelect> + <dxl:Comparison ComparisonOperator="^@" OperatorMdid="0.3877.1.0"> + <dxl:ConstValue TypeMdid="0.25.1.0" Value="AAAABWE=" LintValue="1075015857"/> + <dxl:Ident ColId="1" ColName="a" TypeMdid="0.25.1.0"/> + </dxl:Comparison> + <dxl:LogicalGet> + <dxl:TableDescriptor Mdid="6.81926.1.0" TableName="t" LockMode="1"> + <dxl:Columns> + <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.25.1.0" ColWidth="8"/> + <dxl:Column ColId="2" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/> + <dxl:Column ColId="3" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="4" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="5" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="6" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="7" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/> + <dxl:Column ColId="8" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/> + </dxl:Columns> + </dxl:TableDescriptor> + </dxl:LogicalGet> + </dxl:LogicalSelect> + </dxl:Query> + <dxl:Plan Id="0" SpaceSize="1"> + <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1"> + <dxl:Properties> + <dxl:Cost StartupCost="0" TotalCost="431.000089" Rows="1.000000" Width="8"/> + </dxl:Properties> + <dxl:ProjList> + <dxl:ProjElem ColId="0" Alias="a"> + <dxl:Ident ColId="0" ColName="a" TypeMdid="0.25.1.0"/> + </dxl:ProjElem> + </dxl:ProjList> + <dxl:Filter/> + <dxl:SortingColumnList/> + <dxl:TableScan> + <dxl:Properties> + <dxl:Cost StartupCost="0" TotalCost="431.000059" Rows="1.000000" Width="8"/> + </dxl:Properties> + <dxl:ProjList> + <dxl:ProjElem ColId="0" Alias="a"> + <dxl:Ident ColId="0" ColName="a" TypeMdid="0.25.1.0"/> + </dxl:ProjElem> + </dxl:ProjList> + <dxl:Filter> + <dxl:Comparison ComparisonOperator="^@" OperatorMdid="0.3877.1.0"> + <dxl:ConstValue TypeMdid="0.25.1.0" Value="AAAABWE=" LintValue="1075015857"/> + <dxl:Ident ColId="0" ColName="a" TypeMdid="0.25.1.0"/> + </dxl:Comparison> + </dxl:Filter> + <dxl:TableDescriptor Mdid="6.81926.1.0" TableName="t" LockMode="1"> + <dxl:Columns> + <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.25.1.0" ColWidth="8"/> + <dxl:Column ColId="1" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/> + <dxl:Column ColId="2" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="3" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="4" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/> + <dxl:Column ColId="5" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/> + <dxl:Column ColId="6" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/> + <dxl:Column ColId="7" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/> + </dxl:Columns> + </dxl:TableDescriptor> + </dxl:TableScan> + </dxl:GatherMotion> + </dxl:Plan> + </dxl:Thread> +</dxl:DXLMessage> diff --git a/src/backend/gporca/data/dxl/minidump/PushFilterToSemiJoinLeftChild.mdp b/src/backend/gporca/data/dxl/minidump/PushFilterToSemiJoinLeftChild.mdp index 519bdd2448..227949b54d 100644 --- a/src/backend/gporca/data/dxl/minidump/PushFilterToSemiJoinLeftChild.mdp +++ b/src/backend/gporca/data/dxl/minidump/PushFilterToSemiJoinLeftChild.mdp @@ -35,14 +35,6 @@ <dxl:TraceFlags Value="102001,102002,102003,102074,102120,102144,103001,103014,103015,103022,103027,103033,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.23.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.66.1.0"/> - <dxl:Commutator Mdid="0.521.1.0"/> - <dxl:InverseOp Mdid="0.525.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.521.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/PushGbBelowJoin-NegativeCase.mdp b/src/backend/gporca/data/dxl/minidump/PushGbBelowJoin-NegativeCase.mdp index 483caffcb5..64bd0f3826 100644 --- a/src/backend/gporca/data/dxl/minidump/PushGbBelowJoin-NegativeCase.mdp +++ b/src/backend/gporca/data/dxl/minidump/PushGbBelowJoin-NegativeCase.mdp @@ -9,14 +9,6 @@ <dxl:TraceFlags Value="101013,102001,102002,102003,102053,102144,103001,103027,103033"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.1754.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.1700.1.0"/> - <dxl:RightType Mdid="0.1700.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.1722.1.0"/> - <dxl:Commutator Mdid="0.1756.1.0"/> - <dxl:InverseOp Mdid="0.1757.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/PushSelectWithOuterRefBelowUnion.mdp b/src/backend/gporca/data/dxl/minidump/PushSelectWithOuterRefBelowUnion.mdp index 5e41915cb8..e34db65d87 100644 --- a/src/backend/gporca/data/dxl/minidump/PushSelectWithOuterRefBelowUnion.mdp +++ b/src/backend/gporca/data/dxl/minidump/PushSelectWithOuterRefBelowUnion.mdp @@ -24,14 +24,6 @@ <dxl:SumAgg Mdid="0.2107.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.1096.1.0" Name="<=" ComparisonType="LEq"> - <dxl:LeftType Mdid="0.1082.1.0"/> - <dxl:RightType Mdid="0.1082.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.1088.1.0"/> - <dxl:Commutator Mdid="0.1098.1.0"/> - <dxl:InverseOp Mdid="0.1097.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.23.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/SemiJoinWithWindowsFuncInSubquery.mdp b/src/backend/gporca/data/dxl/minidump/SemiJoinWithWindowsFuncInSubquery.mdp index 1a933d6987..fd2a031785 100644 --- a/src/backend/gporca/data/dxl/minidump/SemiJoinWithWindowsFuncInSubquery.mdp +++ b/src/backend/gporca/data/dxl/minidump/SemiJoinWithWindowsFuncInSubquery.mdp @@ -20,14 +20,6 @@ <dxl:TraceFlags Value="102001,102002,102003,102120,102144,103001,103014,103015,103022,103027,103033,104003,104004,104005,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/Subq2OuterRef2InJoin.mdp b/src/backend/gporca/data/dxl/minidump/Subq2OuterRef2InJoin.mdp index 19a9c69d63..1f097d867f 100644 --- a/src/backend/gporca/data/dxl/minidump/Subq2OuterRef2InJoin.mdp +++ b/src/backend/gporca/data/dxl/minidump/Subq2OuterRef2InJoin.mdp @@ -39,14 +39,6 @@ <dxl:TraceFlags Value="101013,102001,102002,102003,102043,102074,102113,102120,102144,102147,103001,103014,103015,103022,103027,103029,103033,103037,104003,104004,104005,104006,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/Subq2OuterRefMultiLevelInOn.mdp b/src/backend/gporca/data/dxl/minidump/Subq2OuterRefMultiLevelInOn.mdp index 5d76aa3a05..c8224628ce 100644 --- a/src/backend/gporca/data/dxl/minidump/Subq2OuterRefMultiLevelInOn.mdp +++ b/src/backend/gporca/data/dxl/minidump/Subq2OuterRefMultiLevelInOn.mdp @@ -68,14 +68,6 @@ <dxl:TraceFlags Value="101013,102001,102002,102003,102043,102074,102113,102120,102144,102147,103001,103014,103015,103022,103027,103029,103033,103037,104003,104004,104005,104006,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/Subq2PartialDecorrelate.mdp b/src/backend/gporca/data/dxl/minidump/Subq2PartialDecorrelate.mdp index f2288aabd1..36acbc042d 100644 --- a/src/backend/gporca/data/dxl/minidump/Subq2PartialDecorrelate.mdp +++ b/src/backend/gporca/data/dxl/minidump/Subq2PartialDecorrelate.mdp @@ -57,14 +57,6 @@ <dxl:TraceFlags Value="101013,102001,102002,102003,102074,102113,102120,102144,102147,103001,103014,103015,103022,103027,103029,103033,103037,104003,104004,104005,104006,105000"/> </dxl:OptimizerConfig> <dxl:Metadata SystemIds="0.GPDB"> - <dxl:GPDBScalarOp Mdid="0.416.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.23.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.474.1.0"/> - <dxl:Commutator Mdid="0.15.1.0"/> - <dxl:InverseOp Mdid="0.417.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.15.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> <dxl:LeftType Mdid="0.23.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/TimeStamp-Date-HashJoin.mdp b/src/backend/gporca/data/dxl/minidump/TimeStamp-Date-HashJoin.mdp index 5d62e1734a..d68a5dabac 100644 --- a/src/backend/gporca/data/dxl/minidump/TimeStamp-Date-HashJoin.mdp +++ b/src/backend/gporca/data/dxl/minidump/TimeStamp-Date-HashJoin.mdp @@ -135,14 +135,6 @@ <dxl:SumAgg Mdid="0.2108.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.2347.1.0" Name="=" ComparisonType="Eq"> - <dxl:LeftType Mdid="0.1082.1.0"/> - <dxl:RightType Mdid="0.1114.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.2340.1.0"/> - <dxl:Commutator Mdid="0.2373.1.0"/> - <dxl:InverseOp Mdid="0.2350.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.2060.1.0" Name="=" ComparisonType="Eq"> <dxl:LeftType Mdid="0.1114.1.0"/> <dxl:RightType Mdid="0.1114.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/Union-OuterRefs-Casting-Output.mdp b/src/backend/gporca/data/dxl/minidump/Union-OuterRefs-Casting-Output.mdp index a0719a8f16..0176c22d55 100644 --- a/src/backend/gporca/data/dxl/minidump/Union-OuterRefs-Casting-Output.mdp +++ b/src/backend/gporca/data/dxl/minidump/Union-OuterRefs-Casting-Output.mdp @@ -79,23 +79,6 @@ select * from x2 where a in (select a from y union select 1::int8); </dxl:Type> <dxl:ColumnStatistics Mdid="1.21032616.1.1.7" Name="gp_segment_id" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> <dxl:ColumnStatistics Mdid="1.21032616.1.1.6" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/> - <dxl:GPDBScalarOp Mdid="0.1868.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.21.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.1856.1.0"/> - <dxl:Commutator Mdid="0.1862.1.0"/> - <dxl:InverseOp Mdid="0.1869.1.0"/> - <dxl:HashOpfamily Mdid="0.1977.1.0"/> - <dxl:LegacyHashOpfamily Mdid="0.7100.1.0"/> - <dxl:Opfamilies> - <dxl:Opfamily Mdid="0.1976.1.0"/> - <dxl:Opfamily Mdid="0.1977.1.0"/> - <dxl:Opfamily Mdid="0.4054.1.0"/> - <dxl:Opfamily Mdid="0.7100.1.0"/> - <dxl:Opfamily Mdid="0.10009.1.0"/> - </dxl:Opfamilies> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.410.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true"> <dxl:LeftType Mdid="0.20.1.0"/> <dxl:RightType Mdid="0.20.1.0"/> diff --git a/src/backend/gporca/data/dxl/minidump/UnnestSQJoins.mdp b/src/backend/gporca/data/dxl/minidump/UnnestSQJoins.mdp index 318e57b8ef..023a7d3bb2 100644 --- a/src/backend/gporca/data/dxl/minidump/UnnestSQJoins.mdp +++ b/src/backend/gporca/data/dxl/minidump/UnnestSQJoins.mdp @@ -47,14 +47,6 @@ WHERE <dxl:SumAgg Mdid="0.2107.1.0"/> <dxl:CountAgg Mdid="0.2147.1.0"/> </dxl:Type> - <dxl:GPDBScalarOp Mdid="0.1869.1.0" Name="<>" ComparisonType="NEq"> - <dxl:LeftType Mdid="0.20.1.0"/> - <dxl:RightType Mdid="0.21.1.0"/> - <dxl:ResultType Mdid="0.16.1.0"/> - <dxl:OpFunc Mdid="0.1857.1.0"/> - <dxl:Commutator Mdid="0.1863.1.0"/> - <dxl:InverseOp Mdid="0.1868.1.0"/> - </dxl:GPDBScalarOp> <dxl:GPDBScalarOp Mdid="0.660.1.0" Name="<" ComparisonType="LT"> <dxl:LeftType Mdid="0.19.1.0"/> <dxl:RightType Mdid="0.19.1.0"/> diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h b/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h index 1ebac5ce73..3d5ec8c1c1 100644 --- a/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h +++ b/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h @@ -22,7 +22,6 @@ #include "gpopt/operators/CScalarArrayCmp.h" #include "gpopt/operators/CScalarBoolOp.h" #include "gpopt/operators/CScalarConst.h" -#include "gpopt/operators/CScalarIdent.h" #include "gpopt/operators/CScalarProjectElement.h" #include "gpopt/xforms/CXform.h" @@ -438,8 +437,6 @@ public: // Helpers for comparisons //------------------------------------------------------------------- - static CExpression *PexprOpComEquality(CMemoryPool *mp, CExpression *pexpr); - // deduplicate array of expressions static CExpressionArray *PdrgpexprDedup(CMemoryPool *mp, CExpressionArray *pdrgpexpr); @@ -1002,10 +999,6 @@ public: static BOOL FScalarConstBoolNull(CExpression *pexpr); - static CScalarIdent *PscalarIdent(CExpression *pexpr); - - static CScalarConst *PscalarConst(CExpression *pexpr); - static BOOL FScalarConstOrBinaryCoercible(CExpression *pexpr); }; // class CUtils diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CPredicateUtils.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CPredicateUtils.h index 3ca2f85c56..825dacc993 100644 --- a/src/backend/gporca/libgpopt/include/gpopt/operators/CPredicateUtils.h +++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CPredicateUtils.h @@ -17,7 +17,6 @@ #include "gpopt/mdcache/CMDAccessor.h" #include "gpopt/operators/CExpression.h" #include "gpopt/operators/CScalarBoolOp.h" -#include "gpopt/operators/CScalarIdent.h" namespace gpopt { @@ -188,9 +187,6 @@ public: // is the given expression a comparison between a scalar ident and a constant static BOOL FCompareIdentToConst(CExpression *pexpr); - static BOOL FCompareIdentToConst(CExpression *pexpr, - CExpression *&pexprIdent, - CExpression *&pexprConst); // is the given expression a comparison between a const and a const static BOOL FCompareConstToConstIgnoreCast(CExpression *pexpr); diff --git a/src/backend/gporca/libgpopt/src/base/CConstraintInterval.cpp b/src/backend/gporca/libgpopt/src/base/CConstraintInterval.cpp index 7a4c091572..fc0f4c3b3b 100644 --- a/src/backend/gporca/libgpopt/src/base/CConstraintInterval.cpp +++ b/src/backend/gporca/libgpopt/src/base/CConstraintInterval.cpp @@ -454,20 +454,38 @@ CConstraintInterval::PciIntervalFromScalarCmp(CMemoryPool *mp, GPOS_ASSERT(nullptr != pexpr); GPOS_ASSERT(CUtils::FScalarCmp(pexpr) || CUtils::FScalarArrayCmp(pexpr)); - // Currently we support expression of the form - // (column relop const) - // (const reolop column) - CExpression *pexprIdent, *pexprConst; - if (CPredicateUtils::FCompareIdentToConst(pexpr, pexprIdent, pexprConst)) + // TODO: - May 28, 2012; add support for other expression forms + // besides (column relop const) + if (CPredicateUtils::FCompareIdentToConst(pexpr)) { // column #ifdef GPOS_DEBUG - CScalarIdent *popScId = CUtils::PscalarIdent(pexprIdent); + CScalarIdent *popScId; + CExpression *pexprLeft = (*pexpr)[0]; + if (CUtils::FScalarIdent((*pexpr)[0])) + { + popScId = CScalarIdent::PopConvert(pexprLeft->Pop()); + } + else + { + GPOS_ASSERT(CCastUtils::FBinaryCoercibleCastedScId(pexprLeft)); + popScId = CScalarIdent::PopConvert((*pexprLeft)[0]->Pop()); + } GPOS_ASSERT(colref == (CColRef *) popScId->Pcr()); #endif // GPOS_DEBUG // constant - CScalarConst *popScConst = CUtils::PscalarConst(pexprConst); + CExpression *pexprRight = (*pexpr)[1]; + CScalarConst *popScConst; + if (CUtils::FScalarConst(pexprRight)) + { + popScConst = CScalarConst::PopConvert(pexprRight->Pop()); + } + else + { + GPOS_ASSERT(CCastUtils::FBinaryCoercibleCastedConst(pexprRight)); + popScConst = CScalarConst::PopConvert((*pexprRight)[0]->Pop()); + } CScalarCmp *popScCmp = CScalarCmp::PopConvert(pexpr->Pop()); return PciIntervalFromColConstCmp(mp, colref, popScCmp->ParseCmpType(), diff --git a/src/backend/gporca/libgpopt/src/base/CUtils.cpp b/src/backend/gporca/libgpopt/src/base/CUtils.cpp index 921f9dffc2..6552a44940 100644 --- a/src/backend/gporca/libgpopt/src/base/CUtils.cpp +++ b/src/backend/gporca/libgpopt/src/base/CUtils.cpp @@ -1420,44 +1420,6 @@ CUtils::FScalarConstIntZero(CExpression *pexprOffset) } } -// Construct commutative equivalent scalar compare operator -// -// In other words, given: -// (A op B) -// then return -// (B op' A) -// if such an operator exists -CExpression * -CUtils::PexprOpComEquality(CMemoryPool *mp, CExpression *pexpr) -{ - GPOS_ASSERT(CUtils::FScalarCmp(pexpr)); - GPOS_ASSERT(2 == pexpr->Arity()); - - CScalarCmp *popCmp = CScalarCmp::PopConvert(pexpr->Pop()); - CMDAccessor *md_accessor = COptCtxt::PoctxtFromTLS()->Pmda(); - const IMDScalarOp *opSc = md_accessor->RetrieveScOp(popCmp->MdIdOp()); - - if (nullptr == opSc->GetCommuteOpMdid()) - { - return nullptr; - } - - CExpressionArray *pdrgpexpr = GPOS_NEW(mp) CExpressionArray(mp); - // Add in reverse order - (*pexpr)[1]->AddRef(); - pdrgpexpr->Append((*pexpr)[1]); - (*pexpr)[0]->AddRef(); - pdrgpexpr->Append((*pexpr)[0]); - - CWStringConst *pstrOp = - CScalarCmp::Pstr(mp, md_accessor, opSc->GetCommuteOpMdid()); - CScalarCmp *popNew = GPOS_NEW(mp) - CScalarCmp(mp, opSc->GetCommuteOpMdid(), pstrOp, opSc->ParseCmpType()); - - CExpression *pexprNew = GPOS_NEW(mp) CExpression(mp, popNew, pdrgpexpr); - return pexprNew; -} - // deduplicate an array of expressions CExpressionArray * CUtils::PdrgpexprDedup(CMemoryPool *mp, CExpressionArray *pdrgpexpr) @@ -1480,22 +1442,20 @@ CUtils::PdrgpexprDedup(CMemoryPool *mp, CExpressionArray *pdrgpexpr) pexpr->Release(); } - // Here we also take into account cast equality and commutative equal - // expressions as possible duplicates. + // Here we also take into account cast equality expressions. This + // allows us to consider the following 2 expressions as duplicates. + // + // 1) + // +--CScalarCmp (=) + // |--CScalarIdent "d" (1) + // +--CScalarIdent "d" (10) + // 2) + // +--CScalarCmp (=) + // |--CScalarCast + // | +--CScalarIdent "d" (1) + // +--CScalarIdent "d" (10) if (pexpr->Pop()->Eopid() == COperator::EopScalarCmp) { - // Cast equality expressions considers the following 2 expressions - // as duplicates: - // - // 1) - // +--CScalarCmp (=) - // |--CScalarIdent "d" (1) - // +--CScalarIdent "d" (10) - // 2) - // +--CScalarCmp (=) - // |--CScalarCast - // | +--CScalarIdent "d" (1) - // +--CScalarIdent "d" (10) CExpressionArray *pdexpr = CCastUtils::PdrgpexprCastEquality(mp, pexpr); for (ULONG ulInner = 0; ulInner < pdexpr->Size(); ulInner++) @@ -1506,27 +1466,6 @@ CUtils::PdrgpexprDedup(CMemoryPool *mp, CExpressionArray *pdrgpexpr) } } pdexpr->Release(); - - // Commutative equal expressions consider the following 2 - // expressions as duplicates: - // - // 1) - // +--CScalarCmp (=) - // |--CScalarIdent "a" (1) - // +--CScalarIdent "b" (10) - // 2) - // +--CScalarCmp (=) - // |--CScalarIdent "b" (10) - // +--CScalarIdent "a" (1) - CExpression *pexprComm = CUtils::PexprOpComEquality(mp, pexpr); - if (pexprComm) - { - if (phsexpr->Insert(pexprComm)) - { - pexprComm->AddRef(); - } - } - CRefCount::SafeRelease(pexprComm); } } @@ -2591,21 +2530,6 @@ CUtils::FScalarConstBoolNull(CExpression *pexpr) return false; } -CScalarIdent * -CUtils::PscalarIdent(CExpression *pexpr) -{ - CScalarIdent *popScId; - if (CUtils::FScalarIdent(pexpr)) - { - popScId = CScalarIdent::PopConvert(pexpr->Pop()); - } - else - { - GPOS_ASSERT(CCastUtils::FBinaryCoercibleCastedScId(pexpr)); - popScId = CScalarIdent::PopConvert((*pexpr)[0]->Pop()); - } - return popScId; -} BOOL CUtils::FScalarConstOrBinaryCoercible(CExpression *pexpr) @@ -2613,23 +2537,6 @@ CUtils::FScalarConstOrBinaryCoercible(CExpression *pexpr) return CUtils::FScalarConst(pexpr) || CCastUtils::FBinaryCoercibleCastedConst(pexpr); } - -CScalarConst * -CUtils::PscalarConst(CExpression *pexpr) -{ - CScalarConst *popScConst; - if (CUtils::FScalarConst(pexpr)) - { - popScConst = CScalarConst::PopConvert(pexpr->Pop()); - } - else - { - GPOS_ASSERT(CCastUtils::FBinaryCoercibleCastedConst(pexpr)); - popScConst = CScalarConst::PopConvert((*pexpr)[0]->Pop()); - } - return popScConst; -} - // checks to see if the expression is a scalar const TRUE BOOL CUtils::FScalarConstTrue(CExpression *pexpr) diff --git a/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp b/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp index 92fa2b32ed..3f1134ddc5 100644 --- a/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp +++ b/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp @@ -3321,7 +3321,7 @@ CExpressionPreprocessor::PexprPreprocess( GPOS_CHECK_ABORT; pexprOuterRefsEleminated->Release(); - // (7) substitute constant predicates + // (7.a) substitute constant predicates ExprToConstantMap *phmExprToConst = GPOS_NEW(mp) ExprToConstantMap(mp); CExpression *pexprPredWithConstReplaced = PexprReplaceColWithConst(mp, pexprTrimmed2, phmExprToConst, true); @@ -3329,11 +3329,22 @@ CExpressionPreprocessor::PexprPreprocess( phmExprToConst->Release(); pexprTrimmed2->Release(); + // (7.b) reorder the children of scalar cmp operator to ensure that left + // child is scalar ident and right child is scalar const + // + // Must happen after 7.a which can insert scalar cmp children with inversed + // format (CONST op IDENT) *and* before any step that relies on reorder + // format (e.g. "infer predicate form constraints") + CExpression *pexprReorderedScalarCmpChildren = + PexprReorderScalarCmpChildren(mp, pexprPredWithConstReplaced); + GPOS_CHECK_ABORT; + pexprPredWithConstReplaced->Release(); + // (8) simplify quantified subqueries CExpression *pexprSubqSimplified = - PexprSimplifyQuantifiedSubqueries(mp, pexprPredWithConstReplaced); + PexprSimplifyQuantifiedSubqueries(mp, pexprReorderedScalarCmpChildren); GPOS_CHECK_ABORT; - pexprPredWithConstReplaced->Release(); + pexprReorderedScalarCmpChildren->Release(); // (9) do preliminary unnesting of scalar subqueries CExpression *pexprSubqUnnested = @@ -3446,36 +3457,30 @@ CExpressionPreprocessor::PexprPreprocess( GPOS_CHECK_ABORT; pexprCollapsedProjects->Release(); - // (26) reorder the children of scalar cmp operator to ensure that left child is scalar ident and right child is scalar const - CExpression *pexrReorderedScalarCmpChildren = - PexprReorderScalarCmpChildren(mp, pexprSubquery); - GPOS_CHECK_ABORT; - pexprSubquery->Release(); - - // (27) rewrite IN subquery to EXIST subquery with a predicate + // (26) rewrite IN subquery to EXIST subquery with a predicate CExpression *pexprExistWithPredFromINSubq = - PexprExistWithPredFromINSubq(mp, pexrReorderedScalarCmpChildren); + PexprExistWithPredFromINSubq(mp, pexprSubquery); GPOS_CHECK_ABORT; - pexrReorderedScalarCmpChildren->Release(); + pexprSubquery->Release(); - // (28) prune partitions + // (27) prune partitions CExpression *pexprPrunedPartitions = PrunePartitions(mp, pexprExistWithPredFromINSubq); GPOS_CHECK_ABORT; pexprExistWithPredFromINSubq->Release(); - // (29) swap logical select over logical project + // (28) swap logical select over logical project CExpression *pexprTransposeSelectAndProject = PexprTransposeSelectAndProject(mp, pexprPrunedPartitions); pexprPrunedPartitions->Release(); - // (30) convert split update to inplace update + // (29) convert split update to inplace update CExpression *pexprSplitUpdateToInplace = ConvertSplitUpdateToInPlaceUpdate(mp, pexprTransposeSelectAndProject); GPOS_CHECK_ABORT; pexprTransposeSelectAndProject->Release(); - // (31) normalize expression again + // (30) normalize expression again CExpression *pexprNormalized2 = CNormalizer::PexprNormalize(mp, pexprSplitUpdateToInplace); GPOS_CHECK_ABORT; diff --git a/src/backend/gporca/libgpopt/src/operators/CPredicateUtils.cpp b/src/backend/gporca/libgpopt/src/operators/CPredicateUtils.cpp index 555ee19a83..925908293f 100644 --- a/src/backend/gporca/libgpopt/src/operators/CPredicateUtils.cpp +++ b/src/backend/gporca/libgpopt/src/operators/CPredicateUtils.cpp @@ -996,17 +996,6 @@ CPredicateUtils::PexprINDFConjunction(CMemoryPool *mp, // is the given expression a comparison between a scalar ident and a constant BOOL CPredicateUtils::FCompareIdentToConst(CExpression *pexpr) -{ - CExpression *pexprIdent; - CExpression *pexprConst; - - return FCompareIdentToConst(pexpr, pexprIdent, pexprConst); -} - -BOOL -CPredicateUtils::FCompareIdentToConst(CExpression *pexpr, - CExpression *&pexprIdent, - CExpression *&pexprConst) { COperator *pop = pexpr->Pop(); @@ -1018,29 +1007,22 @@ CPredicateUtils::FCompareIdentToConst(CExpression *pexpr, CExpression *pexprLeft = (*pexpr)[0]; CExpression *pexprRight = (*pexpr)[1]; - // if left side scalar ident then right side must be a const - if ((CUtils::FScalarIdent(pexprLeft) || - CCastUtils::FBinaryCoercibleCastedScId(pexprLeft)) && - (CUtils::FScalarConst(pexprRight) || - CCastUtils::FBinaryCoercibleCastedConst(pexprRight))) + // left side must be scalar ident + + if (!(CUtils::FScalarIdent(pexprLeft) || + CCastUtils::FBinaryCoercibleCastedScId(pexprLeft))) { - pexprIdent = pexprLeft; - pexprConst = pexprRight; - return true; + return false; } - // if right side scalar ident then left side must be a const - if ((CUtils::FScalarIdent(pexprRight) || - CCastUtils::FBinaryCoercibleCastedScId(pexprRight)) && - (CUtils::FScalarConst(pexprLeft) || - CCastUtils::FBinaryCoercibleCastedConst(pexprLeft))) + // right side must be a constant + if (!(CUtils::FScalarConst(pexprRight) || + CCastUtils::FBinaryCoercibleCastedConst(pexprRight))) { - pexprIdent = pexprRight; - pexprConst = pexprLeft; - return true; + return false; } - return false; + return true; } // is the given expression of the form (col IS DISTINCT FROM const) diff --git a/src/backend/gporca/server/CMakeLists.txt b/src/backend/gporca/server/CMakeLists.txt index 021d9ccb9d..4f0a5f5d4a 100644 --- a/src/backend/gporca/server/CMakeLists.txt +++ b/src/backend/gporca/server/CMakeLists.txt @@ -178,7 +178,8 @@ AggSubqCollapseFalseFilter NestedJoinWithCastedColumn PushConstantSelectPredicat PushConstantSelectPredicateThruJoin-3 PushConstantSelectPredicateThruJoin-4 PushConstantSelectPredicateThruJoin-5 PushConstantSelectPredicateThruJoin-6 PushConstantSelectPredicateThruJoin-7 PushConstantSelectPredicateThruJoin-8 PushConstantSelectPredicateThruJoin-9 PushConstantSelectPredicateThruJoin-10 PushConstantSelectPredicateThruJoin-11 PushConstantSelectPredicateThruJoin-12 PushConstantSelectPredicateThruJoin-13 -PushConstantSelectPredicateThruJoin-14 PushConstantSelectPredicateThruJoin-15; +PushConstantSelectPredicateThruJoin-14 PushConstantSelectPredicateThruJoin-15 PushConstantSelectPredicateThruJoin-16 +PushConstantSelectPredicateThruJoin-17; CArrayCmpTest: ArrayConcat ArrayRef FoldedArrayCmp ArrayCmpAll diff --git a/src/test/regress/expected/qp_select.out b/src/test/regress/expected/qp_select.out new file mode 100644 index 0000000000..0223b9ca4c --- /dev/null +++ b/src/test/regress/expected/qp_select.out @@ -0,0 +1,433 @@ +SET optimizer_trace_fallback TO ON; +-- test that interval constraints are derived correctly +-- start_ignore +-- end_ignore +-- basic +SELECT * FROM qp_select WHERE 1 + 15 >= a AND 1 - 15 <= a; + a +---- + 2 + 4 + 8 + 16 + 1 +(5 rows) + +SELECT * FROM qp_select WHERE a + 15 >= a AND a - 15 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 15 <= a AND a - 15 >= a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a + 0 <= a AND a - 0 >= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +-- basic and arguments reversed +SELECT * FROM qp_select WHERE 1 - 15 <= a AND 1 + 15 >= a; + a +---- + 2 + 4 + 8 + 16 + 1 +(5 rows) + +SELECT * FROM qp_select WHERE a - 15 <= a AND a + 15 >= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a - 15 >= a AND a + 15 <= a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a - 0 >= a AND a + 0 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +-- basic non-eq +SELECT * FROM qp_select WHERE 1 + 15 > a AND 1 - 15 < a; + a +--- + 2 + 4 + 8 + 1 +(4 rows) + +SELECT * FROM qp_select WHERE a + 15 > a AND a - 15 < a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 15 < a AND a - 15 > a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a + 0 < a AND a - 0 > a; + a +--- +(0 rows) + +-- basic + or +SELECT * FROM qp_select WHERE 1 + 15 >= a AND 1 - 15 <= a OR a > 5; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 15 >= a AND a - 15 <= a OR a > 5; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 15 <= a AND a - 15 >= a OR a > 5; + a +----- + 8 + 16 + 256 + 32 + 128 + 64 +(6 rows) + +SELECT * FROM qp_select WHERE a + 0 < a AND a - 0 > a OR a > 5; + a +----- + 8 + 16 + 256 + 64 + 32 + 128 +(6 rows) + +-- or + basic +SELECT * FROM qp_select WHERE a > 5 OR 1 + 15 >= a AND 1 - 15 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 32 + 128 + 1 + 64 +(9 rows) + +SELECT * FROM qp_select WHERE a > 5 OR a + 15 >= a AND a - 15 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 32 + 128 + 1 + 64 +(9 rows) + +SELECT * FROM qp_select WHERE a > 5 OR a + 15 <= a AND a - 15 >= a; + a +----- + 8 + 16 + 256 + 64 + 32 + 128 +(6 rows) + +SELECT * FROM qp_select WHERE a > 5 OR a + 0 < a AND a - 0 > a; + a +----- + 8 + 16 + 256 + 64 + 32 + 128 +(6 rows) + +--or +SELECT * FROM qp_select WHERE 1 + 15 >= a OR 1 - 15 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 15 >= a OR a - 15 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 32 + 128 + 1 + 64 +(9 rows) + +SELECT * FROM qp_select WHERE a + 15 <= a OR a - 15 >= a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a + 0 <= a OR a - 0 >= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +--or eq +SELECT * FROM qp_select WHERE 1 + 15 = a OR 1 - 15 = a; + a +---- + 16 +(1 row) + +SELECT * FROM qp_select WHERE a + 15 = a OR a - 15 = a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a + 15 = a OR a - 15 = a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a + 0 = a OR a - 0 = a; + a +----- + 2 + 4 + 8 + 16 + 256 + 32 + 128 + 1 + 64 +(9 rows) + +-- basic commutative operator +SELECT * FROM qp_select WHERE 1 + 15 <= a AND 1 - 15 >= a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a + 15 <= a AND a - 15 >= a; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a + 15 >= a AND a - 15 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 0 >= a AND a - 0 <= a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +-- basic swap position (left vs right) of compare arguments +SELECT * FROM qp_select WHERE a >= 1 + 15 AND a <= 1 - 15; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a >= a + 15 AND a <= a - 15; + a +--- +(0 rows) + +SELECT * FROM qp_select WHERE a <= a + 15 AND a >= a - 15; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a <= a + 0 AND a >= a - 0; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +-- <> operator +SELECT * FROM qp_select WHERE 1 + 15 <> a AND 1 - 15 <> a; + a +----- + 2 + 4 + 8 + 256 + 1 + 64 + 32 + 128 +(8 rows) + +SELECT * FROM qp_select WHERE a + 15 <> a AND a - 15 <> a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 15 <> a AND a - 15 <> a; + a +----- + 2 + 4 + 8 + 16 + 256 + 1 + 64 + 32 + 128 +(9 rows) + +SELECT * FROM qp_select WHERE a + 0 <> a AND a - 0 <> a; + a +--- +(0 rows) + +RESET optimizer_trace_fallback; diff --git a/src/test/regress/greenplum_schedule b/src/test/regress/greenplum_schedule index 119d784d43..589db14150 100755 --- a/src/test/regress/greenplum_schedule +++ b/src/test/regress/greenplum_schedule @@ -190,7 +190,7 @@ test: rpt rpt_joins rpt_tpch rpt_returning test: bfv_cte test: bfv_joins bfv_subquery bfv_planner bfv_legacy bfv_temp bfv_dml -test: qp_olap_mdqa qp_misc gp_recursive_cte qp_dml_joins qp_skew +test: qp_olap_mdqa qp_misc gp_recursive_cte qp_dml_joins qp_skew qp_select test: qp_misc_jiras qp_with_clause qp_executor qp_olap_windowerr qp_olap_window qp_derived_table qp_bitmapscan qp_dropped_cols test: qp_with_functional_inlining qp_with_functional_noinlining diff --git a/src/test/regress/sql/qp_select.sql b/src/test/regress/sql/qp_select.sql new file mode 100644 index 0000000000..a9a71d0653 --- /dev/null +++ b/src/test/regress/sql/qp_select.sql @@ -0,0 +1,70 @@ +SET optimizer_trace_fallback TO ON; + +-- test that interval constraints are derived correctly +-- start_ignore +DROP TABLE IF EXISTS qp_select; +CREATE TABLE qp_select(a int); +INSERT INTO qp_select VALUES (1), (2), (4), (8), (16), (32), (64), (128), (256); +-- end_ignore + +-- basic +SELECT * FROM qp_select WHERE 1 + 15 >= a AND 1 - 15 <= a; +SELECT * FROM qp_select WHERE a + 15 >= a AND a - 15 <= a; +SELECT * FROM qp_select WHERE a + 15 <= a AND a - 15 >= a; +SELECT * FROM qp_select WHERE a + 0 <= a AND a - 0 >= a; + +-- basic and arguments reversed +SELECT * FROM qp_select WHERE 1 - 15 <= a AND 1 + 15 >= a; +SELECT * FROM qp_select WHERE a - 15 <= a AND a + 15 >= a; +SELECT * FROM qp_select WHERE a - 15 >= a AND a + 15 <= a; +SELECT * FROM qp_select WHERE a - 0 >= a AND a + 0 <= a; + +-- basic non-eq +SELECT * FROM qp_select WHERE 1 + 15 > a AND 1 - 15 < a; +SELECT * FROM qp_select WHERE a + 15 > a AND a - 15 < a; +SELECT * FROM qp_select WHERE a + 15 < a AND a - 15 > a; +SELECT * FROM qp_select WHERE a + 0 < a AND a - 0 > a; + +-- basic + or +SELECT * FROM qp_select WHERE 1 + 15 >= a AND 1 - 15 <= a OR a > 5; +SELECT * FROM qp_select WHERE a + 15 >= a AND a - 15 <= a OR a > 5; +SELECT * FROM qp_select WHERE a + 15 <= a AND a - 15 >= a OR a > 5; +SELECT * FROM qp_select WHERE a + 0 < a AND a - 0 > a OR a > 5; + +-- or + basic +SELECT * FROM qp_select WHERE a > 5 OR 1 + 15 >= a AND 1 - 15 <= a; +SELECT * FROM qp_select WHERE a > 5 OR a + 15 >= a AND a - 15 <= a; +SELECT * FROM qp_select WHERE a > 5 OR a + 15 <= a AND a - 15 >= a; +SELECT * FROM qp_select WHERE a > 5 OR a + 0 < a AND a - 0 > a; + +--or +SELECT * FROM qp_select WHERE 1 + 15 >= a OR 1 - 15 <= a; +SELECT * FROM qp_select WHERE a + 15 >= a OR a - 15 <= a; +SELECT * FROM qp_select WHERE a + 15 <= a OR a - 15 >= a; +SELECT * FROM qp_select WHERE a + 0 <= a OR a - 0 >= a; + +--or eq +SELECT * FROM qp_select WHERE 1 + 15 = a OR 1 - 15 = a; +SELECT * FROM qp_select WHERE a + 15 = a OR a - 15 = a; +SELECT * FROM qp_select WHERE a + 15 = a OR a - 15 = a; +SELECT * FROM qp_select WHERE a + 0 = a OR a - 0 = a; + +-- basic commutative operator +SELECT * FROM qp_select WHERE 1 + 15 <= a AND 1 - 15 >= a; +SELECT * FROM qp_select WHERE a + 15 <= a AND a - 15 >= a; +SELECT * FROM qp_select WHERE a + 15 >= a AND a - 15 <= a; +SELECT * FROM qp_select WHERE a + 0 >= a AND a - 0 <= a; + +-- basic swap position (left vs right) of compare arguments +SELECT * FROM qp_select WHERE a >= 1 + 15 AND a <= 1 - 15; +SELECT * FROM qp_select WHERE a >= a + 15 AND a <= a - 15; +SELECT * FROM qp_select WHERE a <= a + 15 AND a >= a - 15; +SELECT * FROM qp_select WHERE a <= a + 0 AND a >= a - 0; + +-- <> operator +SELECT * FROM qp_select WHERE 1 + 15 <> a AND 1 - 15 <> a; +SELECT * FROM qp_select WHERE a + 15 <> a AND a - 15 <> a; +SELECT * FROM qp_select WHERE a + 15 <> a AND a - 15 <> a; +SELECT * FROM qp_select WHERE a + 0 <> a AND a - 0 <> a; + +RESET optimizer_trace_fallback; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
