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="&gt;=" 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="&lt;=" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&gt;=" 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="&lt;=" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;=" 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="&lt;" 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="&lt;=" 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="&gt;" 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="&lt;=" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&gt;" 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="&gt;=" 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="&gt;" 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="&gt;=" 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="&gt;&gt;=" 
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="&gt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&gt;" 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 &gt; 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="&lt;" 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="&lt;=" 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 &gt; 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="&lt;" 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="&lt;" 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="&lt;=" 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="&lt;" 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="&gt;" 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="&lt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&gt;" 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="&gt;" 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="&gt;=" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&gt;=" 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="&lt;&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;" 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="&gt;" 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="&lt;&gt;" 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="&lt;&gt;" 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="&lt;" 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="&gt;" 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="&gt;" 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="&lt;=" 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="&gt;" 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="&lt;=" 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="&gt;" 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="&gt;=" 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="&gt;" 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="&lt;" 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="&lt;=" 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="&gt;=" 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="&gt;=" 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="&lt;=" 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="&lt;=" 
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="&gt;=" 
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="&lt;" 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="&gt;" 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="&lt;" 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="&lt;" 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="&lt;=" 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="&lt;&gt;" 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="&lt;" 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]


Reply via email to