You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by ma...@apache.org on 2025/02/21 09:45:15 UTC
(cloudberry) branch main updated (17e6c8b122 -> 7568f37687)
This is an automated email from the ASF dual-hosted git repository.
maxyang pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
from 17e6c8b122 Fix performance regression caused by upstream materialized view changes
new 38d8088792 Remove unused index strategy and subtype information from Orca (#16868)
new 940bf22d5e [ORCA] Update DeriveTableDescriptor to return set of descriptors
new cb4ccfd1a5 [ORCA] Avoid extra motion from multiple self LOJ/ROJ
new 2c4229a67c [cleanup] Remove unused code
new 3e8bbf1e1b Enable time-related cross-type pred stats calculation
new 4f68dcf01a Derive dynamic table scan cardinality from leaf parts
new 9d5bf9aec7 Port reltuples to Relation
new dc32e92697 [ORCA] Add GUC to disable right outer join (ROJ)
new 4c43fcaf0d Remove redundant hash keys of motion (#16883)
new 10abbc1ae2 Subquery Scan code cleanup (#16891)
new ede206b463 [ORCA] Fix missing pdshashedEquiv in IndexOnlyScan (#16898)
new 364c3abf10 [ORCA] Use standard library for compile time assert (#16938)
new f9c64761ce [ORCA] Implement plan hints for scan types (#16731)
new e148dde531 Derive statistics only for used columns in Orca's Union All operator (#16811)
new 87428023bf Fill argtypes of eageragg (#16979)
new a28770e6f8 Update CDynamicPtrArray::Equals to use operator==
new 576811061a Update CDynamicPtrArray::Sort/IsSorted to require CompareFn
new 4130f66f36 Revert "Queries on Distributed Replicated tables hangs when using optimizer"
new cc4e8f3c2d Fix query hang / fallback if involving CTE of replicated
new d09a32972f Fix memorys leak caught via ICW w/memory check
new 80a26c835b Enable ORCA to generate plans with row level security enabled (#16869)
new 50ad35a453 Fix for finding child output columns when parent is union while join pruning (#16960)
new 590d18180c Fix typo of statistics under gporca.
new b05263bde4 [ORCA] Update all join operators to derive set of table descriptors
new 22bfff2b63 [ORCA] Implement plan hints for row hints
new 49b1c56207 [ORCA] Fix SIGSEGV using subquery exists on materialized view
new 78fa230700 Properly set function column count for table value functions in Orca
new 58dcaf000c [ORCA] Fix ident to const predicate push down optimization
new 55a8f905b1 Enable plan hints regress test
new 7568f37687 Fix build && icw tests
The 30 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.abi-check/7.1.0/postgres.symbols.ignore | 1 +
.abi-check/7.1.0/postgres.types.ignore | 2 +
gpcontrib/pg_hint_plan/pg_hint_plan.c | 10 +-
src/backend/gpopt/config/CConfigParamMapping.cpp | 9 +
src/backend/gpopt/gpdbwrappers.cpp | 11 +
.../gpopt/translate/CTranslatorDXLToPlStmt.cpp | 412 +-
.../gpopt/translate/CTranslatorQueryToDXL.cpp | 89 +-
.../gpopt/translate/CTranslatorRelcacheToDXL.cpp | 4 +-
src/backend/gpopt/translate/CTranslatorUtils.cpp | 51 -
src/backend/gpopt/utils/COptTasks.cpp | 162 +-
.../gporca/data/dxl/indexjoin/positive_04.mdp | 28 +-
.../3WayJoinOnMultiDistributionColumnsTables.mdp | 6 +-
...oinOnMultiDistributionColumnsTablesNoMotion.mdp | 6 +-
.../3WayJoinUsingOperatorsOfNonDefaultOpfamily.mdp | 6 +-
.../4WayJoinInferredPredsRemovedWith2Motion.mdp | 8 +-
.../data/dxl/minidump/AddEqualityPredicates.mdp | 2 +-
.../data/dxl/minidump/AddPredsInSubqueries.mdp | 4 +-
.../dxl/minidump/AddRedistributeBeforeInsert-1.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-2.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-3.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-4.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-5.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/Agg-Limit.mdp | 2 +-
.../gporca/data/dxl/minidump/Agg-NonSplittable.mdp | 2 +-
.../gporca/data/dxl/minidump/AggWithSubqArgs.mdp | 4 +-
.../data/dxl/minidump/AggWithVolatileFunc.mdp | 2 +-
.../dxl/minidump/AggonExternalTableNoMotion.mdp | 2 +-
.../gporca/data/dxl/minidump/AggregateWithSkew.mdp | 2 +-
.../AggregatesConstraintDeriveNegation.mdp | 2 +-
.../minidump/AllSubqueryWithSubqueryInScalar.mdp | 4 +-
.../AllowIndexOnlyScanOnAppendOnlyTable.mdp | 2 +-
...exOnlyScanOnMixedAppendOnlyPartitionedTable.mdp | 2 +-
.../AllowIndexOnlyScanOnMixedPartitionedTable.mdp | 4 +-
.../data/dxl/minidump/AntiSemiJoin2Select-1.mdp | 4 +-
.../data/dxl/minidump/AntiSemiJoin2Select-2.mdp | 4 +-
.../AnySubq-With-NonScalarSubqueryChild-1.mdp | 6 +-
.../AnySubq-With-NonScalarSubqueryChild-2.mdp | 6 +-
.../AnySubq-With-NonScalarSubqueryChild-3.mdp | 6 +-
.../AnySubqueryWithAllSubqueryInScalar.mdp | 6 +-
.../minidump/AnySubqueryWithSubqueryInScalar.mdp | 4 +-
.../dxl/minidump/AnySubqueryWithVolatileComp.mdp | 4 +-
.../dxl/minidump/AnySubqueryWithVolatileFunc.mdp | 4 +-
.../data/dxl/minidump/ArrayCmp-IN-ManyElements.mdp | 2 +-
.../data/dxl/minidump/ArrayCmpAll-Disjunct.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCmpAll.mdp | 314 +-
.../gporca/data/dxl/minidump/ArrayCmpAllEmpty.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCmpInList.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCoerceCast.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCoerceExpr.mdp | 2 +-
.../data/dxl/minidump/ArrayCoerceImplicitCast.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/ArrayRef.mdp | 2 +-
.../gporca/data/dxl/minidump/AssertMaxOneRow.mdp | 6 +-
.../dxl/minidump/AssertOneRowWithCorrelation.mdp | 2 +-
.../minidump/AvoidConstraintDerivationForLike.mdp | 2 +-
.../gporca/data/dxl/minidump/BRINScan-Or.mdp | 8 +-
.../dxl/minidump/BTreeIndex-Against-InList.mdp | 2 +-
.../minidump/BTreeIndex-Against-InListLarge.mdp | 2 +-
.../minidump/BTreeIndex-Against-ScalarSubquery.mdp | 2 +-
...ard-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
...ackward-IndexScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
...ckward-IndexScan-OrderBy-on-SingleCol-Index.mdp | 2 +-
.../gporca/data/dxl/minidump/BitmapBoolAnd.mdp | 4 +-
.../data/dxl/minidump/BitmapBoolOp-DeepTree.mdp | 4 +-
.../data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp | 104 +-
.../data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp | 104 +-
.../data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp | 104 +-
.../gporca/data/dxl/minidump/BitmapBoolOr.mdp | 4 +-
.../dxl/minidump/BitmapIndex-Against-InList.mdp | 2 +-
.../dxl/minidump/BitmapIndex-ChooseHashJoin.mdp | 4 +-
.../minidump/BitmapIndexApply-Basic-SelfJoin.mdp | 4 +-
.../minidump/BitmapIndexApply-Basic-TwoTables.mdp | 6 +-
.../BitmapIndexApply-Complex-Condition.mdp | 14 +-
.../BitmapIndexApply-InnerSelect-Basic.mdp | 6 +-
.../BitmapIndexApply-InnerSelect-PartTable.mdp | 6 +-
.../dxl/minidump/BitmapIndexApply-PartTable.mdp | 6 +-
.../dxl/minidump/BitmapIndexNLJWithProject.mdp | 4 +-
.../minidump/BitmapIndexNLJWithProjectNoFilt.mdp | 4 +-
.../dxl/minidump/BitmapIndexNLOJWithProject.mdp | 4 +-
.../minidump/BitmapIndexNLOJWithProjectNonPart.mdp | 4 +-
.../dxl/minidump/BitmapIndexProbeMergeFilters.mdp | 843 -
...tmapIndexScan-WithUnsupportedOperatorFilter.mdp | 104 +-
.../gporca/data/dxl/minidump/BitmapIndexScan.mdp | 6 +-
.../dxl/minidump/BitmapIndexScanChooseIndex.mdp | 2 +-
.../data/dxl/minidump/BitmapIndexScanCost.mdp | 2 +-
.../minidump/BitmapIndexUnsupportedOperator.mdp | 2 +-
.../BitmapScan-Hetrogeneous-Partitioned.mdp | 2 +-
...BitmapTableScan-AO-Btree-PickIndexWithNoGap.mdp | 2 +-
.../BitmapTableScan-AO-Btree-PickOnlyHighNDV.mdp | 2 +-
.../data/dxl/minidump/BitmapTableScan-AO-Btree.mdp | 4 +-
.../data/dxl/minidump/BitmapTableScan-AO.mdp | 104 +-
.../dxl/minidump/BitmapTableScan-AndCondition.mdp | 4 +-
.../data/dxl/minidump/BitmapTableScan-Basic.mdp | 4 +-
.../minidump/BitmapTableScan-ColumnOnRightSide.mdp | 4 +-
.../minidump/BitmapTableScan-ComplexConjDisj.mdp | 2 +-
.../BitmapTableScan-ConjDisjWithOuterRefs.mdp | 4 +-
.../minidump/Blocking-Spool-Parallel-Union-All.mdp | 22 +-
.../dxl/minidump/BpCharMCVCardinalityEquals.mdp | 2 +-
.../minidump/BpCharMCVCardinalityGreaterThan.mdp | 2 +-
.../data/dxl/minidump/BroadcastSkewedHashjoin.mdp | 4 +-
.../minidump/BtreeIndexNLJWithProjectNoPart.mdp | 4 +-
.../dxl/minidump/BtreeIndexNLOJWithProject.mdp | 4 +-
.../NoOpMotionUsesOnlyGroupOutputColumns.mdp | 12 +-
...rallelUnionAllWithNotEqualNumOfDistrColumns.mdp | 12 +-
...lUnionAllWithSingleNotRedistributableColumn.mdp | 12 +-
.../TwoHashedTables.mdp | 12 +-
.../gporca/data/dxl/minidump/CSQ-VolatileTVF.mdp | 2 +-
.../gporca/data/dxl/minidump/CTAS-Random.mdp | 2 +-
.../dxl/minidump/CTAS-With-Global-Local-Agg.mdp | 2 +-
...stributed-from-replicated-distributed-table.mdp | 2 +-
.../gporca/data/dxl/minidump/CTAS-with-Limit.mdp | 2 +-
...CTAS-with-hashed-distributed-external-table.mdp | 2 +-
...AS-with-randomly-distributed-external-table.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTAS.mdp | 2 +-
.../dxl/minidump/CTAS_OrderedAgg_multiple_cols.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-1.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-10.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-11.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-2.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-3.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-4.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-5.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/CTE-6.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-7.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/CTE-8.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-9.mdp | 4 +-
.../minidump/CTE-Join-Redistribute-Producer.mdp | 2 +-
.../dxl/minidump/CTE-NestedWithPrunedProducer.mdp | 2 +-
.../data/dxl/minidump/CTE-NoPushProperties.mdp | 2 +-
.../gporca/data/dxl/minidump/CTE-PartTbl.mdp | 10 +-
.../gporca/data/dxl/minidump/CTE-Preds1.mdp | 2 +-
.../gporca/data/dxl/minidump/CTE-Preds2.mdp | 2 +-
.../data/dxl/minidump/CTE-PushProperties.mdp | 2 +-
.../gporca/data/dxl/minidump/CTE-volatile.mdp | 2 +-
.../data/dxl/minidump/CTE-with-random-filter.mdp | 2 +-
.../gporca/data/dxl/minidump/CTE15HAReplicated.mdp | 4 +-
.../gporca/data/dxl/minidump/CTE15Replicated.mdp | 4 +-
.../gporca/data/dxl/minidump/CTE2HAReplicated.mdp | 4 +-
.../gporca/data/dxl/minidump/CTE2Replicated.mdp | 4 +-
.../dxl/minidump/CTEConstraintDeriveNegation.mdp | 2 +-
.../minidump/CTEMergeGroupsCircularDeriveStats.mdp | 4 +-
.../dxl/minidump/CTEMisAlignedProducerConsumer.mdp | 2 +-
.../data/dxl/minidump/CTEWithMergedGroup.mdp | 4 +-
.../data/dxl/minidump/CTEWithVolatileFunction.mdp | 10 +-
.../gporca/data/dxl/minidump/CTEinlining.mdp | 2 +-
.../dxl/minidump/CannotCollapseCascadeProjects.mdp | 2 +-
.../data/dxl/minidump/CannotPullGrpColAboveAgg.mdp | 788 +-
.../data/dxl/minidump/CapGbCardToSelectCard.mdp | 34 +-
.../Cascaded-UnionAll-Differing-Cols-Order.mdp | 6 +-
.../minidump/Cascaded-UnionAll-Differing-Cols.mdp | 6 +-
.../minidump/Cascaded-UnionAll-Same-Cols-Order.mdp | 2 +-
.../gporca/data/dxl/minidump/CastOnSubquery.mdp | 4 +-
.../data/dxl/minidump/CastedInClauseWithMCV.mdp | 2 +-
.../dxl/minidump/CastedScalarIf-On-Index-Key.mdp | 2 +-
.../gporca/data/dxl/minidump/Char-Cardinality.mdp | 2 +-
.../gporca/data/dxl/minidump/CheckAsUser.mdp | 2 +-
.../data/dxl/minidump/Citext-Cardinality.mdp | 2 +-
.../data/dxl/minidump/Coalesce-With-Subquery.mdp | 8 +-
.../gporca/data/dxl/minidump/CoerceToDomain.mdp | 16 +-
.../gporca/data/dxl/minidump/CoerceViaIO.mdp | 2 +-
.../dxl/minidump/CollapseCascadeProjects2of2.mdp | 2 +-
.../dxl/minidump/CollapseCascadeProjects2of3.mdp | 2 +-
.../dxl/minidump/CollapseGb-MultipleColumn.mdp | 2 +-
.../gporca/data/dxl/minidump/CollapseGb-Nested.mdp | 2 +-
.../data/dxl/minidump/CollapseGb-SingleColumn.mdp | 2 +-
.../dxl/minidump/CollapseGb-With-Agg-Funcs.mdp | 2 +-
.../dxl/minidump/CollapseGb-Without-Agg-Funcs.mdp | 2 +-
.../gporca/data/dxl/minidump/CollapseNot.mdp | 2 +-
.../minidump/CollapseProject-SetReturning-CTE.mdp | 2 +-
.../dxl/minidump/CollapseProject-SetReturning.mdp | 2 +-
.../data/dxl/minidump/CompositeTypeRelMdId.mdp | 2 +-
.../data/dxl/minidump/ComputedGroupByCol.mdp | 2 +-
.../ConstScalarFuncNotPushedBelowGather.mdp | 2 +-
...onstTblGetUnderSubqUnderProjectWithOuterRef.mdp | 2 +-
.../ConstTblGetUnderSubqWithNoOuterRef.mdp | 4 +-
.../minidump/ConstTblGetUnderSubqWithOuterRef.mdp | 4 +-
.../minidump/ConstraintIntervalIncludesNull.mdp | 2 +-
.../ConstraintIntervalWithBoolIncludesNull.mdp | 2 +-
.../ConstraintIntervalWithInIncludesNull.mdp | 2 +-
.../ConstraintIntervalWithInIncludesNullArray.mdp | 2 +-
...nstraintIntervalWithMultiColumnsIncludeNull.mdp | 2 +-
.../ConstraintIntervalWithNotIncludesNull.mdp | 2 +-
.../dxl/minidump/ConvertHashToRandomInsert.mdp | 4 +-
.../dxl/minidump/ConvertHashToRandomSelect.mdp | 4 +-
.../data/dxl/minidump/Correlated-AntiSemiJoin.mdp | 4 +-
.../minidump/Correlated-LASJ-With-Outer-Col.mdp | 4 +-
.../minidump/Correlated-LASJ-With-Outer-Const.mdp | 4 +-
.../minidump/Correlated-LASJ-With-Outer-Expr.mdp | 4 +-
.../data/dxl/minidump/Correlated-SemiJoin.mdp | 4 +-
.../Correlated-Stat-Function-Dependency-2.mdp | 2 +-
.../Correlated-Stat-Function-Dependency-3.mdp | 2 +-
.../Correlated-Stat-Function-Dependency.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-2.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-3.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-4.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-5.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct.mdp | 2 +-
.../dxl/minidump/CorrelatedAntiSemiJoin-True.mdp | 36 +-
.../minidump/CorrelatedIN-LeftSemiJoin-Limit.mdp | 4 +-
.../minidump/CorrelatedIN-LeftSemiJoin-True.mdp | 4 +-
.../minidump/CorrelatedIN-LeftSemiNotIn-True.mdp | 6 +-
.../minidump/CorrelatedLeftSemiNLJoinWithLimit.mdp | 4 +-
.../CorrelatedNLJ-PartSelector-Subplan.mdp | 4 +-
.../minidump/CorrelatedNLJWithStreamingSpool.mdp | 4 +-
.../minidump/CorrelatedNLJWithTrueCondition.mdp | 4 +-
.../data/dxl/minidump/CorrelatedSemiJoin-True.mdp | 36 +-
.../CorrelatedSubqueryWithAggWindowFunc.mdp | 4 +-
.../dxl/minidump/Correlation-With-Casting-1.mdp | 2 +-
.../dxl/minidump/Correlation-With-Casting-2.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CountAny.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/CountStar.mdp | 4 +-
.../gporca/data/dxl/minidump/CoveringIndex-1.mdp | 2 +-
.../gporca/data/dxl/minidump/CoveringIndex-2.mdp | 2 +-
.../gporca/data/dxl/minidump/CoveringIndex-3.mdp | 2 +-
.../data/dxl/minidump/CoveringIndex-Cost-1.mdp | 2 +-
.../data/dxl/minidump/CoveringIndex-Cost-2.mdp | 2 +-
.../minidump/CoveringIndex-DoesNotSupport-Gin.mdp | 2 +-
.../minidump/CoveringIndex-DoesSupport-Gist.mdp | 2 +-
.../minidump/DML-ComputeScalar-With-Outerref.mdp | 4 +-
.../data/dxl/minidump/DML-Filter-With-OuterRef.mdp | 4 +-
.../data/dxl/minidump/DML-Replicated-Input.mdp | 2 +-
.../dxl/minidump/DML-UnionAll-With-OuterRef.mdp | 30 +-
.../minidump/DML-UnionAll-With-Universal-Child.mdp | 693 +-
.../data/dxl/minidump/DML-Volatile-Function.mdp | 2 +-
.../minidump/DML-With-CoordinatorOnlyTable-1.mdp | 4 +-
...DML-With-CorrelatedNLJ-With-Universal-Child.mdp | 2 +-
.../minidump/DML-With-HJ-And-UniversalChild.mdp | 4 +-
.../DML-With-Join-With-Universal-Child.mdp | 2 +-
.../dxl/minidump/DML-With-WindowFunc-OuterRef.mdp | 4 +-
.../data/dxl/minidump/DMLCollapseProject.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/DPE-IN.mdp | 4 +-
.../gporca/data/dxl/minidump/DPE-NOT-IN.mdp | 4 +-
.../gporca/data/dxl/minidump/DPE-SemiJoin.mdp | 4 +-
.../dxl/minidump/DPE-with-unsupported-pred.mdp | 6 +-
.../gporca/data/dxl/minidump/DPv2GreedyOnly.mdp | 8 +-
.../gporca/data/dxl/minidump/DPv2MinCardOnly.mdp | 8 +-
.../gporca/data/dxl/minidump/DPv2QueryOnly.mdp | 8 +-
.../gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp | 4 +-
.../gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp | 4 +-
.../dxl/minidump/DQA-GroupBy-HashAggregate1.mdp | 4 +-
.../dxl/minidump/DQA-GroupBy-HashAggregate2.mdp | 2 +-
.../DQA-InnerJoin-GroupBy-HashAggregate.mdp | 4 +-
.../data/dxl/minidump/DQA-KeepOuterReference.mdp | 2 +-
.../dxl/minidump/DQA-NonRedistributableCol.mdp | 2 +-
.../gporca/data/dxl/minidump/DQA-SplitScalar.mdp | 4 +-
.../data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp | 4 +-
.../dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp | 4 +-
.../data/dxl/minidump/DQA-SplitScalarWithGuc.mdp | 4 +-
.../dxl/minidump/DTS-Hetrogeneous-Partitioned.mdp | 2 +-
.../data/dxl/minidump/Date-TimeStamp-HashJoin.mdp | 4 +-
.../data/dxl/minidump/DeduplicatePredicates.mdp | 2 +-
.../Delete-Check-AssignedQueryIdForTargetRel.mdp | 2 +-
.../dxl/minidump/Delete-With-Limit-In-Subquery.mdp | 4 +-
.../dxl/minidump/DeleteMismatchedDistribution.mdp | 4 +-
.../gporca/data/dxl/minidump/DeleteRandomDistr.mdp | 2 +-
.../minidump/DeleteRandomlyDistributedTable.mdp | 2 +-
.../DeleteRandomlyDistributedTableJoin.mdp | 4 +-
.../minidump/DirectDispatch-DynamicIndexScan.mdp | 4 +-
...ctDispatch-GpSegmentId-MultiCol-Conjunction.mdp | 2 +-
...tDispatch-GpSegmentId-SingleCol-Conjunction.mdp | 2 +-
.../dxl/minidump/DirectDispatch-GpSegmentId.mdp | 2 +-
.../data/dxl/minidump/DirectDispatch-IndexScan.mdp | 4 +-
.../DirectDispatch-MultiCol-Disjunction.mdp | 2 +-
.../minidump/DirectDispatch-MultiCol-Negative.mdp | 2 +-
.../data/dxl/minidump/DirectDispatch-MultiCol.mdp | 2 +-
.../DirectDispatch-RandDistTable-Disjunction.mdp | 2 +-
.../dxl/minidump/DirectDispatch-RandDistTable.mdp | 2 +-
...DirectDispatch-SingleCol-Disjunction-IsNull.mdp | 2 +-
...rectDispatch-SingleCol-Disjunction-Negative.mdp | 2 +-
.../DirectDispatch-SingleCol-Disjunction.mdp | 2 +-
.../data/dxl/minidump/DirectDispatch-SingleCol.mdp | 2 +-
.../dxl/minidump/DisableBroadcastThreshold.mdp | 4 +-
.../dxl/minidump/DiscardRedistributeHashJoin.mdp | 4 +-
.../data/dxl/minidump/Distinct-LegacyOpfamily.mdp | 2 +-
.../dxl/minidump/DistinctAgg-NonSplittable.mdp | 2 +-
.../data/dxl/minidump/DistinctQueryWithMotions.mdp | 9 +-
.../dxl/minidump/DonotPushPartConstThruLimit.mdp | 2 +-
.../minidump/DontAddRedistributeBeforeInsert-1.mdp | 2 +-
.../minidump/DontAddRedistributeBeforeInsert-2.mdp | 2 +-
.../dxl/minidump/DoubleNDVCardinalityEquals.mdp | 2 +-
.../gporca/data/dxl/minidump/DqaHavingMax.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/DqaMax.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/DqaMin.mdp | 2 +-
.../gporca/data/dxl/minidump/DqaNoRedistribute.mdp | 2 +-
.../gporca/data/dxl/minidump/DqaSubqueryMax.mdp | 2 +-
.../gporca/data/dxl/minidump/DuplicateGrpCol.mdp | 2 +-
.../data/dxl/minidump/DynamicBitmapBoolOp.mdp | 4 +-
.../data/dxl/minidump/DynamicBitmapIndexScan.mdp | 6 +-
.../dxl/minidump/DynamicBitmapTableScan-Basic.mdp | 2 +-
.../DynamicBitmapTableScan-Heterogeneous.mdp | 4 +-
.../dxl/minidump/DynamicBitmapTableScan-UUID.mdp | 6 +-
.../dxl/minidump/DynamicIndexGet-OuterRefs.mdp | 10 +-
.../dxl/minidump/DynamicIndexGetDroppedCols.mdp | 2 +-
.../minidump/DynamicIndexOnlyScan-Homogenous.mdp | 4 +-
.../minidump/DynamicIndexOnlyScan-InnerJoin.mdp | 973 +-
.../dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp | 1103 +-
.../dxl/minidump/DynamicIndexOnlyScanCosting.mdp | 4 +-
.../dxl/minidump/DynamicIndexScan-BoolFalse.mdp | 4 +-
.../dxl/minidump/DynamicIndexScan-BoolTrue.mdp | 4 +-
.../DynamicIndexScan-DefaultPartition-2.mdp | 4 +-
.../minidump/DynamicIndexScan-DefaultPartition.mdp | 2 +-
.../dxl/minidump/DynamicIndexScan-DroppedCols.mdp | 2 +-
.../minidump/DynamicIndexScan-DroppedColumns.mdp | 4 +-
...ndexScan-Heterogenous-EnabledDateConstraint.mdp | 22 +-
.../DynamicIndexScan-Heterogenous-NoDTS.mdp | 2 +-
.../DynamicIndexScan-Heterogenous-Overlapping.mdp | 2 +-
...icIndexScan-Heterogenous-PartSelectEquality.mdp | 4 +-
...namicIndexScan-Heterogenous-PartSelectRange.mdp | 4 +-
.../DynamicIndexScan-Heterogenous-Union.mdp | 10 +-
...ndexScan-Heterogenous-UnsupportedConstraint.mdp | 14 +-
...IndexScan-Heterogenous-UnsupportedPredicate.mdp | 4 +-
.../dxl/minidump/DynamicIndexScan-Heterogenous.mdp | 2 +-
...cIndexScan-Homogenous-EnabledDateConstraint.mdp | 14 +-
...cIndexScan-Homogenous-UnsupportedConstraint.mdp | 14 +-
.../dxl/minidump/DynamicIndexScan-Homogenous.mdp | 2 +-
.../DynamicIndexScan-OpenEndedPartitions.mdp | 4 +-
.../data/dxl/minidump/DynamicIndexScan-Relabel.mdp | 4 +-
.../data/dxl/minidump/DynamicIndexScanCosting.mdp | 4 +-
.../data/dxl/minidump/EagerAggEmptyInput.mdp | 10 +-
.../data/dxl/minidump/EagerAggExpression.mdp | 10 +-
.../dxl/minidump/EagerAggGroupColumnInJoin.mdp | 10 +-
.../gporca/data/dxl/minidump/EagerAggMax.mdp | 10 +-
.../dxl/minidump/EagerAggMaxWithNestedLoop.mdp | 12 +-
.../gporca/data/dxl/minidump/EagerAggMinMax.mdp | 16 +-
.../gporca/data/dxl/minidump/EagerAggSubquery.mdp | 10 +-
.../data/dxl/minidump/EagerAggUnsupportedAgg.mdp | 22 +-
.../data/dxl/minidump/EffectOfLocalPredOnJoin.mdp | 6 +-
.../data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp | 11295 -------------
.../data/dxl/minidump/EffectOfLocalPredOnJoin3.mdp | 6 +-
.../data/dxl/minidump/EffectsOfJoinFilter.mdp | 4 +-
.../gporca/data/dxl/minidump/EqualityJoin.mdp | 4 +-
.../dxl/minidump/EqualityPredicateOverDate.mdp | 68 +-
.../data/dxl/minidump/EquiJoinOnExpr-Supported.mdp | 2 +-
.../dxl/minidump/EquiJoinOnExpr-Unsupported.mdp | 2 +-
.../data/dxl/minidump/Equiv-HashedDistr-1.mdp | 316 +-
.../data/dxl/minidump/Equiv-HashedDistr-2.mdp | 316 +-
.../gporca/data/dxl/minidump/EquivClassesAndOr.mdp | 6 +-
.../data/dxl/minidump/EquivClassesIntersect.mdp | 4 +-
.../gporca/data/dxl/minidump/EquivClassesLimit.mdp | 2 +-
.../gporca/data/dxl/minidump/EquivClassesUnion.mdp | 4 +-
.../Equivalence-class-project-over-LOJ.mdp | 18 +-
.../minidump/EstimateJoinRowsForCastPredicates.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/Except.mdp | 4 +-
.../dxl/minidump/ExceptAllCompatibleDataType.mdp | 6 +-
.../ExistentialSubquriesInsideScalarExpression.mdp | 6 +-
.../dxl/minidump/Exists-SuperfluousEquality.mdp | 2 +-
.../data/dxl/minidump/ExistsSubqInsideExpr.mdp | 4 +-
.../data/dxl/minidump/ExpandFullOuterJoin.mdp | 28 +-
.../data/dxl/minidump/ExpandFullOuterJoin2.mdp | 18 +-
.../gporca/data/dxl/minidump/ExpandJoinOrder.mdp | 10 +-
.../minidump/ExpandNAryJoinGreedyWithLOJOnly.mdp | 12 +-
.../dxl/minidump/ExprOnScSubqueryWithOuterRef.mdp | 4 +-
.../gporca/data/dxl/minidump/ExternalTable1.mdp | 2 +-
.../gporca/data/dxl/minidump/ExternalTable2.mdp | 2 +-
.../gporca/data/dxl/minidump/ExternalTable3.mdp | 2 +-
.../gporca/data/dxl/minidump/ExternalTable4.mdp | 2 +-
.../data/dxl/minidump/ExternalTableWithFilter.mdp | 2 +-
.../minidump/ExtractOneBindingFromScalarGroups.mdp | 8 +-
.../data/dxl/minidump/ExtractPredicateFromDisj.mdp | 15932 -------------------
...ExtractPredicateFromDisjWithComputedColumns.mdp | 6 +-
.../data/dxl/minidump/FOJ-Condition-False.mdp | 10 +-
.../gporca/data/dxl/minidump/Factorized-Preds.mdp | 4 +-
.../gporca/data/dxl/minidump/FieldSelect.mdp | 2 +-
.../gporca/data/dxl/minidump/FilterScalarCast.mdp | 2 +-
.../gporca/data/dxl/minidump/FoldedArrayCmp.mdp | 2 +-
.../dxl/minidump/ForeignPartOneTimeFilterDPE.mdp | 4 +-
.../data/dxl/minidump/ForeignPartUniform.mdp | 2 +-
.../dxl/minidump/ForeignScanExecLocAnyJoin.mdp | 4 +-
.../minidump/ForeignScanExecLocAnySimpleScan.mdp | 2 +-
...ard-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
...Forward-IndexScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
...orward-IndexScan-OrderBy-on-SingleCol-Index.mdp | 2 +-
.../minidump/FullJoin-2PredicateOnDistColumns.mdp | 4 +-
.../gporca/data/dxl/minidump/FullJoin-Caps.mdp | 2 +-
.../FullJoin-InnerNotOnDistributionColumn.mdp | 8 +-
.../dxl/minidump/FullJoin-NonDefaultOpfamily.mdp | 4 +-
.../minidump/FullJoin-NotOnDistributionColumn.mdp | 4 +-
.../data/dxl/minidump/FullJoin-NullPredicate.mdp | 4 +-
.../dxl/minidump/FullJoin-OnDistributionColumn.mdp | 8 +-
.../dxl/minidump/FullJoin-PredicateOnSameTable.mdp | 4 +-
.../data/dxl/minidump/FullJoin-Replicated.mdp | 8 +-
.../FullJoin-Subquery-CastedPredicates.mdp | 8 +-
.../dxl/minidump/FullJoin-SubquerySingleton.mdp | 4 +-
.../minidump/FullJoin-SubqueryWithRedistribute.mdp | 4 +-
.../dxl/minidump/FullJoin-SwappedPredicates.mdp | 8 +-
.../minidump/FullOuterJoin-NullRejectingLHS1.mdp | 4 +-
.../minidump/FullOuterJoin-NullRejectingLHS2.mdp | 4 +-
.../gporca/data/dxl/minidump/Gb-on-keys.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/GinIndex.mdp | 2 +-
.../data/dxl/minidump/GinIndexPathOpfamily.mdp | 2 +-
.../data/dxl/minidump/GinIndexSearchModeAll.mdp | 2 +-
.../Gist-AOCOTable-NonLossy-BitmapIndexPlan.mdp | 2 +-
.../Gist-NestedLoopJoin-Lossy-IndexPlan.mdp | 4 +-
.../Gist-NestedLoopJoin-Postgis-IndexPlan.mdp | 4 +-
.../Gist-NonPart-Lossy-BitmapIndexPlan.mdp | 2 +-
.../dxl/minidump/Gist-NonPart-Lossy-IndexPlan.mdp | 2 +-
.../data/dxl/minidump/Gist-OrderBy-BitmapPlan.mdp | 8 +-
.../data/dxl/minidump/Gist-OrderBy-IndexPlan.mdp | 8 +-
.../minidump/Gist-PartTable-Lossy-IndexPlan.mdp | 6 +-
.../Gist-PartTable-NonLossy-BitmapIndexPlan.mdp | 2 +-
.../dxl/minidump/Gist-PartialIndex-TableScan.mdp | 2 +-
.../data/dxl/minidump/GreedyNAryDelayCrossJoin.mdp | 8 +-
.../gporca/data/dxl/minidump/GreedyNAryJoin.mdp | 6 +-
.../GreedyNAryJoinWithDisconnectedEdges.mdp | 16 +-
.../data/dxl/minidump/GreedyNAryOnlyCrossJoins.mdp | 6 +-
.../data/dxl/minidump/GroupByEmptySetNoAgg.mdp | 2 +-
.../gporca/data/dxl/minidump/GroupByOuterRef.mdp | 4 +-
.../data/dxl/minidump/GroupingOnSameTblCol-1.mdp | 36 +-
.../data/dxl/minidump/GroupingOnSameTblCol-2.mdp | 4 +-
.../gporca/data/dxl/minidump/GroupingSets.mdp | 2 +-
.../dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp | 922 +-
.../dxl/minidump/HJN-DPE-Bitmap-Outer-Child.mdp | 12 +-
.../gporca/data/dxl/minidump/HJN-DeeperOuter.mdp | 6 +-
.../dxl/minidump/HJN-Redistribute-One-Side.mdp | 1212 +-
.../data/dxl/minidump/Hash-BitmapScan-InArray.mdp | 2 +-
.../gporca/data/dxl/minidump/Hash-BitmapScan.mdp | 2 +-
.../gporca/data/dxl/minidump/Hash-IndexScan.mdp | 2 +-
.../data/dxl/minidump/Hash-TableScan-AllArray.mdp | 2 +-
.../dxl/minidump/HashJoinOnRelabeledColumns.mdp | 4 +-
...Costing.mdp => Hint-AbsoluteRows-Over-Join.mdp} | 516 +-
...Scan-InArray.mdp => Hint-AddRows-Over-Join.mdp} | 472 +-
...tmapScan.mdp => Hint-BitmapScan-Over-Table.mdp} | 155 +-
...sting.mdp => Hint-IndexOnlyScan-Over-Table.mdp} | 182 +-
...-Broadcast.mdp => Hint-IndexScan-Over-Join.mdp} | 212 +-
...IndexScan.mdp => Hint-IndexScan-Over-Table.mdp} | 134 +-
...InArray.mdp => Hint-MultiplyRows-Over-Join.mdp} | 486 +-
...exScan.mdp => Hint-NoBitmapScan-Over-Table.mdp} | 138 +-
...can.mdp => Hint-NoIndexOnlyScan-Over-Table.mdp} | 151 +-
...Costing.mdp => Hint-NoIndexScan-Over-Table.mdp} | 160 +-
...No-Broadcast.mdp => Hint-SeqScan-Over-Join.mdp} | 246 +-
...ScanCosting.mdp => Hint-SeqScan-Over-Table.mdp} | 182 +-
...InArray.mdp => Hint-SubtractRows-Over-Join.mdp} | 472 +-
.../data/dxl/minidump/IDF-NotNullConstant.mdp | 2 +-
.../gporca/data/dxl/minidump/IDF-NullConstant.mdp | 2 +-
.../gporca/data/dxl/minidump/IN-ArrayCmp.mdp | 4 +-
.../data/dxl/minidump/IN-Nulls-ArrayCmpAny.mdp | 2 +-
.../gporca/data/dxl/minidump/IN-Numeric.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/IN.mdp | 2 +-
.../data/dxl/minidump/INDF-NotNullConstant.mdp | 2 +-
.../gporca/data/dxl/minidump/INDF-NullConstant.mdp | 2 +-
.../gporca/data/dxl/minidump/InClauseWithMCV.mdp | 2 +-
.../gporca/data/dxl/minidump/InEqualityJoin.mdp | 4 +-
...InSubqWithPrjListOuterRefNoInnerRefColumnIn.mdp | 4 +-
...hPrjListOuterRefNoInnerRefColumnPlusConstIn.mdp | 4 +-
.../InSubqWithPrjListOuterRefNoInnerRefConstIn.mdp | 4 +-
.../data/dxl/minidump/InSubqueryWithNotNullCol.mdp | 4 +-
.../minidump/Index-Join-With-Subquery-In-Pred.mdp | 4 +-
...dexApply-Heterogeneous-BothSidesPartitioned.mdp | 8 +-
.../dxl/minidump/IndexApply-Heterogeneous-DTS.mdp | 6 +-
.../minidump/IndexApply-Heterogeneous-NoDTS.mdp | 6 +-
...IndexApply-IndexCondDisjointWithHashedDistr.mdp | 6 +-
...ndexApply-IndexCondIntersectWithHashedDistr.mdp | 6 +-
.../IndexApply-IndexCondMatchHashedDistr.mdp | 6 +-
.../IndexApply-IndexCondSubsetOfHashedDistr.mdp | 6 +-
.../IndexApply-IndexCondSupersetOfHashedDistr.mdp | 6 +-
.../IndexApply-IndexOnCoordinatorOnlyTable.mdp | 6 +-
.../dxl/minidump/IndexApply-InnerSelect-Basic.mdp | 6 +-
.../IndexApply-InnerSelect-Heterogeneous-DTS.mdp | 6 +-
.../minidump/IndexApply-InnerSelect-PartTable.mdp | 6 +-
.../minidump/IndexApply-InnerSelect-PartTable2.mdp | 4 +-
.../dxl/minidump/IndexApply-LeftOuter-NLJoin.mdp | 10 +-
.../IndexApply-MultiDistKey-WithComplexPreds.mdp | 4 +-
...Apply-MultiDistKeys-Bitmap-WithComplexPreds.mdp | 4 +-
.../minidump/IndexApply-MultiDistKeys-Bitmap.mdp | 4 +-
...pply-MultiDistKeys-IncompletePDS-3-DistCols.mdp | 4 +-
.../minidump/IndexApply-No-Motion-Below-Join.mdp | 4 +-
.../minidump/IndexApply-PartKey-Is-IndexKey.mdp | 8 +-
.../dxl/minidump/IndexApply-PartResolverExpand.mdp | 6 +-
.../data/dxl/minidump/IndexApply-PartTable.mdp | 6 +-
.../IndexApply-Redistribute-Const-Table.mdp | 4 +-
.../minidump/IndexApply1-CalibratedCostModel.mdp | 6 +-
.../gporca/data/dxl/minidump/IndexApply1.mdp | 6 +-
.../gporca/data/dxl/minidump/IndexApply2.mdp | 6 +-
.../gporca/data/dxl/minidump/IndexApply3.mdp | 6 +-
.../gporca/data/dxl/minidump/IndexApply4.mdp | 6 +-
.../IndexApply_NestLoopWithNestParamTrue.mdp | 4 +-
.../dxl/minidump/IndexConstraintsMDidCache.mdp | 2 +-
.../data/dxl/minidump/IndexGet-OuterRefs.mdp | 4 +-
.../dxl/minidump/IndexNLJ-IndexGet-OuterRef.mdp | 4 +-
.../dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp | 24 +-
...itionToRootTableContainingHeterogenousIndex.mdp | 2 +-
...nLeaf-AddPartitionToRootWithHomogenousIndex.mdp | 2 +-
...-IndexOnPartitionsWithDifferentStorageTypes.mdp | 2 +-
...verlappingHeterogenousIndex-ANDPredicate-AO.mdp | 2 +-
...rlappingHeterogenousIndex-ANDPredicate-HEAP.mdp | 2 +-
...pingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp | 2 +-
...ppingHomogenousIndexesOnRoot-ORPredicate-AO.mdp | 2 +-
...verlappingHeterogenousIndex-ANDPredicate-AO.mdp | 2 +-
...rlappingHeterogenousIndex-ANDPredicate-HEAP.mdp | 2 +-
...OverlappingHeterogenousIndex-ORPredicate-AO.mdp | 2 +-
...pingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp | 2 +-
...nLeaf-OverlappingHomogenousIndexesOnRoot-AO.mdp | 2 +-
...ppingHomogenousIndexesOnRoot-ORPredicate-AO.mdp | 2 +-
...af-SingleColumnHeterogenousIndexOnRoot-1-AO.mdp | 2 +-
...-SingleColumnHeterogenousIndexOnRoot-1-HEAP.mdp | 2 +-
...af-SingleColumnHeterogenousIndexOnRoot-2-AO.mdp | 2 +-
...-SingleColumnHeterogenousIndexOnRoot-2-HEAP.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexOnlyScan-CTE.mdp | 2 +-
.../minidump/IndexOnlyScan-NoDistKeyInIndex.mdp | 2 +-
.../IndexOnlyScan-OrderBy-on-MultiCol-NonIndex.mdp | 2 +-
.../data/dxl/minidump/IndexOnlyScanCosting.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexScan-AOTable.mdp | 4 +-
.../gporca/data/dxl/minidump/IndexScan-AndedIn.mdp | 2 +-
.../data/dxl/minidump/IndexScan-BoolFalse.mdp | 4 +-
.../data/dxl/minidump/IndexScan-BoolTrue.mdp | 4 +-
.../data/dxl/minidump/IndexScan-DroppedColumns.mdp | 2 +-
.../data/dxl/minidump/IndexScan-IsNotNullPred.mdp | 2 +-
.../data/dxl/minidump/IndexScan-IsNullPred.mdp | 2 +-
.../data/dxl/minidump/IndexScan-ORPredsAOPart.mdp | 2 +-
.../data/dxl/minidump/IndexScan-ORPredsNonPart.mdp | 2 +-
.../IndexScan-OrderBy-on-MultiCol-NonIndex.mdp | 2 +-
.../IndexScan-OrderBy-on-Multiple-IndexCols.mdp | 2 +-
.../minidump/IndexScan-OrderBy-on-NonIndexCol.mdp | 2 +-
.../IndexScan-OrderBy-on-Single-IndexCol.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexScan-Relabel.mdp | 4 +-
.../gporca/data/dxl/minidump/IndexScanCosting.mdp | 2 +-
.../minidump/IndexScanWithNestedCTEAndSetOp.mdp | 4 +-
.../gporca/data/dxl/minidump/IndexedNLJBitmap.mdp | 4 +-
.../gporca/data/dxl/minidump/InferPredicates.mdp | 4 +-
.../dxl/minidump/InferPredicatesBCC-oid-oid.mdp | 2 +-
.../dxl/minidump/InferPredicatesBCC-txt-txt.mdp | 2 +-
.../dxl/minidump/InferPredicatesBCC-vc-txt.mdp | 4 +-
.../data/dxl/minidump/InferPredicatesBCC-vc-vc.mdp | 2 +-
.../dxl/minidump/InferPredicatesBCC-vcpart-txt.mdp | 4 +-
.../data/dxl/minidump/InferPredicatesForLimit.mdp | 2 +-
.../data/dxl/minidump/InferPredicatesForPartSQ.mdp | 4 +-
.../minidump/InferPredicatesForProcessedColumn.mdp | 6 +-
.../minidump/InferPredicatesForQuantifiedSQ.mdp | 4 +-
.../minidump/InferPredicatesFromExistsSubquery.mdp | 4 +-
.../minidump/InferPredicatesFromMultiSubquery.mdp | 4 +-
.../dxl/minidump/InferPredicatesInnerOfLOJ.mdp | 6 +-
.../InferPredicatesIntFromExistsSubquery.mdp | 4 +-
.../minidump/InferPredicatesIntFromSubquery.mdp | 4 +-
.../dxl/minidump/InferPredicatesJoinSubquery.mdp | 6 +-
.../dxl/minidump/InferPredicatesMultiColumns.mdp | 4 +-
.../InferredPredicatesConstraintSimplification.mdp | 6 +-
.../data/dxl/minidump/InnerJoin-With-OuterRefs.mdp | 6 +-
.../minidump/InnerJoinBroadcastTableHashSpec.mdp | 4 +-
.../data/dxl/minidump/InnerJoinOverJoinExcept.mdp | 2 +-
.../dxl/minidump/InnerJoinOverJoinExceptAll.mdp | 2 +-
.../minidump/InnerJoinReplicatedTableHashSpec.mdp | 4 +-
.../Insert-AO-Partitioned-SortDisabled.mdp | 2 +-
.../data/dxl/minidump/Insert-AO-Partitioned.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/Insert-AO.mdp | 2 +-
.../data/dxl/minidump/Insert-With-HJ-CTE-Agg.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/Insert.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertAssertSort.mdp | 2 +-
.../dxl/minidump/InsertCoordinatorOnlyTable.mdp | 2 +-
.../minidump/InsertMismatchedDistrubution-2.mdp | 2 +-
.../dxl/minidump/InsertMismatchedDistrubution.mdp | 2 +-
.../data/dxl/minidump/InsertNonSingleton.mdp | 4 +-
.../gporca/data/dxl/minidump/InsertNotNullCols.mdp | 2 +-
.../dxl/minidump/InsertPrimaryKeyFromMOTable.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertProjectSort.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertRandomDistr.mdp | 2 +-
...ertReplicatedIntoSerialHashDistributedTable.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertSort.mdp | 2 +-
.../InsertSortDistributed2CoordinatorOnly.mdp | 2 +-
.../gporca/data/dxl/minidump/Int2Predicate.mdp | 2 +-
.../data/dxl/minidump/Intersect-OuterRefs.mdp | 6 +-
.../data/dxl/minidump/InvalidDeleteGather.mdp | 6 +-
.../dxl/minidump/InvalidPlan_CTE-2-all-plans.mdp | 2 +-
...Plan_IncompatibleDistributionOnJoinBranches.mdp | 4 +-
...an_MotionGatherFromMasterToMaster-ScalarDQA.mdp | 2 +-
.../InvalidPlan_MotionGatherFromMasterToMaster.mdp | 4 +-
.../gporca/data/dxl/minidump/InvalidUpdatePlan.mdp | 4 +-
.../data/dxl/minidump/IsNullUnionAllIsNotNull.mdp | 98 +-
.../dxl/minidump/JOIN-NonRedistributableCol.mdp | 4 +-
.../data/dxl/minidump/JOIN-Pred-Cast-Int4.mdp | 4 +-
.../data/dxl/minidump/JOIN-Pred-Cast-Varchar.mdp | 4 +-
.../JOIN-cast2text-int4-Eq-cast2text-double.mdp | 4 +-
.../data/dxl/minidump/JOIN-int4-Eq-double.mdp | 4 +-
.../gporca/data/dxl/minidump/JOIN-int4-Eq-int2.mdp | 4 +-
.../gporca/data/dxl/minidump/Join-Disj-Subqs.mdp | 6 +-
src/backend/gporca/data/dxl/minidump/Join-IDF.mdp | 4 +-
.../data/dxl/minidump/Join-INDF-NoBroadcast.mdp | 4 +-
.../minidump/Join-INDF-Nulls-Not-Collocated.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/Join-INDF.mdp | 4 +-
.../data/dxl/minidump/Join-Varchar-Equality.mdp | 632 +-
.../data/dxl/minidump/Join-WinFunc-Preds.mdp | 4 +-
.../data/dxl/minidump/Join-With-Subq-Preds-1.mdp | 4 +-
.../data/dxl/minidump/Join-With-Subq-Preds-2.mdp | 4 +-
.../dxl/minidump/JoinAbsEqWithoutOpfamilies.mdp | 4 +-
...inArityAssociativityCommutativityAboveLimit.mdp | 6 +-
.../JoinArityAssociativityCommutativityAtLimit.mdp | 6 +-
...inArityAssociativityCommutativityBelowLimit.mdp | 6 +-
.../gporca/data/dxl/minidump/JoinBelowUnionAll.mdp | 2162 ++-
.../gporca/data/dxl/minidump/JoinCitextVarchar.mdp | 4 +-
.../data/dxl/minidump/JoinColWithOnlyNDV.mdp | 36 +-
...nDefaultOpfamiliesUsingNonDefaultOpfamilyOp.mdp | 4 +-
.../gporca/data/dxl/minidump/JoinNDVRemain.mdp | 36 +-
.../dxl/minidump/JoinOnReplicatedUniversal.mdp | 2 +-
.../dxl/minidump/JoinOnViewWithCastedColumn.mdp | 4 +-
...nViewWithCastedColumnAndSubqueryInPredicate.mdp | 4 +-
...ewWithMixOfPushableAndNonpushablePredicates.mdp | 4 +-
.../minidump/JoinOnViewWithSetReturningColumn.mdp | 4 +-
.../dxl/minidump/JoinOnViewWithVolatileColumn.mdp | 4 +-
...nOptimizationLevelGreedyNonPartTblInnerJoin.mdp | 8 +-
...inOptimizationLevelQuery3WayHashJoinPartTbl.mdp | 6 +-
...inOptimizationLevelQueryNonPartTblInnerJoin.mdp | 8 +-
.../gporca/data/dxl/minidump/JoinOrderDPE.mdp | 3552 ++---
src/backend/gporca/data/dxl/minidump/JoinPlan.mdp | 6 +-
.../data/dxl/minidump/JoinPlanWithRedistribute.mdp | 4 +-
.../gporca/data/dxl/minidump/JoinTinterval.mdp | 2 +-
.../JoinWithSingletonAndSingletonBranches.mdp | 2 +-
.../JoinWithSingletonAndUniversalBranches.mdp | 2 +-
.../dxl/minidump/JoinWithSubqueryProjectColumn.mdp | 4 +-
.../dxl/minidump/Join_OuterChild_DistUniversal.mdp | 2 +-
.../dxl/minidump/LASJ-Not-In-Force-Broadcast.mdp | 4 +-
.../data/dxl/minidump/LIKE-Pattern-Empty.mdp | 2 +-
.../data/dxl/minidump/LIKE-Pattern-green-2.mdp | 2 +-
.../data/dxl/minidump/LIKE-Pattern-green.mdp | 2 +-
.../data/dxl/minidump/LOJ-Condition-False.mdp | 2 +-
.../data/dxl/minidump/LOJ-DynBitmapIndex.mdp | 4 +-
.../dxl/minidump/LOJ-DynBitmapIndexWithSelect.mdp | 4 +-
.../gporca/data/dxl/minidump/LOJ-DynBtreeIndex.mdp | 4 +-
.../dxl/minidump/LOJ-DynBtreeIndexWithSelect.mdp | 4 +-
...LOJ-HashJoin-MultiDistKeys-WithComplexPreds.mdp | 4 +-
.../minidump/LOJ-IndexApply-CompsiteKey-Equiv.mdp | 6 +-
.../LOJ-IndexApply-CompsiteKey-NoMotion.mdp | 6 +-
.../LOJ-IndexApply-CoordinatorOnly-Table.mdp | 16 +-
.../LOJ-IndexApply-DistKey-Multiple-Predicates.mdp | 6 +-
...ly-MultiDistKey-MultiIndexKey-NoExtraFilter.mdp | 4 +-
.../LOJ-IndexApply-MultiDistKey-MultiIndexKey.mdp | 4 +-
...Apply-MultiDistKeys-Bitmap-WithComplexPreds.mdp | 4 +-
.../LOJ-IndexApply-MultiDistKeys-Bitmap.mdp | 4 +-
.../LOJ-IndexApply-MultiDistKeys-IndexKeys.mdp | 6 +-
...J-IndexApply-MultiDistKeys-WithComplexPreds.mdp | 4 +-
.../dxl/minidump/LOJ-IndexApply-MultiIndexes.mdp | 6 +-
.../LOJ-IndexApply-Negative-NonEqual-Predicate.mdp | 6 +-
.../dxl/minidump/LOJ-IndexApply-NonDistKey.mdp | 4 +-
.../LOJ-IndexApply-WithComplexPredicates.mdp | 4 +-
.../gporca/data/dxl/minidump/LOJ-IsNullPred.mdp | 4 +-
.../gporca/data/dxl/minidump/LOJ-PushDown.mdp | 6 +-
.../gporca/data/dxl/minidump/LOJ-With-Agg.mdp | 4 +-
.../dxl/minidump/LOJ-With-Single-Pred-On-Outer.mdp | 4 +-
.../dxl/minidump/LOJNonNullRejectingPredicates.mdp | 8 +-
.../dxl/minidump/LOJNullRejectingPredicates.mdp | 8 +-
.../LOJNullRejectingZeroPlacePredicates.mdp | 4 +-
.../dxl/minidump/LOJReorderComplexNestedLOJs.mdp | 6 +-
.../minidump/LOJReorderWithComplexPredicate.mdp | 6 +-
.../gporca/data/dxl/minidump/LOJReorderWithIDF.mdp | 6 +-
.../minidump/LOJReorderWithNestedLOJAndFilter.mdp | 6 +-
.../dxl/minidump/LOJReorderWithOneSidedFilter.mdp | 6 +-
.../dxl/minidump/LOJReorderWithSimplePredicate.mdp | 6 +-
...DF_no_convert_outer_ref_predicate_with_NULL.mdp | 4 +-
..._convert_outer_ref_predicate_with_inner_ref.mdp | 4 +-
.../minidump/LOJ_NULLTEST-On-SelfCheck-Pred.mdp | 4 +-
.../gporca/data/dxl/minidump/LOJ_bb_mpph.mdp | 2410 +--
.../LOJ_convert_to_inner_with_and_predicate.mdp | 8 +-
...J_convert_to_inner_with_inner_predicate_IDF.mdp | 4 +-
.../LOJ_convert_to_inner_with_or_predicate.mdp | 8 +-
...ert_to_inner_with_inner_predicate_IDF_const.mdp | 4 +-
..._convert_to_inner_with_outer_predicate_INDF.mdp | 4 +-
...rt_to_inner_with_outer_predicate_INDF_const.mdp | 4 +-
.../gporca/data/dxl/minidump/LargeJoins.mdp | 16 +-
.../data/dxl/minidump/LargeMultiColumnInList.mdp | 6 +-
.../gporca/data/dxl/minidump/Lead-Lag-WinFuncs.mdp | 2 +-
.../data/dxl/minidump/Least-Greatest-Subselect.mdp | 2 +-
.../gporca/data/dxl/minidump/Least-Greatest.mdp | 2 +-
.../dxl/minidump/LeftJoin-DPv2-With-Select.mdp | 6 +-
.../LeftJoin-UnsupportedFilter-Cardinality.mdp | 6 +-
.../data/dxl/minidump/LeftJoin-With-Coalesce.mdp | 6 +-
.../dxl/minidump/LeftJoin-With-Col-Const-Pred.mdp | 10 +-
.../dxl/minidump/LeftJoin-With-Pred-On-Inner.mdp | 4 +-
.../dxl/minidump/LeftJoin-With-Pred-On-Inner2.mdp | 4 +-
.../minidump/LeftJoinBroadcastTableHashSpec.mdp | 4 +-
.../data/dxl/minidump/LeftJoinDPv2JoinOrder.mdp | 8 +-
.../dxl/minidump/LeftJoinNullsNotColocated.mdp | 6 +-
.../gporca/data/dxl/minidump/LeftJoinPruning.mdp | 2 +-
.../minidump/LeftJoinPruningInOuterInnerQuery.mdp | 4 +-
.../dxl/minidump/LeftJoinPruningInnerQuery.mdp | 4 +-
.../dxl/minidump/LeftJoinPruningOuterQuery.mdp | 4 +-
.../LeftOuter2InnerUnionAllAntiSemiJoin-Tpcds.mdp | 62 +-
.../LeftOuter2InnerUnionAllAntiSemiJoin.mdp | 34 +-
.../dxl/minidump/LikePredStatsNotComparable.mdp | 2 +-
.../data/dxl/minidump/ListPartLossyCastEq.mdp | 2 +-
.../data/dxl/minidump/ListPartLossyCastLT.mdp | 2 +-
.../data/dxl/minidump/ListPartLossyCastNEq.mdp | 2 +-
.../dxl/minidump/LogicalIndexGetDroppedCols.mdp | 2 +-
.../data/dxl/minidump/MDQA-SameDQAColumn.mdp | 4 +-
.../data/dxl/minidump/MDQAs-Grouping-OrderBy.mdp | 4 +-
.../gporca/data/dxl/minidump/MDQAs-Grouping.mdp | 4 +-
.../gporca/data/dxl/minidump/MDQAs-Union.mdp | 4 +-
src/backend/gporca/data/dxl/minidump/MDQAs1.mdp | 4 +-
.../data/dxl/minidump/ManyTextUnionsInSubquery.mdp | 4 +-
.../Max-Aggregate-uses-IndexScan-and-Limit.mdp | 2 +-
.../Min-Aggregate-uses-IndexScan-and-Limit.mdp | 2 +-
.../data/dxl/minidump/MissingBoolColStats.mdp | 2 +-
.../gporca/data/dxl/minidump/MissingStats.mdp | 2 +-
.../MotionHazard-MaterializeUnderResult.mdp | 6 +-
...MotionHazard-NoMaterializeGatherUnderResult.mdp | 6 +-
...otionHazard-NoMaterializeHashAggUnderResult.mdp | 6 +-
.../MotionHazard-NoMaterializeSortUnderResult.mdp | 6 +-
.../MultiColumnAggWithDefaultOpfamilies.mdp | 4 +-
...tiColumnDQA-InnerJoin-GroupBy-HashAggregate.mdp | 4 +-
.../dxl/minidump/MultiDistKeyJoinCardinality.mdp | 6 +-
.../MultiDistKeyWithOtherPredsJoinCardinality.mdp | 4 +-
.../dxl/minidump/MultiLevel-CorrelatedExec.mdp | 6 +-
.../data/dxl/minidump/MultiLevel-IN-Subquery.mdp | 6 +-
.../dxl/minidump/MultiLevel-NOT-IN-Subquery.mdp | 6 +-
.../MultiLevelDecorrelationWithSemiJoins.mdp | 8 +-
.../dxl/minidump/MultiLevelPartLossyCastNEq.mdp | 2 +-
.../minidump/MultipleDampedPredJoinCardinality.mdp | 4 +-
.../MultipleIndependentPredJoinCardinality.mdp | 6 +-
.../data/dxl/minidump/MultipleIndexPredicate.mdp | 2 +-
.../minidump/MultipleSubqueriesInSelectClause.mdp | 2 +-
.../minidump/MultipleUpdateWithJoinOnDistCol.mdp | 4 +-
.../data/dxl/minidump/NLJ-BC-Outer-Spool-Inner.mdp | 2 +-
.../dxl/minidump/NLJ-Broadcast-DPE-Outer-Child.mdp | 10 +-
.../data/dxl/minidump/NLJ-DistCol-No-Broadcast.mdp | 4 +-
.../dxl/minidump/NLJ-EqAllCol-No-Broadcast.mdp | 4 +-
.../NLJ-EqDistCol-InEqNonDistCol-No-Broadcast.mdp | 4 +-
.../NLJ-InEqDistCol-EqNonDistCol-Redistribute.mdp | 4 +-
.../data/dxl/minidump/NLJ-Rewindability-CTAS.mdp | 447 +-
.../gporca/data/dxl/minidump/NLJ-Rewindability.mdp | 6 +-
.../gporca/data/dxl/minidump/NOT-IN-ArrayCmp.mdp | 4 +-
.../data/dxl/minidump/NOT-IN-NotNullBoth.mdp | 2 +-
.../gporca/data/dxl/minidump/NOT-IN-NullInner.mdp | 4 +-
.../gporca/data/dxl/minidump/NOT-IN-NullOuter.mdp | 4 +-
.../gporca/data/dxl/minidump/Name-Cardinality.mdp | 2 +-
.../dxl/minidump/NaryWithLojAndNonLojChilds.mdp | 10 +-
.../NdvPreservingExprProjectionEquiJoin.mdp | 4 +-
.../NdvPreservingExprProjectionNonEquiJoin.mdp | 4 +-
.../data/dxl/minidump/Negative-IndexApply1.mdp | 4 +-
.../data/dxl/minidump/Negative-IndexApply2.mdp | 4 +-
.../data/dxl/minidump/Nested-Or-Predicates.mdp | 2 +-
.../gporca/data/dxl/minidump/Nested-Setops-2.mdp | 4 +-
.../gporca/data/dxl/minidump/Nested-Setops.mdp | 6 +-
.../NestedInSubqWithPrjListOuterRefNoInnerRef.mdp | 6 +-
.../dxl/minidump/NestedJoinWithCastedColumn.mdp | 8 +-
.../dxl/minidump/NestedNLJWithBlockingSpool.mdp | 4 +-
.../NestedProjectCountStarWithOuterRefs.mdp | 4 +-
.../data/dxl/minidump/NestedSubqLimitBindings.mdp | 2 +-
.../data/dxl/minidump/NewBtreeIndexScanCost.mdp | 4 +-
.../NoBroadcastUnderGatherForWindowFunction.mdp | 2 +-
.../minidump/NoDistKeyMultiPredJoinCardinality.mdp | 6 +-
.../dxl/minidump/NoHashAggWithoutPrelimFunc.mdp | 2 +-
.../gporca/data/dxl/minidump/NoMissingStats.mdp | 2 +-
.../dxl/minidump/NoMissingStatsAfterDroppedCol.mdp | 2 +-
.../NoMissingStatsAskingForSystemColFOJ.mdp | 4 +-
.../dxl/minidump/NoMissingStatsForEmptyTable.mdp | 2 +-
.../gporca/data/dxl/minidump/NoMotionsPlan.mdp | 4 +-
...PartConstraint-WhenNoDefaultPartsAndIndices.mdp | 2 +-
.../data/dxl/minidump/NoPartPropagationPlan.mdp | 4 +-
.../minidump/NoPushdownPredicateWithCTEAnchor.mdp | 2 +-
.../data/dxl/minidump/NoRedistributeOnAppend.mdp | 2 +-
.../gporca/data/dxl/minidump/NoSortPlan.mdp | 4 +-
.../data/dxl/minidump/Non-Hashjoinable-Pred-2.mdp | 4 +-
.../data/dxl/minidump/Non-Hashjoinable-Pred.mdp | 4 +-
...ngHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp | 2 +-
.../gporca/data/dxl/minidump/NonSingleton.mdp | 4 +-
.../gporca/data/dxl/minidump/NonSplittableAgg.mdp | 2 +-
.../NotExists-SuperflousOuterRefWithGbAgg.mdp | 4 +-
.../dxl/minidump/NotExists-SuperfluousEquality.mdp | 2 +-
.../gporca/data/dxl/minidump/NotInToLASJ.mdp | 2 +-
.../NotWellDefinedDisjunctConjunctPredicates.mdp | 2 +-
.../data/dxl/minidump/NullConstant-INDF-Col.mdp | 2 +-
.../data/dxl/minidump/NullIf-With-Subquery.mdp | 4 +-
.../gporca/data/dxl/minidump/OR-WithIsNullPred.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/OR.mdp | 2 +-
.../OneDistKeyMultiPredJoinCardinality.mdp | 6 +-
.../data/dxl/minidump/OneLevel-CorrelatedExec.mdp | 6 +-
.../gporca/data/dxl/minidump/OneSegmentGather.mdp | 2 +-
.../OptimizerConfigWithSegmentsForCosting.mdp | 2 +-
.../data/dxl/minidump/OrderByNoRedundantSort.mdp | 4 +-
.../gporca/data/dxl/minidump/OrderByNullsFirst.mdp | 2 +-
.../gporca/data/dxl/minidump/OrderByOuterRef.mdp | 4 +-
.../dxl/minidump/OrderedAgg_array_fraction.mdp | 2 +-
.../data/dxl/minidump/OrderedAgg_computed_col.mdp | 2 +-
.../dxl/minidump/OrderedAgg_multiple_diffcol.mdp | 2 +-
.../dxl/minidump/OrderedAgg_multiple_samecol.mdp | 2 +-
.../OrderedAgg_multiple_samecol_difforderespec.mdp | 2 +-
.../gporca/data/dxl/minidump/OrderedAgg_single.mdp | 2 +-
.../data/dxl/minidump/OrderedAgg_skewed_data.mdp | 2 +-
.../data/dxl/minidump/OrderedAgg_with_groupby.mdp | 2 +-
.../dxl/minidump/OrderedAgg_with_nonOrderedAgg.mdp | 2 +-
.../minidump/OrderedAgg_with_nonconst_fraction.mdp | 2 +-
.../data/dxl/minidump/OuterJoin-With-OuterRefs.mdp | 6 +-
.../minidump/OuterJoinOnViewWithCastedColumn.mdp | 4 +-
...ngHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp | 2 +-
.../OverlappingHomogenousIndexesOnRoot-HEAP.mdp | 2 +-
.../dxl/minidump/Part-Selection-ConstArray-1.mdp | 2 +-
.../dxl/minidump/Part-Selection-ConstArray-2.mdp | 2 +-
.../gporca/data/dxl/minidump/Part-Selection-IN.mdp | 2 +-
.../data/dxl/minidump/Part-Selection-NOT-IN.mdp | 2 +-
.../PartConstraint-WhenDefaultPartsAndIndices.mdp | 2 +-
...PartConstraint-WhenIndicesAndNoDefaultParts.mdp | 2 +-
.../PartConstraint-WithOnlyDefaultPartInfo.mdp | 2 +-
.../minidump/PartForeignDifferentExecLocation.mdp | 2 +-
.../dxl/minidump/PartForeignDifferentServer.mdp | 10 +-
.../gporca/data/dxl/minidump/PartForeignMixed.mdp | 2 +-
.../data/dxl/minidump/PartForeignMixedDPE.mdp | 4 +-
.../data/dxl/minidump/PartForeignMixedSPE.mdp | 10 +-
.../data/dxl/minidump/PartForeignUniformSPE.mdp | 6 +-
.../data/dxl/minidump/PartPredsWithRandom.mdp | 2 +-
.../data/dxl/minidump/PartSelectorOnJoinSide.mdp | 4 +-
.../data/dxl/minidump/PartSelectorOnJoinSide2.mdp | 12 +-
.../PartTbl-AggWithExistentialSubquery.mdp | 4 +-
.../data/dxl/minidump/PartTbl-ArrayCoerce.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-ArrayIn.mdp | 2 +-
.../minidump/PartTbl-AsymmetricRangePredicate.mdp | 2 +-
.../dxl/minidump/PartTbl-AvoidRangePred-DPE.mdp | 6 +-
.../data/dxl/minidump/PartTbl-CSQ-NonPartKey.mdp | 2 +-
.../data/dxl/minidump/PartTbl-CSQ-PartKey.mdp | 2 +-
.../dxl/minidump/PartTbl-ComplexPredicate1.mdp | 2 +-
.../dxl/minidump/PartTbl-ComplexPredicate2.mdp | 2 +-
.../dxl/minidump/PartTbl-ComplexPredicate3.mdp | 2 +-
.../dxl/minidump/PartTbl-ComplexPredicate4.mdp | 2 +-
.../dxl/minidump/PartTbl-ComplexPredicate5.mdp | 2 +-
.../PartTbl-ComplexRangePredicate-DefaultPart.mdp | 2 +-
...PartTbl-ComplexRangePredicate-NoDefaultPart.mdp | 2 +-
.../minidump/PartTbl-DPE-Correlated-NLOuter.mdp | 4 +-
.../PartTbl-DPE-DynamicIndexOnlyScan-Range.mdp | 4 +-
.../data/dxl/minidump/PartTbl-DPE-GroupBy.mdp | 10 +-
.../gporca/data/dxl/minidump/PartTbl-DPE-Limit.mdp | 4 +-
.../data/dxl/minidump/PartTbl-DPE-Opfamily.mdp | 4 +-
.../dxl/minidump/PartTbl-DPE-WindowFunction.mdp | 208 +-
.../gporca/data/dxl/minidump/PartTbl-DPE.mdp | 4 +-
.../gporca/data/dxl/minidump/PartTbl-DateTime.mdp | 18 +-
.../dxl/minidump/PartTbl-DisablePartSelection.mdp | 2 +-
.../minidump/PartTbl-DisablePartSelectionJoin.mdp | 4 +-
.../data/dxl/minidump/PartTbl-Disjunction.mdp | 2 +-
.../minidump/PartTbl-EqPredicateWithCastRange.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-HJ2.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-HJ3.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-HJ4.mdp | 4 +-
.../gporca/data/dxl/minidump/PartTbl-HJ5.mdp | 4 +-
.../gporca/data/dxl/minidump/PartTbl-IDFList.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-IDFNull.mdp | 2 +-
.../data/dxl/minidump/PartTbl-IDFWithCast.mdp | 2 +-
.../dxl/minidump/PartTbl-IndexOnDefPartOnly.mdp | 4 +-
.../dxl/minidump/PartTbl-IsNotNullPredicate.mdp | 2 +-
.../data/dxl/minidump/PartTbl-IsNullPredicate.mdp | 2 +-
.../data/dxl/minidump/PartTbl-JoinOverExcept.mdp | 6 +-
.../data/dxl/minidump/PartTbl-JoinOverGbAgg-2.mdp | 20 +-
.../data/dxl/minidump/PartTbl-JoinOverGbAgg.mdp | 4 +-
.../dxl/minidump/PartTbl-JoinOverIntersect.mdp | 6 +-
.../data/dxl/minidump/PartTbl-JoinOverUnion-1.mdp | 6 +-
.../data/dxl/minidump/PartTbl-JoinOverUnion-2.mdp | 4 +-
.../gporca/data/dxl/minidump/PartTbl-LASJ.mdp | 14 +-
.../PartTbl-LeftOuterHashJoin-DPE-IsNull.mdp | 4 +-
.../PartTbl-LeftOuterNLJoin-DPE-IsNull.mdp | 4 +-
.../minidump/PartTbl-List-DPE-Int-Predicates.mdp | 14 +-
.../PartTbl-List-DPE-Varchar-Predicates.mdp | 2 +-
.../data/dxl/minidump/PartTbl-MultiWayJoin.mdp | 4 +-
.../dxl/minidump/PartTbl-MultiWayJoinWithDPE-2.mdp | 18 +-
.../dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp | 5631 -------
.../dxl/minidump/PartTbl-MultipleEqPredicates.mdp | 4 +-
.../data/dxl/minidump/PartTbl-NEqPredicate.mdp | 4 +-
.../gporca/data/dxl/minidump/PartTbl-NLJ.mdp | 2 +-
.../data/dxl/minidump/PartTbl-NonConstSelect.mdp | 18 +-
.../dxl/minidump/PartTbl-PredicateWithCast.mdp | 2 +-
.../dxl/minidump/PartTbl-PredicateWithCastList.mdp | 2 +-
.../PartTbl-PredicateWithCastMultiLevelList.mdp | 2 +-
.../data/dxl/minidump/PartTbl-RangeJoinPred.mdp | 20 +-
.../data/dxl/minidump/PartTbl-Relabel-Equality.mdp | 2 +-
.../data/dxl/minidump/PartTbl-Relabel-Range.mdp | 2 +-
.../PartTbl-RightOuterHashJoin-DPE-IsNull-V2.mdp | 4 +-
.../data/dxl/minidump/PartTbl-SPE-Boolean1.mdp | 2 +-
.../data/dxl/minidump/PartTbl-SPE-Boolean2.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost1.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost2.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost3.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost4.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost5.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost1.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost2.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp | 6 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost4.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost5.mdp | 6 +-
.../gporca/data/dxl/minidump/PartTbl-SQAll.mdp | 36 +-
.../gporca/data/dxl/minidump/PartTbl-SQAny.mdp | 36 +-
.../gporca/data/dxl/minidump/PartTbl-SQExists.mdp | 36 +-
.../data/dxl/minidump/PartTbl-SQNotExists.mdp | 36 +-
.../gporca/data/dxl/minidump/PartTbl-SQScalar.mdp | 36 +-
.../data/dxl/minidump/PartTbl-SubqueryOuterRef.mdp | 10 +-
.../data/dxl/minidump/PartTbl-VolatileFunc.mdp | 2 +-
.../PartTbl-WindowFuncNoDisjunctPredPushDown.mdp | 6 +-
.../minidump/PartTbl-WindowFuncNoPredPushDown.mdp | 6 +-
.../PartTbl-WindowFuncPartialPredPushDown.mdp | 10 +-
.../minidump/PartTbl-WindowFuncPredPushDown.mdp | 10 +-
.../PartTbl-WindowFuncSinglePredPushDown.mdp | 2 +-
.../data/dxl/minidump/PartTbl-WindowFunction.mdp | 224 +-
.../data/dxl/minidump/PredStatsNotComparable.mdp | 2 +-
.../PredicateWithConjunctsAndDisjuncts.mdp | 2 +-
.../minidump/PredicateWithConjunctsOfDisjuncts.mdp | 2 +-
.../dxl/minidump/PredicateWithLongConjunction.mdp | 2 +-
.../data/dxl/minidump/Preds-Over-WinFunc1.mdp | 2 +-
.../data/dxl/minidump/Preds-Over-WinFunc2.mdp | 2 +-
.../data/dxl/minidump/Preds-Over-WinFunc3.mdp | 2 +-
.../data/dxl/minidump/Preds-Over-WinFunc4.mdp | 2 +-
.../data/dxl/minidump/Preds-Over-WinFunc5.mdp | 2 +-
...exOnlyScanOnAppendOnlyVersion6UpgradedTable.mdp | 2 +-
...ionedTableContainingAppendOnlyVersion6Child.mdp | 6 +-
...ionedTableContainingAppendOnlyVersion6Child.mdp | 6 +-
.../gporca/data/dxl/minidump/ProjectCountStar.mdp | 4 +-
.../dxl/minidump/ProjectCountStarWithOuterRefs.mdp | 4 +-
.../data/dxl/minidump/ProjectOutsideCountStar.mdp | 4 +-
.../data/dxl/minidump/ProjectRepeatedColumn1.mdp | 2 +-
.../data/dxl/minidump/ProjectRepeatedColumn2.mdp | 2 +-
.../gporca/data/dxl/minidump/ProjectUnderSubq.mdp | 4 +-
.../data/dxl/minidump/ProjectWithConstant.mdp | 2 +-
.../data/dxl/minidump/ProjectWithTextConstant.mdp | 2 +-
.../data/dxl/minidump/Push-Subplan-Below-Union.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-1.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-10.mdp | 6 +-
.../PushConstantSelectPredicateThruJoin-11.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-12.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-13.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-14.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-15.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-16.mdp | 2 +-
.../PushConstantSelectPredicateThruJoin-17.mdp | 2 +-
.../PushConstantSelectPredicateThruJoin-2.mdp | 6 +-
.../PushConstantSelectPredicateThruJoin-3.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-4.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-5.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-6.mdp | 6 +-
.../PushConstantSelectPredicateThruJoin-7.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-8.mdp | 4 +-
.../PushConstantSelectPredicateThruJoin-9.mdp | 10 +-
.../dxl/minidump/PushFilterToSemiJoinLeftChild.mdp | 4 +-
.../dxl/minidump/PushGbBelowJoin-NegativeCase.mdp | 2 +-
.../data/dxl/minidump/PushGbBelowNaryUnion-1.mdp | 6 +-
.../data/dxl/minidump/PushGbBelowNaryUnion-2.mdp | 6 +-
.../data/dxl/minidump/PushGbBelowNaryUnionAll.mdp | 6 +-
.../gporca/data/dxl/minidump/PushGbBelowUnion.mdp | 4 +-
.../data/dxl/minidump/PushGbBelowUnionAll.mdp | 4 +-
.../minidump/PushSelectWithOuterRefBelowUnion.mdp | 1616 +-
...ueryMismatchedDistribution-DynamicIndexScan.mdp | 4 +-
.../dxl/minidump/QueryMismatchedDistribution.mdp | 2 +-
.../gporca/data/dxl/minidump/RTErequiredPerms.mdp | 4 +-
.../RangePartLossyCastEqInPartitionRange.mdp | 2 +-
.../RangePartLossyCastEqOnEndPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTEqInPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTEqOnEndPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTInPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTOnEndPartitionRange.mdp | 2 +-
.../dxl/minidump/Remove-Distinct-From-Subquery.mdp | 18 +-
.../minidump/RemoveImpliedPredOnBCCPredicates.mdp | 2 +-
.../data/dxl/minidump/RemoveUnusedProjElements.mdp | 2 +-
.../minidump/RemoveUnusedProjElementsInGbAgg.mdp | 2 +-
.../dxl/minidump/ReplicatedHashJoinReplicated.mdp | 4 +-
.../ReplicatedJoinHashDistributedTable.mdp | 4 +-
.../minidump/ReplicatedJoinPartitionedTable.mdp | 4 +-
.../ReplicatedJoinRandomDistributedTable.mdp | 4 +-
.../minidump/ReplicatedLOJHashDistributedTable.mdp | 4 +-
.../ReplicatedLOJRandomDistributedTable.mdp | 4 +-
.../data/dxl/minidump/ReplicatedLOJReplicated.mdp | 4 +-
.../data/dxl/minidump/ReplicatedNLJReplicated.mdp | 4 +-
.../data/dxl/minidump/ReplicatedTableAggregate.mdp | 2 +-
.../data/dxl/minidump/ReplicatedTableCTE.mdp | 4 +-
.../data/dxl/minidump/ReplicatedTableGroupBy.mdp | 2 +-
.../data/dxl/minidump/ReplicatedTableInClause.mdp | 4 +-
.../data/dxl/minidump/ReplicatedTableSelect.mdp | 2 +-
.../dxl/minidump/ReplicatedTableSequenceInsert.mdp | 2 +-
.../minidump/ReplicatedTableWithAggNoMotion.mdp | 2 +-
.../data/dxl/minidump/RightJoinBothReplicated.mdp | 4 +-
.../gporca/data/dxl/minidump/RightJoinDPE.mdp | 4 +-
.../dxl/minidump/RightJoinDpeWithWhereClause.mdp | 4 +-
.../gporca/data/dxl/minidump/RightJoinHashed.mdp | 4 +-
.../data/dxl/minidump/RightJoinNoDPSNonDistKey.mdp | 4 +-
.../data/dxl/minidump/RightJoinRedistribute.mdp | 4 +-
.../data/dxl/minidump/RightJoinReplicated.mdp | 4 +-
.../gporca/data/dxl/minidump/RightJoinTVF.mdp | 2 +-
.../gporca/data/dxl/minidump/RollupNoAgg.mdp | 2 +-
.../data/dxl/minidump/ScSubqueryWithOuterRef.mdp | 4 +-
.../minidump/ScalarCorrelatedSubqueryCountStar.mdp | 4 +-
.../dxl/minidump/ScalarDQAWithNonScalarAgg.mdp | 9 +-
.../dxl/minidump/ScalarFuncPushedBelowGather.mdp | 2 +-
.../data/dxl/minidump/ScalarSubqueryCountStar.mdp | 4 +-
.../dxl/minidump/ScalarSubqueryCountStarInJoin.mdp | 6 +-
.../data/dxl/minidump/Select-Over-CTEAnchor.mdp | 4 +-
.../data/dxl/minidump/Select-Over-PartTbl.mdp | 938 +-
.../data/dxl/minidump/Select-Proj-OuterJoin.mdp | 8 +-
.../gporca/data/dxl/minidump/SelectOnBpchar.mdp | 314 +-
.../gporca/data/dxl/minidump/SelectOnCastedCol.mdp | 4 +-
.../data/dxl/minidump/Self-Comparison-Nullable.mdp | 2 +-
.../gporca/data/dxl/minidump/Self-Comparison.mdp | 2 +-
.../minidump/SelfJoinDampedPredJoinCardinality.mdp | 2 +-
.../gporca/data/dxl/minidump/SelfUpdate.mdp | 2 +-
.../data/dxl/minidump/SemiJoin2InnerJoin.mdp | 4 +-
.../gporca/data/dxl/minidump/SemiJoin2Select-1.mdp | 4 +-
.../gporca/data/dxl/minidump/SemiJoin2Select-2.mdp | 4 +-
.../minidump/SemiJoin2Select-EnforceSubplan.mdp | 4 +-
.../gporca/data/dxl/minidump/SemiJoinDPE.mdp | 10 +-
.../minidump/SemiJoinWithWindowsFuncInSubquery.mdp | 4 +-
.../dxl/minidump/SimplifyExistsSubquery2Limit.mdp | 4 +-
.../SingleColumnHomogenousIndexOnRoot-AO.mdp | 2 +-
.../SingleColumnHomogenousIndexOnRoot-HEAP.mdp | 2 +-
.../gporca/data/dxl/minidump/SixWayDPv2.mdp | 12 +-
.../gporca/data/dxl/minidump/SortOverStreamAgg.mdp | 106 +-
...SpoolShouldInvalidateUnresolvedDynamicScans.mdp | 6 +-
.../gporca/data/dxl/minidump/SqlFuncDmlScalar.mdp | 2 +-
.../gporca/data/dxl/minidump/SqlFuncDmlTvf.mdp | 2 +-
.../gporca/data/dxl/minidump/SqlFuncNullReject.mdp | 4 +-
.../data/dxl/minidump/SqlFuncPredFactorize.mdp | 4 +-
.../minidump/Stats-For-Select-With-Outer-Refs.mdp | 4 +-
.../minidump/StatsFilter-AnyWithNewColStats.mdp | 2 +-
.../data/dxl/minidump/Subq-JoinWithOuterRef.mdp | 6 +-
.../gporca/data/dxl/minidump/Subq-NoParams.mdp | 4 +-
.../gporca/data/dxl/minidump/Subq-On-OuterRef.mdp | 4 +-
.../data/dxl/minidump/Subq-With-OuterRefCol.mdp | 4 +-
.../data/dxl/minidump/Subq2CorrSQInLOJOn.mdp | 6 +-
.../data/dxl/minidump/Subq2NotInWhereLOJ.mdp | 6 +-
.../data/dxl/minidump/Subq2OuterRef2InJoin.mdp | 6 +-
.../dxl/minidump/Subq2OuterRefMultiLevelInOn.mdp | 6 +-
.../data/dxl/minidump/Subq2PartialDecorrelate.mdp | 6 +-
.../minidump/SubqAll-InsideScalarExpression.mdp | 4 +-
.../gporca/data/dxl/minidump/SubqAll-Limit1.mdp | 4 +-
.../data/dxl/minidump/SubqAll-To-ScalarSubq.mdp | 2 +-
.../minidump/SubqAny-InsideScalarExpression.mdp | 4 +-
.../data/dxl/minidump/SubqEnforceSubplan.mdp | 4 +-
.../minidump/SubqExists-With-External-Corrs.mdp | 6 +-
.../minidump/SubqExists-Without-External-Corrs.mdp | 6 +-
.../gporca/data/dxl/minidump/SubqInIndexPred.mdp | 8 +-
.../dxl/minidump/SubqOuterReferenceInClause.mdp | 4 +-
.../dxl/minidump/Subquery-AnyAllAggregates.mdp | 4 +-
.../dxl/minidump/Subquery-ExistsAllAggregates.mdp | 4 +-
.../Subquery-ExistsAllAggregatesWithDisjuncts.mdp | 6 +-
.../data/dxl/minidump/SubqueryInsideArrayRef.mdp | 2 +-
.../minidump/SubqueryInsideArrayRefIndexList.mdp | 2 +-
.../data/dxl/minidump/SubqueryInsideScalarIf.mdp | 6 +-
.../gporca/data/dxl/minidump/SubqueryNullTest.mdp | 4 +-
.../data/dxl/minidump/SubqueryOuterRefLimit.mdp | 4 +-
.../data/dxl/minidump/SubqueryOuterRefTVF.mdp | 2 +-
.../data/dxl/minidump/Switch-With-Subquery.mdp | 4 +-
.../minidump/TPCDS-39-InnerJoin-JoinEstimate.mdp | 108 +-
.../data/dxl/minidump/TPCH-Partitioned-256GB.mdp | 336 +-
.../data/dxl/minidump/TVF-With-Deep-Subq-Args.mdp | 2 +-
.../gporca/data/dxl/minidump/TVFVolatileJoin.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedAgg.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedFilter.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedLimit.mdp | 2 +-
.../dxl/minidump/TaintedReplicatedTablesCTE.mdp | 4 +-
.../dxl/minidump/TaintedReplicatedWindowAgg.mdp | 2 +-
.../data/dxl/minidump/TextMCVCardinalityEquals.mdp | 2 +-
.../dxl/minidump/TextMCVCardinalityGreaterThan.mdp | 2 +-
.../ThreeStageAgg-DistinctOnComputedCol.mdp | 4 +-
.../minidump/ThreeStageAgg-DistinctOnDistrCol.mdp | 2 +-
.../ThreeStageAgg-DistinctOnSameNonDistrCol.mdp | 4 +-
...eeStageAgg-GbMultipleCol-DistinctOnDistrCol.mdp | 2 +-
.../ThreeStageAgg-GbandDistinctOnDistrCol.mdp | 4 +-
...ThreeStageAgg-ScalarAgg-DistinctComputedCol.mdp | 4 +-
.../ThreeStageAgg-ScalarAgg-DistinctDistrCol.mdp | 4 +-
...ThreeStageAgg-ScalarAgg-DistinctNonDistrCol.mdp | 4 +-
.../gporca/data/dxl/minidump/ThreeStageAgg.mdp | 4 +-
.../data/dxl/minidump/TimeStamp-Date-HashJoin.mdp | 4 +-
.../dxl/minidump/Tpcds-10TB-Q37-NoIndexJoin.mdp | 16 +-
.../data/dxl/minidump/Tpcds-NonPart-Q70a.mdp | 144 +-
.../dxl/minidump/TranslateFilterDisjunctQuals.mdp | 6 +-
...thCTEAndTableScanIntoFilterAndOneTimeFilter.mdp | 4 +-
.../TranslateOneTimeFilterConjunctQuals.mdp | 6 +-
.../data/dxl/minidump/TypeModifierArrayRef.mdp | 2 +-
.../gporca/data/dxl/minidump/TypeModifierCast.mdp | 2 +-
.../data/dxl/minidump/TypeModifierColumn.mdp | 2 +-
.../gporca/data/dxl/minidump/UDA-AnyArray.mdp | 2 +-
.../gporca/data/dxl/minidump/UDA-AnyElement-1.mdp | 2 +-
.../gporca/data/dxl/minidump/UDA-AnyElement-2.mdp | 2 +-
.../Union-Distributed-Table-With-Const-Table.mdp | 2 +-
.../minidump/Union-OuterRefs-Casting-Output.mdp | 4 +-
.../dxl/minidump/Union-OuterRefs-InnerChild.mdp | 4 +-
.../data/dxl/minidump/Union-OuterRefs-Output.mdp | 4 +-
.../data/dxl/minidump/Union-Over-UnionAll.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/UnionAll.mdp | 6 +-
.../dxl/minidump/UnionAllCompatibleDataType.mdp | 18 +-
.../dxl/minidump/UnionAllWithTruncatedOutput.mdp | 12 +-
.../gporca/data/dxl/minidump/UnionGbSubquery.mdp | 2 +-
.../gporca/data/dxl/minidump/UnionOfDQAQueries.mdp | 28 +-
.../gporca/data/dxl/minidump/UnionWithCTE.mdp | 12 +-
.../data/dxl/minidump/UnionWithOuterRefs.mdp | 4 +-
.../gporca/data/dxl/minidump/UnnestSQJoins.mdp | 10 +-
.../dxl/minidump/UnsupportedStatsPredicate.mdp | 4 +-
.../data/dxl/minidump/UpdateCardinalityAssert.mdp | 4 +-
.../data/dxl/minidump/UpdateCheckConstraint.mdp | 4 +-
.../UpdateDistKeyMismatchedDistribution.mdp | 4 +-
.../dxl/minidump/UpdateDistKeyWithNestedJoin.mdp | 2 +-
.../gporca/data/dxl/minidump/UpdateDistrKey.mdp | 4 +-
.../gporca/data/dxl/minidump/UpdateDroppedCols.mdp | 2 +-
.../dxl/minidump/UpdateNoCardinalityAssert.mdp | 2 +-
.../UpdateNoDistKeyMismatchedDistribution.mdp | 4 +-
.../dxl/minidump/UpdateNoEnforceConstraints.mdp | 2 +-
.../gporca/data/dxl/minidump/UpdateNotNullCols.mdp | 4 +-
.../gporca/data/dxl/minidump/UpdatePartTable.mdp | 2 +-
.../gporca/data/dxl/minidump/UpdateRandomDistr.mdp | 2 +-
.../data/dxl/minidump/UpdateUniqueConstraint-2.mdp | 6 +-
.../data/dxl/minidump/UpdateUniqueConstraint.mdp | 2 +-
.../data/dxl/minidump/UpdateVolatileFunction.mdp | 2 +-
.../data/dxl/minidump/UpdateWindowGatherMerge.mdp | 2 +-
.../data/dxl/minidump/UpdateWithHashJoin.mdp | 4 +-
.../dxl/minidump/UpdatingDistributionColumn.mdp | 2 +-
.../data/dxl/minidump/UpdatingMultipleColumn.mdp | 2 +-
.../dxl/minidump/UpdatingNonDistColSameTable.mdp | 2 +-
.../minidump/UpdatingNonDistributionColumnFunc.mdp | 2 +-
.../dxl/minidump/VarcharMCVCardinalityEquals.mdp | 2 +-
.../minidump/VarcharMCVCardinalityGreaterThan.mdp | 2 +-
.../data/dxl/minidump/VariadicFlagWithJson.mdp | 2 +-
.../WinFunc-Redistribute-Sort-CTE-Producer.mdp | 4 +-
.../gporca/data/dxl/minidump/WinFunc-Simple.mdp | 2 +-
.../data/dxl/minidump/WinFuncWithSubqArgs.mdp | 4 +-
.../data/dxl/minidump/WindowFrame-SingleEdged.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-1.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-2.mdp | 4 +-
.../data/dxl/minidump/cte-duplicate-columns-3.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-4.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/retail_28.mdp | 14 +-
.../data/dxl/minidump/window-count-gpdb6.mdp | 2 +-
.../data/dxl/parse_tests/q21-SubqueryScan.xml | 77 -
.../data/dxl/statistics/Basic-Statistics-Input.xml | 8 +-
.../dxl/statistics/Basic-Statistics-Output.xml | 8 +-
src/backend/gporca/data/dxl/tpch/q1.mdp | 312 +-
src/backend/gporca/data/dxl/tpch/q3.mdp | 420 +-
.../gpopt/base/CDistributionSpecNonSingleton.h | 13 +-
.../include/gpopt/base/CDrvdPropRelational.h | 9 +-
.../libgpopt/include/gpopt/base/CReqdPropPlan.h | 5 +-
.../gporca/libgpopt/include/gpopt/base/CUtils.h | 3 +
.../libgpopt/include/gpopt/hints/CHintUtils.h | 53 +
.../libgpopt/include/gpopt/hints/CPlanHint.h | 70 +
.../gporca/libgpopt/include/gpopt/hints/CRowHint.h | 148 +
.../libgpopt/include/gpopt/hints/CScanHint.h | 112 +
.../gpopt/hints/IHint.h} | 25 +-
.../include/gpopt/metadata/CColumnDescriptor.h | 18 +
.../include/gpopt/metadata/CTableDescriptor.h | 14 +
.../libgpopt/include/gpopt/operators/CExpression.h | 2 +-
.../include/gpopt/operators/CExpressionHandle.h | 4 +-
.../libgpopt/include/gpopt/operators/CLogical.h | 2 +-
.../gpopt/operators/CLogicalBitmapTableGet.h | 11 +-
.../include/gpopt/operators/CLogicalCTEConsumer.h | 2 +-
.../include/gpopt/operators/CLogicalCTEProducer.h | 2 +-
.../include/gpopt/operators/CLogicalDynamicGet.h | 21 +-
.../gpopt/operators/CLogicalDynamicGetBase.h | 9 +-
.../include/gpopt/operators/CLogicalGbAgg.h | 10 +
.../libgpopt/include/gpopt/operators/CLogicalGet.h | 26 +-
.../include/gpopt/operators/CLogicalJoin.h | 4 +
.../include/gpopt/operators/CLogicalProject.h | 10 +
.../include/gpopt/operators/CLogicalSelect.h | 7 +-
.../include/gpopt/operators/CLogicalUnionAll.h | 7 +-
.../include/gpopt/operators/CPhysicalHashJoin.h | 12 +
.../gpopt/operators/CPhysicalLeftOuterHashJoin.h | 6 -
.../gpopt/operators/CPhysicalRightOuterHashJoin.h | 8 +
.../gpopt/operators/CScalarBitmapIndexProbe.h | 13 +-
.../include/gpopt/optimizer/COptimizerConfig.h | 12 +-
.../gporca/libgpopt/include/gpopt/search/CGroup.h | 18 +
.../libgpopt/include/gpopt/xforms/CXformEagerAgg.h | 4 +-
src/backend/gporca/libgpopt/src/Makefile | 2 +-
.../libgpopt/src/base/CDistributionSpecHashed.cpp | 5 +-
.../src/base/CDistributionSpecNonSingleton.cpp | 4 +-
.../src/base/CDistributionSpecReplicated.cpp | 3 +-
.../libgpopt/src/base/CDrvdPropRelational.cpp | 17 +-
.../gporca/libgpopt/src/base/CEnfdDistribution.cpp | 7 -
.../libgpopt/src/base/COptimizationContext.cpp | 3 +-
.../gporca/libgpopt/src/base/COrderSpec.cpp | 2 +-
.../gporca/libgpopt/src/base/CReqdPropPlan.cpp | 67 +-
src/backend/gporca/libgpopt/src/base/CUtils.cpp | 31 +-
.../gporca/libgpopt/src/base/CWindowFrame.cpp | 10 +-
.../gporca/libgpopt/src/hints/CHintUtils.cpp | 241 +
.../gporca/libgpopt/src/hints/CPlanHint.cpp | 156 +
src/backend/gporca/libgpopt/src/hints/CRowHint.cpp | 116 +
.../gporca/libgpopt/src/hints/CScanHint.cpp | 146 +
.../src/test => libgpopt/src/hints}/Makefile | 7 +-
src/backend/gporca/libgpopt/src/hints/README | 116 +
.../libgpopt/src/metadata/CTableDescriptor.cpp | 28 +
.../gporca/libgpopt/src/operators/CExpression.cpp | 2 +-
.../libgpopt/src/operators/CExpressionHandle.cpp | 4 +-
.../src/operators/CExpressionPreprocessor.cpp | 39 +-
.../src/operators/CLeftJoinPruningPreprocessor.cpp | 73 +-
.../gporca/libgpopt/src/operators/CLogical.cpp | 8 +-
.../src/operators/CLogicalBitmapTableGet.cpp | 16 +-
.../libgpopt/src/operators/CLogicalCTEConsumer.cpp | 8 +-
.../libgpopt/src/operators/CLogicalCTEProducer.cpp | 9 +-
.../operators/CLogicalDynamicBitmapTableGet.cpp | 10 +-
.../src/operators/CLogicalDynamicForeignGet.cpp | 8 +-
.../libgpopt/src/operators/CLogicalDynamicGet.cpp | 87 +-
.../src/operators/CLogicalDynamicGetBase.cpp | 26 +-
.../src/operators/CLogicalDynamicIndexGet.cpp | 4 +-
.../gporca/libgpopt/src/operators/CLogicalGet.cpp | 59 +-
.../gporca/libgpopt/src/operators/CLogicalJoin.cpp | 46 +-
.../libgpopt/src/operators/CLogicalUnion.cpp | 8 +-
.../libgpopt/src/operators/CLogicalUnionAll.cpp | 87 +-
.../gporca/libgpopt/src/operators/CPhysicalAgg.cpp | 22 +-
.../libgpopt/src/operators/CPhysicalFilter.cpp | 2 +-
.../libgpopt/src/operators/CPhysicalHashJoin.cpp | 214 +
.../src/operators/CPhysicalLeftOuterHashJoin.cpp | 101 +-
.../libgpopt/src/operators/CPhysicalMotion.cpp | 6 +-
.../src/operators/CPhysicalRightOuterHashJoin.cpp | 8 +
.../libgpopt/src/operators/CPhysicalScan.cpp | 2 +
.../libgpopt/src/operators/CPhysicalSequence.cpp | 128 +-
.../src/operators/CPhysicalSerialUnionAll.cpp | 8 +-
.../src/operators/CScalarBitmapIndexProbe.cpp | 8 +-
.../libgpopt/src/optimizer/COptimizerConfig.cpp | 23 +-
.../libgpopt/src/search/CGroupExpression.cpp | 4 +-
.../src/translate/CTranslatorDXLToExpr.cpp | 11 +-
.../gporca/libgpopt/src/xforms/CJoinOrderDPv2.cpp | 6 +-
.../xforms/CXformDynamicGet2DynamicTableScan.cpp | 9 +
.../CXformDynamicIndexGet2DynamicIndexScan.cpp | 9 +
...ormDynamicIndexOnlyGet2DynamicIndexOnlyScan.cpp | 9 +
.../gporca/libgpopt/src/xforms/CXformEagerAgg.cpp | 13 +-
...CXformExpandDynamicGetWithForeignPartitions.cpp | 4 +-
.../libgpopt/src/xforms/CXformGet2TableScan.cpp | 9 +
.../xforms/CXformIndexOnlyGet2IndexOnlyScan.cpp | 9 +
.../src/xforms/CXformJoin2IndexApplyGeneric.cpp | 22 +
.../libgpopt/src/xforms/CXformLimit2IndexGet.cpp | 12 +
.../libgpopt/src/xforms/CXformMinMax2IndexGet.cpp | 11 +
.../src/xforms/CXformSelect2BitmapBoolOp.cpp | 14 +
.../src/xforms/CXformSelect2DynamicIndexGet.cpp | 11 +
.../xforms/CXformSelect2DynamicIndexOnlyGet.cpp | 11 +
.../libgpopt/src/xforms/CXformSelect2IndexGet.cpp | 11 +
.../src/xforms/CXformSelect2IndexOnlyGet.cpp | 11 +
.../gporca/libgpopt/src/xforms/CXformUtils.cpp | 95 +-
.../xforms/CxformSelect2DynamicBitmapBoolOp.cpp | 12 +
src/backend/gporca/libgpos/include/gpos/assert.h | 2 +-
.../libgpos/include/gpos/common/CDynamicPtrArray.h | 50 +-
.../gporca/libgpos/include/gpos/common/CHashSet.h | 11 +
.../libgpos/include/gpos/common/DbgPrintMixin.h | 2 +-
.../libgpos/include/gpos/memory/CMemoryPool.h | 4 +-
.../libgpos/include/gpos/string/CWStringBase.h | 8 +
src/backend/gporca/libgpos/include/gpos/types.h | 14 +-
.../unittest/gpos/common/CDynamicPtrArrayTest.h | 2 +
.../unittest/gpos/common/CDynamicPtrArrayTest.cpp | 96 +-
.../src/unittest/gpos/common/CHashMapIterTest.cpp | 4 +-
.../src/unittest/gpos/common/CHashSetIterTest.cpp | 2 +-
.../gporca/libgpos/src/error/CErrorContext.cpp | 3 +-
.../libnaucrates/include/naucrates/base/IDatum.h | 12 +
.../libnaucrates/include/naucrates/dxl/CDXLUtils.h | 37 +
.../naucrates/dxl/operators/CDXLLogicalGet.h | 8 +-
.../include/naucrates/dxl/operators/CDXLOperator.h | 1 -
.../naucrates/dxl/operators/CDXLOperatorFactory.h | 4 -
.../dxl/operators/CDXLPhysicalSubqueryScan.h | 85 -
.../naucrates/dxl/parser/CParseHandlerBase.h | 1 +
.../naucrates/dxl/parser/CParseHandlerFactory.h | 5 +
.../naucrates/dxl/parser/CParseHandlerLogicalGet.h | 4 +-
.../naucrates/dxl/parser/CParseHandlerMDRelation.h | 3 +
...CParseHandlerHint.h => CParseHandlerPlanHint.h} | 27 +-
.../dxl/parser/CParseHandlerSubqueryScan.h | 68 -
.../include/naucrates/dxl/parser/parsehandlers.h | 2 +-
.../include/naucrates/dxl/xml/dxltokens.h | 12 +-
.../include/naucrates/md/CMDRelationCtasGPDB.h | 7 +
.../include/naucrates/md/CMDRelationGPDB.h | 7 +-
.../include/naucrates/md/CMDTypeGenericGPDB.h | 15 -
.../libnaucrates/include/naucrates/md/IMDId.h | 19 +
.../include/naucrates/md/IMDRelation.h | 3 +
.../naucrates/statistics/CFilterStatsProcessor.h | 3 +-
.../include/naucrates/statistics/CStatistics.h | 6 +
.../include/naucrates/statistics/IStatistics.h | 24 +
src/backend/gporca/libnaucrates/src/CDXLUtils.cpp | 27 +
.../gporca/libnaucrates/src/base/IDatum.cpp | 14 -
.../gporca/libnaucrates/src/md/CMDRelationGPDB.cpp | 17 +-
.../libnaucrates/src/md/CMDTypeGenericGPDB.cpp | 6 +-
.../libnaucrates/src/operators/CDXLLogicalGet.cpp | 17 +-
.../src/operators/CDXLOperatorFactory.cpp | 41 +-
.../src/operators/CDXLPhysicalSubqueryScan.cpp | 157 -
.../gporca/libnaucrates/src/operators/Makefile | 1 -
.../src/parser/CParseHandlerDynamicForeignScan.cpp | 2 +-
.../src/parser/CParseHandlerFactory.cpp | 22 +-
.../src/parser/CParseHandlerLogicalForeignGet.cpp | 6 +-
.../src/parser/CParseHandlerLogicalGet.cpp | 16 +-
.../src/parser/CParseHandlerMDRelation.cpp | 20 +-
.../src/parser/CParseHandlerOptimizerConfig.cpp | 35 +-
.../src/parser/CParseHandlerPlanHint.cpp | 226 +
.../parser/CParseHandlerStatsDerivedRelation.cpp | 3 -
.../src/parser/CParseHandlerSubqueryScan.cpp | 160 -
.../gporca/libnaucrates/src/parser/Makefile | 2 +-
.../src/statistics/CFilterStatsProcessor.cpp | 16 +-
.../src/statistics/CJoinStatsProcessor.cpp | 2 +-
.../src/statistics/CStatisticsUtils.cpp | 5 +-
.../gporca/libnaucrates/src/xml/dxltokens.cpp | 11 +-
src/backend/gporca/server/CMakeLists.txt | 13 +-
.../gporca/server/src/unittest/CTestUtils.cpp | 11 +-
.../server/src/unittest/dxl/CParseHandlerTest.cpp | 1 -
.../unittest/dxl/statistics/CStatisticsTest.cpp | 4 +-
.../src/unittest/gpopt/minidump/CBitmapTest.cpp | 1 -
.../src/unittest/gpopt/minidump/CICGTest.cpp | 2 +-
.../unittest/gpopt/minidump/CMiniDumperDXLTest.cpp | 3 +-
.../unittest/gpopt/minidump/CMissingStatsTest.cpp | 2 +-
.../unittest/gpopt/operators/CExpressionTest.cpp | 8 +-
src/backend/utils/misc/guc_gp.c | 11 +
src/include/gpopt/gpdbwrappers.h | 3 +
src/include/gpopt/translate/CIndexQualInfo.h | 15 +-
.../gpopt/translate/CTranslatorDXLToPlStmt.h | 37 +-
.../gpopt/translate/CTranslatorQueryToDXL.h | 3 +
src/include/gpopt/translate/CTranslatorUtils.h | 6 -
src/include/gpopt/utils/COptTasks.h | 7 +-
src/include/optimizer/hints.h | 248 +
src/include/optimizer/orca.h | 4 +
src/include/parser/parse_relation.h | 1 +
src/include/utils/guc.h | 1 +
src/include/utils/unsync_guc_name.h | 1 +
.../regress/expected/bfv_aggregate_optimizer.out | 2 +-
src/test/regress/expected/bfv_cte.out | 212 +
src/test/regress/expected/bfv_cte_optimizer.out | 271 +
src/test/regress/expected/bfv_index.out | 51 +
src/test/regress/expected/bfv_index_optimizer.out | 49 +
src/test/regress/expected/bfv_joins.out | 177 +
src/test/regress/expected/bfv_joins_optimizer.out | 185 +-
src/test/regress/expected/bfv_statistic.out | 169 +
.../regress/expected/bfv_statistic_optimizer.out | 171 +
.../regress/expected/brin_multi_optimizer_1.out | 2 +-
src/test/regress/expected/equivclass_optimizer.out | 16 +-
.../expected/gp_covering_index_optimizer.out | 10 +-
src/test/regress/expected/gp_dqa.out | 31 +
src/test/regress/expected/gp_dqa_optimizer.out | 34 +
src/test/regress/expected/gporca.out | 81 +-
src/test/regress/expected/gporca_optimizer.out | 144 +-
.../regress/expected/groupingsets_optimizer.out | 34 +-
src/test/regress/expected/join_gp.out | 473 +-
src/test/regress/expected/join_gp_optimizer.out | 535 +-
src/test/regress/expected/join_optimizer.out | 25 +-
src/test/regress/expected/memoize_optimizer.out | 18 +-
src/test/regress/expected/planhints.out | 1780 +++
src/test/regress/expected/planhints_optimizer.out | 1571 ++
src/test/regress/expected/qp_rowsecurity.out | 979 ++
.../regress/expected/qp_rowsecurity_optimizer.out | 915 ++
src/test/regress/expected/qp_subquery.out | 110 +
.../regress/expected/qp_subquery_optimizer.out | 222 +
src/test/regress/expected/rowhints.out | 265 +
src/test/regress/expected/rowhints_optimizer.out | 237 +
src/test/regress/expected/rowsecurity.out | 60 +-
.../{rowsecurity.out => rowsecurity_optimizer.out} | 904 +-
src/test/regress/expected/rpt.out | 85 -
src/test/regress/expected/rpt_optimizer.out | 84 -
src/test/regress/expected/subselect_optimizer.out | 2 +-
src/test/regress/greenplum_schedule | 4 +-
src/test/regress/sql/bfv_cte.sql | 108 +
src/test/regress/sql/bfv_index.sql | 30 +
src/test/regress/sql/bfv_joins.sql | 54 +
src/test/regress/sql/bfv_statistic.sql | 63 +
src/test/regress/sql/gp_dqa.sql | 3 +
src/test/regress/sql/gporca.sql | 35 +-
src/test/regress/sql/join_gp.sql | 166 +-
src/test/regress/sql/maskout.sh | 1 +
src/test/regress/sql/planhints.sql | 550 +
src/test/regress/sql/qp_rowsecurity.sql | 466 +
src/test/regress/sql/qp_subquery.sql | 28 +
src/test/regress/sql/rowhints.sql | 124 +
src/test/regress/sql/rowsecurity.sql | 4 +
src/test/regress/sql/rpt.sql | 35 -
1336 files changed, 30247 insertions(+), 50106 deletions(-)
create mode 100644 .abi-check/7.1.0/postgres.symbols.ignore
create mode 100644 .abi-check/7.1.0/postgres.types.ignore
delete mode 100644 src/backend/gporca/data/dxl/minidump/BitmapIndexProbeMergeFilters.mdp
delete mode 100644 src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp
delete mode 100644 src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp
copy src/backend/gporca/data/dxl/minidump/{DynamicIndexScanCosting.mdp => Hint-AbsoluteRows-Over-Join.mdp} (57%)
copy src/backend/gporca/data/dxl/minidump/{Hash-BitmapScan-InArray.mdp => Hint-AddRows-Over-Join.mdp} (86%)
copy src/backend/gporca/data/dxl/minidump/{Hash-BitmapScan.mdp => Hint-BitmapScan-Over-Table.mdp} (68%)
copy src/backend/gporca/data/dxl/minidump/{IndexOnlyScanCosting.mdp => Hint-IndexOnlyScan-Over-Table.mdp} (72%)
copy src/backend/gporca/data/dxl/minidump/{NLJ-EqAllCol-No-Broadcast.mdp => Hint-IndexScan-Over-Join.mdp} (73%)
copy src/backend/gporca/data/dxl/minidump/{Hash-IndexScan.mdp => Hint-IndexScan-Over-Table.mdp} (74%)
copy src/backend/gporca/data/dxl/minidump/{Hash-BitmapScan-InArray.mdp => Hint-MultiplyRows-Over-Join.mdp} (86%)
copy src/backend/gporca/data/dxl/minidump/{Hash-IndexScan.mdp => Hint-NoBitmapScan-Over-Table.mdp} (76%)
copy src/backend/gporca/data/dxl/minidump/{Hash-IndexScan.mdp => Hint-NoIndexOnlyScan-Over-Table.mdp} (71%)
copy src/backend/gporca/data/dxl/minidump/{IndexOnlyScanCosting.mdp => Hint-NoIndexScan-Over-Table.mdp} (73%)
copy src/backend/gporca/data/dxl/minidump/{NLJ-EqAllCol-No-Broadcast.mdp => Hint-SeqScan-Over-Join.mdp} (73%)
copy src/backend/gporca/data/dxl/minidump/{IndexOnlyScanCosting.mdp => Hint-SeqScan-Over-Table.mdp} (73%)
copy src/backend/gporca/data/dxl/minidump/{Hash-BitmapScan-InArray.mdp => Hint-SubtractRows-Over-Join.mdp} (86%)
delete mode 100644 src/backend/gporca/data/dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp
delete mode 100644 src/backend/gporca/data/dxl/parse_tests/q21-SubqueryScan.xml
create mode 100644 src/backend/gporca/libgpopt/include/gpopt/hints/CHintUtils.h
create mode 100644 src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h
create mode 100644 src/backend/gporca/libgpopt/include/gpopt/hints/CRowHint.h
create mode 100644 src/backend/gporca/libgpopt/include/gpopt/hints/CScanHint.h
copy src/backend/gporca/libgpopt/{src/base/CDrvdPropCtxt.cpp => include/gpopt/hints/IHint.h} (52%)
create mode 100644 src/backend/gporca/libgpopt/src/hints/CHintUtils.cpp
create mode 100644 src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp
create mode 100644 src/backend/gporca/libgpopt/src/hints/CRowHint.cpp
create mode 100644 src/backend/gporca/libgpopt/src/hints/CScanHint.cpp
copy src/backend/gporca/{libgpos/src/test => libgpopt/src/hints}/Makefile (56%)
create mode 100644 src/backend/gporca/libgpopt/src/hints/README
delete mode 100644 src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h
copy src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/{CParseHandlerHint.h => CParseHandlerPlanHint.h} (73%)
delete mode 100644 src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerSubqueryScan.h
delete mode 100644 src/backend/gporca/libnaucrates/src/operators/CDXLPhysicalSubqueryScan.cpp
create mode 100644 src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp
delete mode 100644 src/backend/gporca/libnaucrates/src/parser/CParseHandlerSubqueryScan.cpp
create mode 100644 src/include/optimizer/hints.h
create mode 100644 src/test/regress/expected/planhints.out
create mode 100644 src/test/regress/expected/planhints_optimizer.out
create mode 100644 src/test/regress/expected/qp_rowsecurity.out
create mode 100644 src/test/regress/expected/qp_rowsecurity_optimizer.out
create mode 100644 src/test/regress/expected/rowhints.out
create mode 100644 src/test/regress/expected/rowhints_optimizer.out
copy src/test/regress/expected/{rowsecurity.out => rowsecurity_optimizer.out} (72%)
create mode 120000 src/test/regress/sql/maskout.sh
create mode 100644 src/test/regress/sql/planhints.sql
create mode 100644 src/test/regress/sql/qp_rowsecurity.sql
create mode 100644 src/test/regress/sql/rowhints.sql
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 18/30: Revert "Queries on Distributed Replicated tables hangs when using optimizer"
Posted by ma...@apache.org.
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 4130f66f363bf59ae3f46664dbe59bcf6f71fb89
Author: Jingyu Wang <wj...@vmware.com>
AuthorDate: Wed Jan 3 11:44:38 2024 -0800
Revert "Queries on Distributed Replicated tables hangs when using optimizer"
This reverts commit b3501602a5c09ddeea986f2a62b271728c9f57e1.
This commit is reverted for two reasons:
1. It causes certain queries involving CTE of replicated table to fall back.
2. It introduced a flag "allow enforcement" to Non-Singleton spec to prohibit an
optimization context, so the distribution request is abandoned. It was used to
indicate an illegitimate request, but the implementation results in ambiguity.
---
.../dxl/minidump/TaintedReplicatedTablesCTE.mdp | 2 +-
.../gpopt/base/CDistributionSpecNonSingleton.h | 13 +---
.../src/base/CDistributionSpecNonSingleton.cpp | 4 +-
.../gporca/libgpopt/src/base/CEnfdDistribution.cpp | 7 --
.../libgpopt/src/operators/CPhysicalSequence.cpp | 35 +--------
.../src/operators/CPhysicalSerialUnionAll.cpp | 8 +-
src/test/regress/expected/rpt.out | 85 ----------------------
src/test/regress/expected/rpt_optimizer.out | 84 ---------------------
src/test/regress/sql/rpt.sql | 35 ---------
9 files changed, 10 insertions(+), 263 deletions(-)
diff --git a/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp b/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp
index 34fe6f9b70..e7f605dd4d 100644
--- a/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp
+++ b/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp
@@ -350,7 +350,7 @@
</dxl:LogicalCTEAnchor>
</dxl:LogicalCTEAnchor>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="10">
+ <dxl:Plan Id="0" SpaceSize="70">
<dxl:Sequence>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="1293.001221" Rows="2.000000" Width="24"/>
diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CDistributionSpecNonSingleton.h b/src/backend/gporca/libgpopt/include/gpopt/base/CDistributionSpecNonSingleton.h
index da181bae5e..1b2709d193 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/base/CDistributionSpecNonSingleton.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/base/CDistributionSpecNonSingleton.h
@@ -36,9 +36,6 @@ private:
// should Replicated distribution satisfy current distribution
BOOL m_fAllowReplicated{true};
- // should allow this non-singleton spec to be enforced?
- BOOL m_fAllowEnforced{true};
-
public:
CDistributionSpecNonSingleton(const CDistributionSpecNonSingleton &) =
delete;
@@ -47,8 +44,7 @@ public:
CDistributionSpecNonSingleton();
//ctor
- explicit CDistributionSpecNonSingleton(BOOL fAllowReplicated,
- BOOL fAllowEnforced);
+ explicit CDistributionSpecNonSingleton(BOOL fAllowReplicated);
// should Replicated distribution satisfy current distribution
BOOL
@@ -57,13 +53,6 @@ public:
return m_fAllowReplicated;
}
- // should allow this non-singleton spec to be enforced?
- BOOL
- FAllowEnforced() const
- {
- return m_fAllowEnforced;
- }
-
// accessor
EDistributionType
Edt() const override
diff --git a/src/backend/gporca/libgpopt/src/base/CDistributionSpecNonSingleton.cpp b/src/backend/gporca/libgpopt/src/base/CDistributionSpecNonSingleton.cpp
index 06426925ab..a87b2ea255 100644
--- a/src/backend/gporca/libgpopt/src/base/CDistributionSpecNonSingleton.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CDistributionSpecNonSingleton.cpp
@@ -42,8 +42,8 @@ CDistributionSpecNonSingleton::CDistributionSpecNonSingleton() = default;
//
//---------------------------------------------------------------------------
CDistributionSpecNonSingleton::CDistributionSpecNonSingleton(
- BOOL fAllowReplicated, BOOL fAllowEnforced)
- : m_fAllowReplicated(fAllowReplicated), m_fAllowEnforced(fAllowEnforced)
+ BOOL fAllowReplicated)
+ : m_fAllowReplicated(fAllowReplicated)
{
}
diff --git a/src/backend/gporca/libgpopt/src/base/CEnfdDistribution.cpp b/src/backend/gporca/libgpopt/src/base/CEnfdDistribution.cpp
index d3d73936e3..286fa5904b 100644
--- a/src/backend/gporca/libgpopt/src/base/CEnfdDistribution.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CEnfdDistribution.cpp
@@ -15,7 +15,6 @@
#include "gpopt/base/CDistributionSpec.h"
#include "gpopt/base/CDistributionSpecHashed.h"
-#include "gpopt/base/CDistributionSpecNonSingleton.h"
#include "gpopt/base/CDistributionSpecSingleton.h"
#include "gpopt/base/CDrvdPropPlan.h"
#include "gpopt/base/CReqdPropPlan.h"
@@ -142,12 +141,6 @@ CEnfdDistribution::Epet(CExpressionHandle &exprhdl, CPhysical *popPhysical,
return EpetUnnecessary;
}
- if (CDistributionSpec::EdtNonSingleton == m_pds->Edt() &&
- !CDistributionSpecNonSingleton::PdsConvert(m_pds)->FAllowEnforced())
- {
- return EpetProhibited;
- }
-
// N.B.: subtlety ahead:
// We used to do the following check in CPhysicalMotion::FValidContext
// which was correct but more costly. We are able to move the outer
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp
index 9b91b0dfdb..1657bcf480 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp
@@ -228,37 +228,6 @@ CPhysicalSequence::PdsRequired(CMemoryPool *mp,
return GPOS_NEW(mp) CDistributionSpecAny(this->Eopid());
}
- // When the producer is not a singleton/Universal, we do request a non-singleton
- // on all the children. But when the producer is replicated still we were requesting
- // non-singleton which will possibly generate a risky plan and could cause a possible
- // hang too.For example in the following plan the slice 1 and slice 2 are executed on
- // a single segment but the producer is skewed on all the segments. So in this case the
- // producer on the other two segments undergoes starvation which causes the query to hang.
- //
- // Gather Motion 3:1 (slice4; segments: 3)
- // -> Sequence
- // -> Shared Scan (share slice:id 4:0)
- // ...
- // -> Random Redistribute Motion 1:3 (slice3)
- // -> Hash Join
- // -> Gather Motion 1:1 (slice1; segments: 1)
- // -> Shared Scan (share slice:id 1:0)
- // -> Hash
- // -> Aggregate
- // -> Gather Motion 1:1 (slice2; segments: 1)
- // -> Shared Scan (share slice:id 2:0)
- //
- //
- // So adding a check if the producer is replicated, request a non-singleton spec that is not
- // allowed to be enforced, to avoid potential hang issues.
-
- if (CDistributionSpec::EdtTaintedReplicated == pds->Edt() ||
- CDistributionSpec::EdtStrictReplicated == pds->Edt())
- {
- return GPOS_NEW(mp) CDistributionSpecNonSingleton(
- true /* fAllowReplicated */, false /* fAllowEnforced */);
- }
-
// If required distribution is singleton on master (sequence is top operation) or
// non-singleton with not allowed replicated (there is another top-sequence under this sequence)
// then we should not allow replicated distribution, to avoid potential hang issues,
@@ -272,8 +241,8 @@ CPhysicalSequence::PdsRequired(CMemoryPool *mp,
!CDistributionSpecNonSingleton::PdsConvert(pdsRequired)
->FAllowReplicated()))
{
- return GPOS_NEW(mp) CDistributionSpecNonSingleton(
- false /* fAllowReplicated */, true /* fAllowEnforced */);
+ return GPOS_NEW(mp)
+ CDistributionSpecNonSingleton(false /* fAllowReplicated */);
}
// first child is non-singleton, request a non-singleton distribution on second child
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalSerialUnionAll.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalSerialUnionAll.cpp
index 44b0526428..7139a37b8d 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalSerialUnionAll.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalSerialUnionAll.cpp
@@ -119,8 +119,8 @@ CPhysicalSerialUnionAll::PdsRequired(
if (1 == ulOptReq)
{
// Request 2: NON-SINGLETON from outer child
- return GPOS_NEW(mp) CDistributionSpecNonSingleton(
- false /*fAllowReplicated*/, true /*fAllowEnforced*/);
+ return GPOS_NEW(mp)
+ CDistributionSpecNonSingleton(false /*fAllowReplicated*/);
}
else
{
@@ -161,8 +161,8 @@ CPhysicalSerialUnionAll::PdsRequired(
// we need to the inner child to be distributed across segments that does
// not generate duplicate results. That is, inner child should not be replicated.
- return GPOS_NEW(mp) CDistributionSpecNonSingleton(
- false /*fAllowReplicated*/, true /*fAllowEnforced*/);
+ return GPOS_NEW(mp)
+ CDistributionSpecNonSingleton(false /*fAllowReplicated*/);
}
// EOF
diff --git a/src/test/regress/expected/rpt.out b/src/test/regress/expected/rpt.out
index 1b3bfd826e..8908d9a4ea 100644
--- a/src/test/regress/expected/rpt.out
+++ b/src/test/regress/expected/rpt.out
@@ -9,91 +9,6 @@
--
create schema rpt;
set search_path to rpt;
--- start_ignore
--- GPDB_12_MERGE_FIXME: different plan when enable_parallel to on;
--- If the producer is replicated, request a non-singleton spec
--- that is not allowed to be enforced, to avoid potential CTE hang issue
-drop table if exists with_test1 cascade;
-NOTICE: table "with_test1" does not exist, skipping
-create table with_test1 (i character varying(10)) DISTRIBUTED REPLICATED;
-explain
-WITH cte1 AS ( SELECT *,ROW_NUMBER() OVER ( PARTITION BY i) AS RANK_DESC FROM with_test1),
-cte2 AS ( SELECT 'COL1' TBLNM,COUNT(*) DIFFCNT FROM ( SELECT * FROM cte1) X)
-select * FROM ( SELECT 'COL1' TBLNM FROM cte1) A LEFT JOIN cte2 C ON A.TBLNM=C.TBLNM;
- QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
- Hash Left Join (cost=10928.13..11529.44 rows=48100 width=72)
- Hash Cond: (('COL1'::text) = ('COL1'::text))
- -> Gather Motion 1:1 (slice1; segments: 1) (cost=5644.43..5644.43 rows=48100 width=32)
- -> Subquery Scan on cte1 (cost=4321.68..5163.43 rows=48100 width=32)
- -> WindowAgg (cost=4321.68..5163.43 rows=48100 width=46)
- Partition By: with_test1.i
- -> Sort (cost=4321.68..4441.93 rows=48100 width=38)
- Sort Key: with_test1.i
- -> Seq Scan on with_test1 (cost=0.00..581.00 rows=48100 width=38)
- -> Hash (cost=5283.69..5283.69 rows=1 width=40)
- -> Aggregate (cost=5283.68..5283.69 rows=1 width=40)
- -> Gather Motion 1:1 (slice2; segments: 1) (cost=5163.43..5163.43 rows=48100 width=0)
- -> Subquery Scan on cte1_1 (cost=4321.68..5163.43 rows=48100 width=0)
- -> WindowAgg (cost=4321.68..5163.43 rows=48100 width=46)
- Partition By: with_test1_1.i
- -> Sort (cost=4321.68..4441.93 rows=48100 width=38)
- Sort Key: with_test1_1.i
- -> Seq Scan on with_test1 with_test1_1 (cost=0.00..581.00 rows=48100 width=38)
- Optimizer: Postgres query optimizer
-(19 rows)
-
-WITH cte1 AS ( SELECT *,ROW_NUMBER() OVER ( PARTITION BY i) AS RANK_DESC FROM with_test1),
- cte2 AS ( SELECT 'COL1' TBLNM,COUNT(*) DIFFCNT FROM ( SELECT * FROM cte1) X)
-select * FROM ( SELECT 'COL1' TBLNM FROM cte1) A LEFT JOIN cte2 C ON A.TBLNM=C.TBLNM;
- tblnm | tblnm | diffcnt
--------+-------+---------
-(0 rows)
-
--- This is expected to fall back to planner.
-drop table if exists with_test2 cascade;
-NOTICE: table "with_test2" does not exist, skipping
-drop table if exists with_test3 cascade;
-NOTICE: table "with_test3" does not exist, skipping
-create table with_test2 (id bigserial NOT NULL, isc varchar(15) NOT NULL,iscd varchar(15) NULL) DISTRIBUTED REPLICATED;
-create table with_test3 (id numeric NULL, rc varchar(255) NULL,ri numeric NULL) DISTRIBUTED REPLICATED;
-insert into with_test2 (isc,iscd) values ('CMN_BIN_YES', 'CMN_BIN_YES');
-insert into with_test3 (id,rc,ri) values (113551,'CMN_BIN_YES',101991), (113552,'CMN_BIN_NO',101991), (113553,'CMN_BIN_ERR',101991), (113554,'CMN_BIN_NULL',101991);
-explain
-WITH
- t1 AS (SELECT * FROM with_test2),
- t2 AS (SELECT id, rc FROM with_test3 WHERE ri = 101991)
-SELECT p.*FROM t1 p JOIN t2 r ON p.isc = r.rc JOIN t2 r1 ON p.iscd = r1.rc LIMIT 1;
- QUERY PLAN
----------------------------------------------------------------------------------------------------------
- Gather Motion 1:1 (slice1; segments: 1) (cost=390.63..390.63 rows=1 width=104)
- -> Limit (cost=332.63..390.63 rows=1 width=104)
- -> Hash Join (cost=332.63..739.50 rows=7 width=104)
- Hash Cond: ((with_test2.iscd)::text = (r1.rc)::text)
- -> Hash Join (cost=166.32..572.79 rows=129 width=104)
- Hash Cond: ((with_test2.isc)::text = (r.rc)::text)
- -> Seq Scan on with_test2 (cost=0.00..344.00 rows=24400 width=104)
- -> Hash (cost=166.25..166.25 rows=5 width=516)
- -> Subquery Scan on r (cost=0.00..166.25 rows=5 width=516)
- -> Seq Scan on with_test3 (cost=0.00..166.25 rows=5 width=548)
- Filter: (ri = '101991'::numeric)
- -> Hash (cost=166.25..166.25 rows=5 width=516)
- -> Subquery Scan on r1 (cost=0.00..166.25 rows=5 width=516)
- -> Seq Scan on with_test3 with_test3_1 (cost=0.00..166.25 rows=5 width=548)
- Filter: (ri = '101991'::numeric)
- Optimizer: Postgres query optimizer
-(16 rows)
-
-WITH
- t1 AS (SELECT * FROM with_test2),
- t2 AS (SELECT id, rc FROM with_test3 WHERE ri = 101991)
-SELECT p.*FROM t1 p JOIN t2 r ON p.isc = r.rc JOIN t2 r1 ON p.iscd = r1.rc LIMIT 1;
- id | isc | iscd
-----+-------------+-------------
- 1 | CMN_BIN_YES | CMN_BIN_YES
-(1 row)
-
--- end_ignore
---------
-- INSERT
---------
diff --git a/src/test/regress/expected/rpt_optimizer.out b/src/test/regress/expected/rpt_optimizer.out
index 0453faa094..66f13c2134 100644
--- a/src/test/regress/expected/rpt_optimizer.out
+++ b/src/test/regress/expected/rpt_optimizer.out
@@ -9,90 +9,6 @@
--
create schema rpt;
set search_path to rpt;
--- start_ignore
--- GPDB_12_MERGE_FIXME: different plan when enable_parallel to on;
--- If the producer is replicated, request a non-singleton spec
--- that is not allowed to be enforced, to avoid potential CTE hang issue
-drop table if exists with_test1 cascade;
-NOTICE: table "with_test1" does not exist, skipping
-create table with_test1 (i character varying(10)) DISTRIBUTED REPLICATED;
-explain
-WITH cte1 AS ( SELECT *,ROW_NUMBER() OVER ( PARTITION BY i) AS RANK_DESC FROM with_test1),
-cte2 AS ( SELECT 'COL1' TBLNM,COUNT(*) DIFFCNT FROM ( SELECT * FROM cte1) X)
-select * FROM ( SELECT 'COL1' TBLNM FROM cte1) A LEFT JOIN cte2 C ON A.TBLNM=C.TBLNM;
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Sequence (cost=0.00..1293.00 rows=2 width=24)
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=1)
- -> Gather Motion 1:1 (slice1; segments: 1) (cost=0.00..431.00 rows=1 width=16)
- -> WindowAgg (cost=0.00..431.00 rows=3 width=16)
- Partition By: with_test1.i
- -> Sort (cost=0.00..431.00 rows=3 width=10)
- Sort Key: with_test1.i
- -> Seq Scan on with_test1 (cost=0.00..431.00 rows=3 width=10)
- -> Hash Left Join (cost=0.00..862.00 rows=2 width=24)
- Hash Cond: (('COL1'::text) = ('COL1'::text))
- -> Result (cost=0.00..431.00 rows=1 width=8)
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=1)
- -> Hash (cost=431.00..431.00 rows=1 width=16)
- -> Result (cost=0.00..431.00 rows=1 width=16)
- Filter: (('COL1'::text) = 'COL1'::text)
- -> Aggregate (cost=0.00..431.00 rows=1 width=8)
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=1)
- Optimizer: Pivotal Optimizer (GPORCA)
-(18 rows)
-
-WITH cte1 AS ( SELECT *,ROW_NUMBER() OVER ( PARTITION BY i) AS RANK_DESC FROM with_test1),
- cte2 AS ( SELECT 'COL1' TBLNM,COUNT(*) DIFFCNT FROM ( SELECT * FROM cte1) X)
-select * FROM ( SELECT 'COL1' TBLNM FROM cte1) A LEFT JOIN cte2 C ON A.TBLNM=C.TBLNM;
- tblnm | tblnm | diffcnt
--------+-------+---------
-(0 rows)
-
--- This is expected to fall back to planner.
-drop table if exists with_test2 cascade;
-NOTICE: table "with_test2" does not exist, skipping
-drop table if exists with_test3 cascade;
-NOTICE: table "with_test3" does not exist, skipping
-create table with_test2 (id bigserial NOT NULL, isc varchar(15) NOT NULL,iscd varchar(15) NULL) DISTRIBUTED REPLICATED;
-create table with_test3 (id numeric NULL, rc varchar(255) NULL,ri numeric NULL) DISTRIBUTED REPLICATED;
-insert into with_test2 (isc,iscd) values ('CMN_BIN_YES', 'CMN_BIN_YES');
-insert into with_test3 (id,rc,ri) values (113551,'CMN_BIN_YES',101991), (113552,'CMN_BIN_NO',101991), (113553,'CMN_BIN_ERR',101991), (113554,'CMN_BIN_NULL',101991);
-explain
-WITH
- t1 AS (SELECT * FROM with_test2),
- t2 AS (SELECT id, rc FROM with_test3 WHERE ri = 101991)
-SELECT p.*FROM t1 p JOIN t2 r ON p.isc = r.rc JOIN t2 r1 ON p.iscd = r1.rc LIMIT 1;
- QUERY PLAN
----------------------------------------------------------------------------------------------------------
- Gather Motion 1:1 (slice1; segments: 1) (cost=390.63..390.63 rows=1 width=104)
- -> Limit (cost=332.63..390.63 rows=1 width=104)
- -> Hash Join (cost=332.63..739.50 rows=7 width=104)
- Hash Cond: ((with_test2.iscd)::text = (r1.rc)::text)
- -> Hash Join (cost=166.32..572.79 rows=129 width=104)
- Hash Cond: ((with_test2.isc)::text = (r.rc)::text)
- -> Seq Scan on with_test2 (cost=0.00..344.00 rows=24400 width=104)
- -> Hash (cost=166.25..166.25 rows=5 width=516)
- -> Subquery Scan on r (cost=0.00..166.25 rows=5 width=516)
- -> Seq Scan on with_test3 (cost=0.00..166.25 rows=5 width=548)
- Filter: (ri = '101991'::numeric)
- -> Hash (cost=166.25..166.25 rows=5 width=516)
- -> Subquery Scan on r1 (cost=0.00..166.25 rows=5 width=516)
- -> Seq Scan on with_test3 with_test3_1 (cost=0.00..166.25 rows=5 width=548)
- Filter: (ri = '101991'::numeric)
- Optimizer: Postgres query optimizer
-(16 rows)
-
-WITH
- t1 AS (SELECT * FROM with_test2),
- t2 AS (SELECT id, rc FROM with_test3 WHERE ri = 101991)
-SELECT p.*FROM t1 p JOIN t2 r ON p.isc = r.rc JOIN t2 r1 ON p.iscd = r1.rc LIMIT 1;
- id | isc | iscd
-----+-------------+-------------
- 1 | CMN_BIN_YES | CMN_BIN_YES
-(1 row)
-
--- end_ignore
---------
-- INSERT
---------
diff --git a/src/test/regress/sql/rpt.sql b/src/test/regress/sql/rpt.sql
index 4d85d11931..79a4a3db64 100644
--- a/src/test/regress/sql/rpt.sql
+++ b/src/test/regress/sql/rpt.sql
@@ -10,41 +10,6 @@
create schema rpt;
set search_path to rpt;
--- start_ignore
--- GPDB_12_MERGE_FIXME: different plan when enable_parallel to on;
--- If the producer is replicated, request a non-singleton spec
--- that is not allowed to be enforced, to avoid potential CTE hang issue
-drop table if exists with_test1 cascade;
-create table with_test1 (i character varying(10)) DISTRIBUTED REPLICATED;
-
-explain
-WITH cte1 AS ( SELECT *,ROW_NUMBER() OVER ( PARTITION BY i) AS RANK_DESC FROM with_test1),
-cte2 AS ( SELECT 'COL1' TBLNM,COUNT(*) DIFFCNT FROM ( SELECT * FROM cte1) X)
-select * FROM ( SELECT 'COL1' TBLNM FROM cte1) A LEFT JOIN cte2 C ON A.TBLNM=C.TBLNM;
-
-WITH cte1 AS ( SELECT *,ROW_NUMBER() OVER ( PARTITION BY i) AS RANK_DESC FROM with_test1),
- cte2 AS ( SELECT 'COL1' TBLNM,COUNT(*) DIFFCNT FROM ( SELECT * FROM cte1) X)
-select * FROM ( SELECT 'COL1' TBLNM FROM cte1) A LEFT JOIN cte2 C ON A.TBLNM=C.TBLNM;
-
--- This is expected to fall back to planner.
-drop table if exists with_test2 cascade;
-drop table if exists with_test3 cascade;
-create table with_test2 (id bigserial NOT NULL, isc varchar(15) NOT NULL,iscd varchar(15) NULL) DISTRIBUTED REPLICATED;
-create table with_test3 (id numeric NULL, rc varchar(255) NULL,ri numeric NULL) DISTRIBUTED REPLICATED;
-insert into with_test2 (isc,iscd) values ('CMN_BIN_YES', 'CMN_BIN_YES');
-insert into with_test3 (id,rc,ri) values (113551,'CMN_BIN_YES',101991), (113552,'CMN_BIN_NO',101991), (113553,'CMN_BIN_ERR',101991), (113554,'CMN_BIN_NULL',101991);
-explain
-WITH
- t1 AS (SELECT * FROM with_test2),
- t2 AS (SELECT id, rc FROM with_test3 WHERE ri = 101991)
-SELECT p.*FROM t1 p JOIN t2 r ON p.isc = r.rc JOIN t2 r1 ON p.iscd = r1.rc LIMIT 1;
-
-WITH
- t1 AS (SELECT * FROM with_test2),
- t2 AS (SELECT id, rc FROM with_test3 WHERE ri = 101991)
-SELECT p.*FROM t1 p JOIN t2 r ON p.isc = r.rc JOIN t2 r1 ON p.iscd = r1.rc LIMIT 1;
--- end_ignore
-
---------
-- INSERT
---------
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 25/30: [ORCA] Implement plan hints for row hints
Posted by ma...@apache.org.
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 22bfff2b63d89b5e2b881159e1bc9927411d47ff
Author: David Kimura <dk...@vmware.com>
AuthorDate: Thu Feb 8 13:55:10 2024 -0800
[ORCA] Implement plan hints for row hints
This work is a continuation of plan hints in commit e781fe0db4e.
This change allows the user to specify row hints that tweak join result
cardinality estimates based on statistics. The updated estimates can
coerce the optimizer to generate different join types or orders that may
yield faster execution times.
The syntax mirrors pg_hint_plan [1]. Row hints can only be used for
joins, even though it could theoretically be useful on single relations,
too. In order to lift that constraint we must resolve upstream issue
[2]. Until then, row hints are only applied during stats derivation of
logical joins.
Example usage:
A user can specify that joining t1 and t2 produces 123 rows:
/*+
Rows(t1 t2 #123)
*/
EXPLAIN SELECT * FROM t1, t2;
Above query would produce MDP format with RowHint entry:
<dxl:PlanHint>
<dxl:RowHint Alias="t1,t2" Rows="123.000000" Kind="Absolute"/>
</dxl:PlanHint>
[1] https://github.com/ossc-db/pg_hint_plan
[2] https://github.com/ossc-db/pg_hint_plan/issues/157
---
src/backend/gpopt/utils/COptTasks.cpp | 37 +
.../dxl/minidump/Hint-AbsoluteRows-Over-Join.mdp | 647 ++++++++++++
.../data/dxl/minidump/Hint-AddRows-Over-Join.mdp | 1116 ++++++++++++++++++++
.../dxl/minidump/Hint-MultiplyRows-Over-Join.mdp | 1116 ++++++++++++++++++++
.../dxl/minidump/Hint-SubtractRows-Over-Join.mdp | 1116 ++++++++++++++++++++
.../include/gpopt/base/CDrvdPropRelational.h | 3 +
.../libgpopt/include/gpopt/hints/CPlanHint.h | 12 +
.../gporca/libgpopt/include/gpopt/hints/CRowHint.h | 148 +++
.../gporca/libgpopt/src/hints/CPlanHint.cpp | 65 +-
src/backend/gporca/libgpopt/src/hints/CRowHint.cpp | 116 ++
src/backend/gporca/libgpopt/src/hints/Makefile | 2 +-
.../gporca/libgpopt/src/operators/CLogicalJoin.cpp | 19 +-
.../include/naucrates/dxl/xml/dxltokens.h | 6 +
.../include/naucrates/statistics/CStatistics.h | 6 +
.../include/naucrates/statistics/IStatistics.h | 3 +
.../src/parser/CParseHandlerPlanHint.cpp | 49 +
.../gporca/libnaucrates/src/xml/dxltokens.cpp | 6 +
src/backend/gporca/server/CMakeLists.txt | 3 +-
src/include/optimizer/hints.h | 17 +-
src/test/regress/expected/rowhints.out | 264 +++++
src/test/regress/expected/rowhints_optimizer.out | 236 +++++
src/test/regress/greenplum_schedule | 2 +
src/test/regress/sql/maskout.sh | 1 +
src/test/regress/sql/rowhints.sql | 124 +++
24 files changed, 5108 insertions(+), 6 deletions(-)
diff --git a/src/backend/gpopt/utils/COptTasks.cpp b/src/backend/gpopt/utils/COptTasks.cpp
index 232fb6e5fe..b1688c8df4 100644
--- a/src/backend/gpopt/utils/COptTasks.cpp
+++ b/src/backend/gpopt/utils/COptTasks.cpp
@@ -89,6 +89,17 @@ const CSystemId default_sysid(IMDId::EmdidGeneral, GPOS_WSZ_STR_LENGTH("GPDB"));
plan_hint_hook_type plan_hint_hook = nullptr;
+// Check one-to-one mapping of row hint types
+GPOS_CPL_ASSERT(CRowHint::RVT_ABSOLUTE ==
+ (CRowHint::RowsValueType) RVT_ABSOLUTE,
+ "CRowHint::RVT_ABSOLUTE must equal RVT_ABSOLUTE");
+GPOS_CPL_ASSERT(CRowHint::RVT_ADD == (CRowHint::RowsValueType) RVT_ADD,
+ "CRowHint::RVT_ADD must equal RVT_ADD");
+GPOS_CPL_ASSERT(CRowHint::RVT_SUB == (CRowHint::RowsValueType) RVT_SUB,
+ "CRowHint::RVT_SUB must equal RVT_SUB");
+GPOS_CPL_ASSERT(CRowHint::RVT_MULTI == (CRowHint::RowsValueType) RVT_MULTI,
+ "CRowHint::RVT_MULTI must equal RVT_MULTI");
+
//---------------------------------------------------------------------------
// @function:
@@ -479,6 +490,8 @@ COptTasks::GetPlanHints(CMemoryPool *mp, Query *query)
HintState *hintstate = nullptr;
if (plan_hint_hook != nullptr)
{
+ // Calling plan_hint_hook creates pg_hint_plan hint structures
+ // (see optimizer/hints.h).
hintstate = (HintState *) plan_hint_hook(query);
}
@@ -487,8 +500,12 @@ COptTasks::GetPlanHints(CMemoryPool *mp, Query *query)
return nullptr;
}
+ // Following code translates pg_hint_plan hint structures into ORCA hint
+ // structures (see gpopt/hints/CPlanHint.h).
+
CPlanHint *plan_hints = GPOS_NEW(mp) CPlanHint(mp);
+ // Translate ScanMethodHint => CScanHint
for (int ul = 0; ul < hintstate->num_hints[HINT_TYPE_SCAN_METHOD]; ul++)
{
ScanMethodHint *scan_hint =
@@ -574,6 +591,26 @@ COptTasks::GetPlanHints(CMemoryPool *mp, Query *query)
hint->AddType(type);
}
+ // Translate RowsHint => CRowHint
+
+ for (int hint_index = 0; hint_index < hintstate->num_hints[HINT_TYPE_ROWS];
+ hint_index++)
+ {
+ RowsHint *row_hint = (RowsHint *) hintstate->rows_hints[hint_index];
+
+ StringPtrArray *aliases = GPOS_NEW(mp) StringPtrArray(mp);
+
+ for (int rel_index = 0; rel_index < row_hint->nrels; rel_index++)
+ {
+ aliases->Append(
+ GPOS_NEW(mp) CWStringConst(mp, row_hint->relnames[rel_index]));
+ }
+
+ plan_hints->AddHint(GPOS_NEW(mp) CRowHint(
+ mp, aliases, CDouble(row_hint->rows),
+ (CRowHint::RowsValueType) row_hint->value_type));
+ }
+
return plan_hints;
}
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-AbsoluteRows-Over-Join.mdp b/src/backend/gporca/data/dxl/minidump/Hint-AbsoluteRows-Over-Join.mdp
new file mode 100644
index 0000000000..948f791998
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-AbsoluteRows-Over-Join.mdp
@@ -0,0 +1,647 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Test absolute row hint over multi-way join.
+
+ LOAD 'pg_hint_plan';
+
+ -- Setup tables
+ CREATE TABLE my_table(a int, b int);
+ CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+ CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(100) INCLUSIVE EVERY(20));
+
+ /*+
+ Rows(t1 t2 t3 #123)
+ */
+ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2 JOIN our_table AS t3 ON t2.a=t3.a;
+ ]]>
+ </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:PlanHint>
+ <dxl:RowHint Alias="t1,t2,t3" Rows="123.000000" Kind="Absolute"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ </dxl:OptimizerConfig>
+ <dxl:Metadata SystemIds="0.GPDB">
+ <dxl:RelationExtendedStatistics Mdid="10.238544.1.0" Name="my_table"/>
+ <dxl:RelationExtendedStatistics Mdid="10.238547.1.0" Name="your_table"/>
+ <dxl:ColumnStatistics Mdid="1.238544.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:RelationExtendedStatistics Mdid="10.238552.1.0" Name="our_table"/>
+ <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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:ColumnStatistics Mdid="1.238547.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:ColumnStatistics Mdid="1.238552.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:Relation Mdid="6.238564.1.0" Name="our_table_1_prt_p1_4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.238567.1.0" Name="our_table_1_prt_p1_5" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.238561.1.0" Name="our_table_1_prt_p1_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <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" CoercePathType="0"/>
+ <dxl:Relation Mdid="6.238570.1.0" Name="our_table_1_prt_p1_6" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="101"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationStatistics Mdid="2.238544.1.0" Name="my_table" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.238544.1.0" Name="my_table" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:RelationStatistics Mdid="2.238547.1.0" Name="your_table" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.238547.1.0" Name="your_table" IsTemporary="false" StorageType="AppendOnly, Row-oriented" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.238558.1.0" Name="our_table_1_prt_p1_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:RelationStatistics Mdid="2.238552.1.0" Name="our_table" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.238552.1.0" Name="our_table" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:Partitions>
+ <dxl:Partition Mdid="6.238555.1.0"/>
+ <dxl:Partition Mdid="6.238558.1.0"/>
+ <dxl:Partition Mdid="6.238561.1.0"/>
+ <dxl:Partition Mdid="6.238564.1.0"/>
+ <dxl:Partition Mdid="6.238567.1.0"/>
+ <dxl:Partition Mdid="6.238570.1.0"/>
+ </dxl:Partitions>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.238555.1.0" Name="our_table_1_prt_p1_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="0"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalJoin JoinType="Inner">
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238544.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:LogicalJoin JoinType="Inner">
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238547.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238552.1.0" TableName="t3" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="19" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="20" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="21" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="22" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="23" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="24" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="25" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="26" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="27" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="19" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:Comparison>
+ </dxl:LogicalJoin>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:LogicalJoin>
+ </dxl:Query>
+ <dxl:Plan Id="0" SpaceSize="90">
+ <dxl:HashJoin JoinType="Inner">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324463.157026" Rows="123.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:JoinFilter/>
+ <dxl:HashCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="18" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:Comparison>
+ </dxl:HashCondList>
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324032.153139" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324032.153050" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:JoinFilter>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:JoinFilter>
+ <dxl:BroadcastMotion InputSegments="0,1,2" OutputSegments="0,1,2">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000081" Rows="3.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238544.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ </dxl:BroadcastMotion>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238547.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="9" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="12" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:TableScan>
+ </dxl:NestedLoopJoin>
+ </dxl:GatherMotion>
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000073" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="18" Alias="a">
+ <dxl:Ident ColId="18" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:DynamicTableScan SelectorIds="">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="18" Alias="a">
+ <dxl:Ident ColId="18" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:Partitions>
+ <dxl:Partition Mdid="6.238555.1.0"/>
+ <dxl:Partition Mdid="6.238558.1.0"/>
+ <dxl:Partition Mdid="6.238561.1.0"/>
+ <dxl:Partition Mdid="6.238564.1.0"/>
+ <dxl:Partition Mdid="6.238567.1.0"/>
+ <dxl:Partition Mdid="6.238570.1.0"/>
+ </dxl:Partitions>
+ <dxl:TableDescriptor Mdid="6.238552.1.0" TableName="t3" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="18" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="20" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="21" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="22" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="23" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="24" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="25" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="26" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:DynamicTableScan>
+ </dxl:GatherMotion>
+ </dxl:HashJoin>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-AddRows-Over-Join.mdp b/src/backend/gporca/data/dxl/minidump/Hint-AddRows-Over-Join.mdp
new file mode 100644
index 0000000000..16d970ad1d
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-AddRows-Over-Join.mdp
@@ -0,0 +1,1116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Test add row hint over multi-way join.
+
+ LOAD 'pg_hint_plan';
+
+ -- Setup tables
+ CREATE TABLE my_table(a int, b int);
+ CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+ CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(100) INCLUSIVE EVERY(20));
+
+ INSERT INTO my_table SELECT i, i FROM generate_series(1, 100)i;
+ INSERT INTO your_table SELECT i, i FROM generate_series(1, 100)i;
+ INSERT INTO our_table SELECT i, i FROM generate_series(1, 100)i;
+ ANALYZE my_table, your_table, our_table;
+
+ /*+
+ Rows(t1 t2 +123)
+ */
+ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2;
+ ]]>
+ </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:PlanHint>
+ <dxl:RowHint Alias="t1,t2" Rows="123.000000" Kind="Add"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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.238604.1.0" Name="my_table" Rows="100.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.238604.1.0" Name="my_table" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:RelationStatistics Mdid="2.238607.1.0" Name="your_table" Rows="100.000000" RelPages="1" RelAllVisible="0" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.238607.1.0" Name="your_table" IsTemporary="false" Rows="100.000000" StorageType="AppendOnly, Row-oriented" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:ColumnStatistics Mdid="1.238604.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="51"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="51"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="53"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="53"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="55"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="55"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="57"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="57"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="59"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="59"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="61"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="61"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="63"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="63"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="69"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="69"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="71"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="71"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="73"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="73"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="75"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="75"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="77"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="77"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="79"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="79"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="81"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="81"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="83"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="83"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="85"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="85"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="87"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="89"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="89"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="91"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="91"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="93"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="93"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="95"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="95"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="99"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="99"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:RelationExtendedStatistics Mdid="10.238604.1.0" Name="my_table"/>
+ <dxl:ColumnStatistics Mdid="1.238607.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="51"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="51"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="53"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="53"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="55"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="55"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="57"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="57"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="59"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="59"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="61"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="61"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="63"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="63"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="69"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="69"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="71"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="71"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="73"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="73"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="75"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="75"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="77"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="77"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="79"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="79"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="81"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="81"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="83"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="83"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="85"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="85"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="87"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="89"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="89"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="91"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="91"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="93"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="93"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="95"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="95"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="99"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="99"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:RelationExtendedStatistics Mdid="10.238607.1.0" Name="your_table"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalJoin JoinType="Inner">
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238604.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238607.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:LogicalJoin>
+ </dxl:Query>
+ <dxl:Plan Id="0" SpaceSize="6">
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324171.783544" Rows="10123.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324171.481743" Rows="10123.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:JoinFilter>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:JoinFilter>
+ <dxl:BroadcastMotion InputSegments="0,1,2" OutputSegments="0,1,2">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.008105" Rows="300.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000697" Rows="100.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238604.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ </dxl:BroadcastMotion>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000697" Rows="100.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238607.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="9" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="12" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:TableScan>
+ </dxl:NestedLoopJoin>
+ </dxl:GatherMotion>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-MultiplyRows-Over-Join.mdp b/src/backend/gporca/data/dxl/minidump/Hint-MultiplyRows-Over-Join.mdp
new file mode 100644
index 0000000000..e0c673f820
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-MultiplyRows-Over-Join.mdp
@@ -0,0 +1,1116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Test multiply row hint over multi-way join.
+
+ LOAD 'pg_hint_plan';
+
+ -- Setup tables
+ CREATE TABLE my_table(a int, b int);
+ CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+ CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(100) INCLUSIVE EVERY(20));
+
+ INSERT INTO my_table SELECT i, i FROM generate_series(1, 100)i;
+ INSERT INTO your_table SELECT i, i FROM generate_series(1, 100)i;
+ INSERT INTO our_table SELECT i, i FROM generate_series(1, 100)i;
+ ANALYZE my_table, your_table, our_table;
+
+ /*+
+ Rows(t1 t2 *123)
+ */
+ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2;
+ ]]>
+ </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:PlanHint>
+ <dxl:RowHint Alias="t1,t2" Rows="123.000000" Kind="Multi"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:RelationExtendedStatistics Mdid="10.238664.1.0" Name="my_table"/>
+ <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:RelationExtendedStatistics Mdid="10.238667.1.0" Name="your_table"/>
+ <dxl:ColumnStatistics Mdid="1.238664.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="51"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="51"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="53"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="53"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="55"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="55"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="57"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="57"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="59"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="59"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="61"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="61"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="63"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="63"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="69"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="69"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="71"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="71"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="73"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="73"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="75"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="75"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="77"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="77"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="79"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="79"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="81"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="81"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="83"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="83"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="85"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="85"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="87"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="89"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="89"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="91"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="91"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="93"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="93"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="95"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="95"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="99"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="99"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:ColumnStatistics Mdid="1.238667.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="51"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="51"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="53"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="53"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="55"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="55"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="57"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="57"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="59"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="59"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="61"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="61"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="63"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="63"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="69"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="69"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="71"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="71"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="73"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="73"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="75"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="75"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="77"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="77"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="79"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="79"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="81"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="81"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="83"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="83"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="85"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="85"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="87"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="89"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="89"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="91"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="91"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="93"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="93"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="95"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="95"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="99"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="99"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:RelationStatistics Mdid="2.238664.1.0" Name="my_table" Rows="100.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.238664.1.0" Name="my_table" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:RelationStatistics Mdid="2.238667.1.0" Name="your_table" Rows="100.000000" RelPages="1" RelAllVisible="0" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.238667.1.0" Name="your_table" IsTemporary="false" Rows="100.000000" StorageType="AppendOnly, Row-oriented" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalJoin JoinType="Inner">
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238664.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238667.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:LogicalJoin>
+ </dxl:Query>
+ <dxl:Plan Id="0" SpaceSize="6">
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1338964.825297" Rows="1230000.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1338928.154897" Rows="1230000.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:JoinFilter>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:JoinFilter>
+ <dxl:BroadcastMotion InputSegments="0,1,2" OutputSegments="0,1,2">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.008105" Rows="300.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000697" Rows="100.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238664.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ </dxl:BroadcastMotion>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000697" Rows="100.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238667.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="9" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="12" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:TableScan>
+ </dxl:NestedLoopJoin>
+ </dxl:GatherMotion>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-SubtractRows-Over-Join.mdp b/src/backend/gporca/data/dxl/minidump/Hint-SubtractRows-Over-Join.mdp
new file mode 100644
index 0000000000..1f86c2715c
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-SubtractRows-Over-Join.mdp
@@ -0,0 +1,1116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Test sub row hint over multi-way join.
+
+ LOAD 'pg_hint_plan';
+
+ -- Setup tables
+ CREATE TABLE my_table(a int, b int);
+ CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+ CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(100) INCLUSIVE EVERY(20));
+
+ INSERT INTO my_table SELECT i, i FROM generate_series(1, 100)i;
+ INSERT INTO your_table SELECT i, i FROM generate_series(1, 100)i;
+ INSERT INTO our_table SELECT i, i FROM generate_series(1, 100)i;
+ ANALYZE my_table, your_table, our_table;
+
+ /*+
+ Rows(t1 t2 -123)
+ */
+ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2;
+ ]]>
+ </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:PlanHint>
+ <dxl:RowHint Alias="t1,t2" Rows="123.000000" Kind="Sub"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:RelationStatistics Mdid="2.238637.1.0" Name="your_table" Rows="100.000000" RelPages="1" RelAllVisible="0" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.238637.1.0" Name="your_table" IsTemporary="false" Rows="100.000000" StorageType="AppendOnly, Row-oriented" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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.238634.1.0" Name="my_table" Rows="100.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.238634.1.0" Name="my_table" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:ColumnStatistics Mdid="1.238637.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="51"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="51"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="53"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="53"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="55"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="55"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="57"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="57"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="59"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="59"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="61"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="61"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="63"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="63"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="69"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="69"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="71"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="71"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="73"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="73"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="75"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="75"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="77"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="77"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="79"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="79"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="81"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="81"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="83"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="83"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="85"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="85"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="87"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="89"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="89"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="91"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="91"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="93"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="93"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="95"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="95"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="99"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="99"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:RelationExtendedStatistics Mdid="10.238637.1.0" Name="your_table"/>
+ <dxl:ColumnStatistics Mdid="1.238634.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="51"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="51"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="53"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="53"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="55"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="55"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="57"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="57"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="59"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="59"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="61"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="61"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="63"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="63"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="69"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="69"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="71"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="71"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="73"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="73"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="75"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="75"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="77"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="77"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="79"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="79"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="81"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="81"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="83"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="83"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="85"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="85"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="87"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="89"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="89"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="91"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="91"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="93"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="93"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="95"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="95"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="99"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="99"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:RelationExtendedStatistics Mdid="10.238634.1.0" Name="my_table"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalJoin JoinType="Inner">
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238634.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.238637.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:LogicalJoin>
+ </dxl:Query>
+ <dxl:Plan Id="0" SpaceSize="6">
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324168.800384" Rows="9877.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324168.505917" Rows="9877.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:JoinFilter>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:JoinFilter>
+ <dxl:BroadcastMotion InputSegments="0,1,2" OutputSegments="0,1,2">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.008105" Rows="300.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000697" Rows="100.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238634.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ </dxl:BroadcastMotion>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000697" Rows="100.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.238637.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="9" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="12" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:TableScan>
+ </dxl:NestedLoopJoin>
+ </dxl:GatherMotion>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h b/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h
index ad88ece79f..7ad9c0025f 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h
@@ -111,6 +111,9 @@ private:
CTableDescriptorHashSet *m_table_descriptor{nullptr};
+ // relation (or alias) names
+ StringPtrArray *m_table_aliases;
+
// helper for getting applicable FDs from child
static CFunctionalDependencyArray *DeriveChildFunctionalDependencies(
CMemoryPool *mp, ULONG child_index, CExpressionHandle &exprhdl);
diff --git a/src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h b/src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h
index d48a3f6118..d762b7a8ed 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h
@@ -15,8 +15,10 @@
#include "gpos/common/CDynamicPtrArray.h"
#include "gpos/common/CRefCount.h"
+#include "gpopt/hints/CRowHint.h"
#include "gpopt/hints/CScanHint.h"
#include "gpopt/hints/IHint.h"
+#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/COperator.h"
#include "naucrates/dxl/xml/CXMLSerializer.h"
@@ -31,8 +33,12 @@ class CPlanHint : public CRefCount, public DbgPrintMixin<CPlanHint>
private:
CMemoryPool *m_mp{nullptr};
+ // List of all scan hints
ScanHintList *m_scan_hints{nullptr};
+ // List of all row hints
+ RowHintList *m_row_hints{nullptr};
+
public:
CPlanHint(CMemoryPool *mp);
@@ -41,10 +47,16 @@ public:
// Add a scan hint
void AddHint(CScanHint *hint);
+ // Add a row hint
+ void AddHint(CRowHint *hint);
+
// Get a scan hint that matches a name (table or alias)
CScanHint *GetScanHint(const char *name);
CScanHint *GetScanHint(const CWStringBase *name);
+ // Get a row hint that matches a set of table descriptors
+ CRowHint *GetRowHint(CTableDescriptorHashSet *ptabdescset);
+
IOstream &OsPrint(IOstream &os) const;
void Serialize(CXMLSerializer *xml_serializer) const;
diff --git a/src/backend/gporca/libgpopt/include/gpopt/hints/CRowHint.h b/src/backend/gporca/libgpopt/include/gpopt/hints/CRowHint.h
new file mode 100644
index 0000000000..c9ecd44de6
--- /dev/null
+++ b/src/backend/gporca/libgpopt/include/gpopt/hints/CRowHint.h
@@ -0,0 +1,148 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CRowHint.h
+//
+// @doc:
+// CRowHint represents an ORCA optimizer hint that allows the user to
+// effect join result cardinality estimates which in turn can effect the
+// plan shape. Syntax mirrors pg_hint_plan.
+//
+// Example:
+// /*+ Rows(a b #10) */ SELECT... ; Sets rows of join result to 10
+// /*+ Rows(a b +10) */ SELECT... ; Increments row number by 10
+// /*+ Rows(a b -10) */ SELECT... ; Subtracts 10 from the row number.
+// /*+ Rows(a b *10) */ SELECT... ; Makes the number 10 times larger.
+//
+// In DXL these are serialized into the below format:
+// <dxl:RowHint Alias="a,b" Rows="10.000000" Kind="Absolute"/>
+// <dxl:RowHint Alias="a,b" Rows="10.000000" Kind="Add"/>
+// <dxl:RowHint Alias="a,b" Rows="10.000000" Kind="Sub"/>
+// <dxl:RowHint Alias="a,b" Rows="10.000000" Kind="Multi"/>
+//---------------------------------------------------------------------------
+#ifndef GPOS_CRowHint_H
+#define GPOS_CRowHint_H
+
+#include "gpos/base.h"
+#include "gpos/common/CDynamicPtrArray.h"
+#include "gpos/common/CRefCount.h"
+
+#include "gpopt/exception.h"
+#include "gpopt/hints/IHint.h"
+#include "gpopt/operators/COperator.h"
+#include "naucrates/dxl/xml/CXMLSerializer.h"
+
+namespace gpopt
+{
+class CRowHint : public IHint, public DbgPrintMixin<CRowHint>
+{
+public:
+ enum RowsValueType
+ {
+ RVT_ABSOLUTE,
+ RVT_ADD,
+ RVT_SUB,
+ RVT_MULTI,
+
+ SENTINEL
+ };
+
+private:
+ CMemoryPool *m_mp;
+
+ // m_aliases contains sorted alias names.
+ //
+ // Row hint is order agnostic. Equivalent hints:
+ // Rows(a b #42)
+ // Rows(b a #42)
+ StringPtrArray *m_aliases{nullptr};
+
+ CDouble m_rows;
+
+ RowsValueType m_type;
+
+public:
+ CRowHint(CMemoryPool *mp, StringPtrArray *aliases, CDouble rows,
+ RowsValueType type)
+ : m_mp(mp), m_aliases(aliases), m_rows(rows), m_type(type)
+ {
+ aliases->Sort(CWStringBase::Compare);
+ }
+
+ ~CRowHint() override
+ {
+ CRefCount::SafeRelease(m_aliases);
+ }
+
+ const StringPtrArray *
+ GetAliasNames() const
+ {
+ return m_aliases;
+ }
+
+ RowsValueType
+ GetType() const
+ {
+ return m_type;
+ }
+
+ //---------------------------------------------------------------------------
+ // @function:
+ // CRowHint::ComputeRows
+ //
+ // @doc:
+ // Given an input value, evaluate the hint, then return the result.
+ //
+ //---------------------------------------------------------------------------
+ CDouble
+ ComputeRows(CDouble input) const
+ {
+ CDouble result(-1);
+ switch (m_type)
+ {
+ case RVT_ABSOLUTE:
+ {
+ result = m_rows;
+ break;
+ }
+ case RVT_ADD:
+ {
+ result = input + m_rows;
+ break;
+ }
+ case RVT_SUB:
+ {
+ result = input - m_rows;
+ break;
+ }
+ case RVT_MULTI:
+ {
+ result = input * m_rows;
+ break;
+ }
+ default:
+ {
+ CWStringDynamic *error_message = GPOS_NEW(m_mp)
+ CWStringDynamic(m_mp, GPOS_WSZ_LIT("Unknown row type"));
+
+ GPOS_RAISE(gpopt::ExmaGPOPT, gpopt::ExmiUnsupportedOp,
+ error_message->GetBuffer());
+ }
+ }
+ return result;
+ }
+
+ IOstream &OsPrint(IOstream &os) const;
+
+ void Serialize(CXMLSerializer *xml_serializer) const;
+};
+
+using RowHintList = CDynamicPtrArray<CRowHint, CleanupRelease>;
+
+} // namespace gpopt
+
+#endif // !GPOS_CRowHint_H
+
+// EOF
diff --git a/src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp b/src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp
index 8fc34e7163..30feeffc55 100644
--- a/src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp
+++ b/src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp
@@ -22,13 +22,16 @@ FORCE_GENERATE_DBGSTR(CPlanHint);
// CPlanHint::CPlanHint
//---------------------------------------------------------------------------
CPlanHint::CPlanHint(CMemoryPool *mp)
- : m_mp(mp), m_scan_hints(GPOS_NEW(mp) ScanHintList(mp))
+ : m_mp(mp),
+ m_scan_hints(GPOS_NEW(mp) ScanHintList(mp)),
+ m_row_hints(GPOS_NEW(mp) RowHintList(mp))
{
}
CPlanHint::~CPlanHint()
{
m_scan_hints->Release();
+ m_row_hints->Release();
}
void
@@ -37,6 +40,13 @@ CPlanHint::AddHint(CScanHint *hint)
m_scan_hints->Append(hint);
}
+void
+CPlanHint::AddHint(CRowHint *hint)
+{
+ m_row_hints->Append(hint);
+}
+
+
CScanHint *
CPlanHint::GetScanHint(const char *relname)
{
@@ -60,6 +70,48 @@ CPlanHint::GetScanHint(const CWStringBase *name)
return nullptr;
}
+//---------------------------------------------------------------------------
+// @function:
+// CPlanHint::GetRowHint
+//
+// @doc:
+// Given a set of table descriptors, find a matching CRowHint. A match
+// means that the table alias names used to describe the CRowHint equals
+// the set of table alias names provided by the given set of table
+// descriptors.
+//
+//---------------------------------------------------------------------------
+CRowHint *
+CPlanHint::GetRowHint(CTableDescriptorHashSet *ptabdescs)
+{
+ GPOS_ASSERT(ptabdescs->Size() > 0);
+
+ StringPtrArray *aliases = GPOS_NEW(m_mp) StringPtrArray(m_mp);
+ CTableDescriptorHashSetIter hsiter(ptabdescs);
+
+ while (hsiter.Advance())
+ {
+ const CTableDescriptor *ptabdesc = hsiter.Get();
+ aliases->Append(GPOS_NEW(m_mp) CWStringConst(
+ m_mp, ptabdesc->Name().Pstr()->GetBuffer()));
+ }
+ // Row hint aliases are sorted because the hint is order agnostic.
+ aliases->Sort(CWStringBase::Compare);
+
+ CRowHint *matching_hint = nullptr;
+ for (ULONG ul = 0; ul < m_row_hints->Size(); ul++)
+ {
+ CRowHint *hint = (*m_row_hints)[ul];
+ if (aliases->Equals(hint->GetAliasNames()))
+ {
+ matching_hint = hint;
+ break;
+ }
+ }
+ aliases->Release();
+ return matching_hint;
+}
+
IOstream &
CPlanHint::OsPrint(IOstream &os) const
{
@@ -76,6 +128,12 @@ CPlanHint::OsPrint(IOstream &os) const
os << " ";
(*m_scan_hints)[ul]->OsPrint(os) << "\n";
}
+
+ for (ULONG ul = 0; ul < m_row_hints->Size(); ul++)
+ {
+ os << " ";
+ (*m_row_hints)[ul]->OsPrint(os) << "\n";
+ }
os << "]";
return os;
}
@@ -87,6 +145,11 @@ CPlanHint::Serialize(CXMLSerializer *xml_serializer) const
{
(*m_scan_hints)[ul]->Serialize(xml_serializer);
}
+
+ for (ULONG ul = 0; ul < m_row_hints->Size(); ul++)
+ {
+ (*m_row_hints)[ul]->Serialize(xml_serializer);
+ }
}
diff --git a/src/backend/gporca/libgpopt/src/hints/CRowHint.cpp b/src/backend/gporca/libgpopt/src/hints/CRowHint.cpp
new file mode 100644
index 0000000000..24fa37fa98
--- /dev/null
+++ b/src/backend/gporca/libgpopt/src/hints/CRowHint.cpp
@@ -0,0 +1,116 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CRowHint.cpp
+//
+// @doc:
+// Container of plan hint objects
+//---------------------------------------------------------------------------
+
+#include "gpopt/hints/CRowHint.h"
+
+#include "naucrates/dxl/CDXLUtils.h"
+
+using namespace gpopt;
+
+FORCE_GENERATE_DBGSTR(CRowHint);
+
+IOstream &
+CRowHint::OsPrint(IOstream &os) const
+{
+ CWStringDynamic *aliases =
+ CDXLUtils::SerializeToCommaSeparatedString(m_mp, GetAliasNames());
+
+ os << "RowHint: " << aliases->GetBuffer();
+
+ switch (m_type)
+ {
+ case CRowHint::RVT_ABSOLUTE:
+ {
+ os << " " << GPOS_WSZ_LIT("#");
+ break;
+ }
+ case CRowHint::RVT_ADD:
+ {
+ os << " " << GPOS_WSZ_LIT("+");
+ break;
+ }
+ case CRowHint::RVT_SUB:
+ {
+ os << " " << GPOS_WSZ_LIT("-");
+ break;
+ }
+ case CRowHint::RVT_MULTI:
+ {
+ os << " " << GPOS_WSZ_LIT("*");
+ break;
+ }
+ default:
+ {
+ }
+ }
+
+ os << m_rows;
+
+
+ GPOS_DELETE(aliases);
+ return os;
+}
+
+void
+CRowHint::Serialize(CXMLSerializer *xml_serializer) const
+{
+ xml_serializer->OpenElement(
+ CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
+ CDXLTokens::GetDXLTokenStr(EdxltokenRowHint));
+
+ CWStringDynamic *aliases =
+ CDXLUtils::SerializeToCommaSeparatedString(m_mp, GetAliasNames());
+ xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenAlias),
+ aliases);
+ GPOS_DELETE(aliases);
+
+ xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenRows),
+ m_rows);
+
+ const CWStringConst *hint_type = nullptr;
+ switch (GetType())
+ {
+ case CRowHint::RVT_ABSOLUTE:
+ {
+ hint_type = CDXLTokens::GetDXLTokenStr(EdxltokenAbsolute);
+ break;
+ }
+ case CRowHint::RVT_ADD:
+ {
+ hint_type = CDXLTokens::GetDXLTokenStr(EdxltokenAdd);
+ break;
+ }
+ case CRowHint::RVT_SUB:
+ {
+ hint_type = CDXLTokens::GetDXLTokenStr(EdxltokenSubtract);
+ break;
+ }
+ case CRowHint::RVT_MULTI:
+ {
+ hint_type = CDXLTokens::GetDXLTokenStr(EdxltokenMultiply);
+ break;
+ }
+ default:
+ {
+ CWStringDynamic *error_message = GPOS_NEW(m_mp)
+ CWStringDynamic(m_mp, GPOS_WSZ_LIT("Unknown row type"));
+
+ GPOS_RAISE(gpopt::ExmaGPOPT, gpopt::ExmiUnsupportedOp,
+ error_message->GetBuffer());
+ }
+ }
+ xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenKind),
+ hint_type);
+
+ xml_serializer->CloseElement(
+ CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
+ CDXLTokens::GetDXLTokenStr(EdxltokenRowHint));
+}
diff --git a/src/backend/gporca/libgpopt/src/hints/Makefile b/src/backend/gporca/libgpopt/src/hints/Makefile
index 2f610a5fe9..cdff019b15 100644
--- a/src/backend/gporca/libgpopt/src/hints/Makefile
+++ b/src/backend/gporca/libgpopt/src/hints/Makefile
@@ -10,7 +10,7 @@ include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/src/backend/gporca/gporca.mk
-OBJS = CPlanHint.o CScanHint.o CHintUtils.o
+OBJS = CPlanHint.o CScanHint.o CRowHint.o CHintUtils.o
include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp
index aada2d9374..dd42d1eb6d 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp
@@ -91,7 +91,24 @@ IStatistics *
CLogicalJoin::PstatsDerive(CMemoryPool *mp, CExpressionHandle &exprhdl,
IStatisticsArray *stats_ctxt) const
{
- return CJoinStatsProcessor::DeriveJoinStats(mp, exprhdl, stats_ctxt);
+ IStatistics *pstats =
+ CJoinStatsProcessor::DeriveJoinStats(mp, exprhdl, stats_ctxt);
+
+ // Check whether a row plan hint exists for this join operators relations.
+ // And if one does exist, then evaluate the hint to overwrite the estimated
+ // rows.
+ CPlanHint *planhint =
+ COptCtxt::PoctxtFromTLS()->GetOptimizerConfig()->GetPlanHint();
+ if (nullptr != planhint)
+ {
+ CRowHint *rowhint =
+ planhint->GetRowHint(exprhdl.DeriveTableDescriptor());
+ if (nullptr != rowhint)
+ {
+ pstats->SetRows(rowhint->ComputeRows(pstats->Rows()));
+ }
+ }
+ return pstats;
}
// EOF
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
index ac2d4c6f45..438a16e1d4 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
@@ -60,6 +60,7 @@ enum Edxltoken
EdxltokenHint,
EdxltokenPlanHint,
EdxltokenScanHint,
+ EdxltokenRowHint,
EdxltokenJoinArityForAssociativityCommutativity,
EdxltokenArrayExpansionThreshold,
EdxltokenJoinOrderDPThreshold,
@@ -755,6 +756,11 @@ enum Edxltoken
EdxltokenForeignServerOid,
EdxltokenPhysicalDynamicIndexOnlyScan,
+ EdxltokenAbsolute,
+ EdxltokenAdd,
+ EdxltokenSubtract,
+ EdxltokenMultiply,
+
EdxltokenSentinel
};
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/statistics/CStatistics.h b/src/backend/gporca/libnaucrates/include/naucrates/statistics/CStatistics.h
index eeb2c54150..8f16065f26 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/statistics/CStatistics.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/statistics/CStatistics.h
@@ -184,6 +184,12 @@ public:
// actual number of rows
CDouble Rows() const override;
+ void
+ SetRows(CDouble rows) override
+ {
+ m_rows = rows;
+ }
+
ULONG
RelPages() const override
{
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h b/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h
index 09dd2b6ba5..29ef35b653 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h
@@ -101,6 +101,9 @@ public:
// how many rows
virtual CDouble Rows() const = 0;
+ // set how many rows
+ virtual void SetRows(CDouble rows) = 0;
+
// number of blocks in the relation (not always up to-to-date)
virtual ULONG RelPages() const = 0;
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp
index 7418e5c707..2b4d6d6a3e 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp
@@ -110,6 +110,52 @@ CParseHandlerPlanHint::StartElement(
}
hint_names->Release();
+ m_hint->AddHint(hint);
+ }
+ else if (0 ==
+ XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenRowHint),
+ element_local_name))
+ {
+ const XMLCh *attr_val_xml_hints = CDXLOperatorFactory::ExtractAttrValue(
+ attrs, EdxltokenAlias, EdxltokenPlanHint);
+ StringPtrArray *aliases = nullptr;
+ if (nullptr != attr_val_xml_hints)
+ {
+ aliases = CDXLOperatorFactory::ExtractConvertStrsToArray(
+ m_parse_handler_mgr->GetDXLMemoryManager(), attr_val_xml_hints);
+ }
+
+ CDouble rows = CDXLOperatorFactory::ExtractConvertAttrValueToDouble(
+ m_parse_handler_mgr->GetDXLMemoryManager(), attrs, EdxltokenRows,
+ EdxltokenPlanHint);
+
+ CWStringBase *typestr =
+ CDXLOperatorFactory::ExtractConvertAttrValueToStr(
+ m_parse_handler_mgr->GetDXLMemoryManager(), attrs,
+ EdxltokenKind, EdxltokenPlanHint);
+
+ CRowHint::RowsValueType hint_type = CRowHint::SENTINEL;
+ if (typestr->Equals(CDXLTokens::GetDXLTokenStr(EdxltokenAbsolute)))
+ {
+ hint_type = CRowHint::RVT_ABSOLUTE;
+ }
+ else if (typestr->Equals(CDXLTokens::GetDXLTokenStr(EdxltokenAdd)))
+ {
+ hint_type = CRowHint::RVT_ADD;
+ }
+ else if (typestr->Equals(CDXLTokens::GetDXLTokenStr(EdxltokenSubtract)))
+ {
+ hint_type = CRowHint::RVT_SUB;
+ }
+ else if (typestr->Equals(CDXLTokens::GetDXLTokenStr(EdxltokenMultiply)))
+ {
+ hint_type = CRowHint::RVT_MULTI;
+ }
+ GPOS_DELETE(typestr);
+
+ CRowHint *hint =
+ GPOS_NEW(m_mp) CRowHint(m_mp, aliases, rows, hint_type);
+
m_hint->AddHint(hint);
}
}
@@ -136,6 +182,9 @@ CParseHandlerPlanHint::EndElement(const XMLCh *const, // element_uri,
m_parse_handler_mgr->DeactivateHandler();
}
else if (0 != XMLString::compareString(
+ CDXLTokens::XmlstrToken(EdxltokenRowHint),
+ element_local_name) &&
+ 0 != XMLString::compareString(
CDXLTokens::XmlstrToken(EdxltokenScanHint),
element_local_name))
{
diff --git a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
index 83cd2234d2..1fe6a587b4 100644
--- a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
+++ b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
@@ -76,6 +76,7 @@ CDXLTokens::Init(CMemoryPool *mp)
{EdxltokenHint, GPOS_WSZ_LIT("Hint")},
{EdxltokenPlanHint, GPOS_WSZ_LIT("PlanHint")},
{EdxltokenScanHint, GPOS_WSZ_LIT("ScanHint")},
+ {EdxltokenRowHint, GPOS_WSZ_LIT("RowHint")},
{EdxltokenJoinArityForAssociativityCommutativity,
GPOS_WSZ_LIT("JoinArityForAssociativityCommutativity")},
{EdxltokenArrayExpansionThreshold,
@@ -788,6 +789,11 @@ CDXLTokens::Init(CMemoryPool *mp)
{EdxltokenNLJIndexParamList, GPOS_WSZ_LIT("NLJIndexParamList")},
{EdxltokenNLJIndexParam, GPOS_WSZ_LIT("NLJIndexParam")},
{EdxltokenNLJIndexOuterRefAsParam, GPOS_WSZ_LIT("OuterRefAsParam")},
+
+ {EdxltokenAbsolute, GPOS_WSZ_LIT("Absolute")},
+ {EdxltokenAdd, GPOS_WSZ_LIT("Add")},
+ {EdxltokenSubtract, GPOS_WSZ_LIT("Sub")},
+ {EdxltokenMultiply, GPOS_WSZ_LIT("Multi")},
};
m_pstrmap = GPOS_NEW_ARRAY(m_mp, SStrMapElem, EdxltokenSentinel);
diff --git a/src/backend/gporca/server/CMakeLists.txt b/src/backend/gporca/server/CMakeLists.txt
index d575b7c71d..141c891d7b 100644
--- a/src/backend/gporca/server/CMakeLists.txt
+++ b/src/backend/gporca/server/CMakeLists.txt
@@ -418,7 +418,8 @@ CPlanHintsTest:
Hint-SeqScan-Over-Table Hint-SeqScan-Over-Join
Hint-IndexScan-Over-Table Hint-IndexScan-Over-Join Hint-NoIndexScan-Over-Table
Hint-IndexOnlyScan-Over-Table Hint-NoIndexOnlyScan-Over-Table
-Hint-BitmapScan-Over-Table Hint-NoBitmapScan-Over-Table;
+Hint-BitmapScan-Over-Table Hint-NoBitmapScan-Over-Table
+Hint-AbsoluteRows-Over-Join Hint-AddRows-Over-Join Hint-SubtractRows-Over-Join Hint-MultiplyRows-Over-Join;
CForeignPartTest:
ForeignPartUniform PartForeignMixed PartForeignDifferentServer PartForeignDifferentExecLocation PartForeignMixedDPE PartForeignMixedSPE PartForeignUniformSPE ForeignScanExecLocAnySimpleScan ForeignScanExecLocAnyJoin ForeignPartOneTimeFilterDPE
diff --git a/src/include/optimizer/hints.h b/src/include/optimizer/hints.h
index 3765c1c67d..49bfa2ab96 100644
--- a/src/include/optimizer/hints.h
+++ b/src/include/optimizer/hints.h
@@ -1,6 +1,17 @@
-/*
- * Copied from pg_hint_plan.c
+/*-------------------------------------------------------------------------
+ *
+ * hints.h
+ *
+ * This file duplicates some internal structures from pg_hint_plan.c so
+ * that the parser can be leveraged by callers outside the pg_hint_plan
+ * extension.
+ *
+ * Copyright (c) 2012-2020, NIPPON TELEGRAPH AND TELEPHONE CORPORATION
+ *
+ *-------------------------------------------------------------------------
*/
+#ifndef OPTIMIZER_HINTS_H
+#define OPTIMIZER_HINTS_H
extern "C" {
#include "postgres.h"
@@ -233,3 +244,5 @@ struct HintState
RowsHint **rows_hints; /* parsed Rows hints */
ParallelHint **parallel_hints; /* parsed Parallel hints */
};
+
+#endif // !OPTIMIZER_HINTS_H
diff --git a/src/test/regress/expected/rowhints.out b/src/test/regress/expected/rowhints.out
new file mode 100644
index 0000000000..52b675fd84
--- /dev/null
+++ b/src/test/regress/expected/rowhints.out
@@ -0,0 +1,264 @@
+-- Test Optimizer Row Hints Feature
+--
+-- Purpose: Test that row hints may be used to edit cardinality estimates
+LOAD 'pg_hint_plan';
+DROP SCHEMA IF EXISTS rowhints CASCADE;
+CREATE SCHEMA rowhints;
+SET search_path=rowhints;
+SET optimizer_trace_fallback=on;
+-- Setup tables
+CREATE TABLE my_table(a int, b int);
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+CREATE INDEX my_awesome_index ON my_table(a);
+CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+CREATE INDEX your_awesome_index ON your_table(a);
+CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(100) INCLUSIVE EVERY(20));
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+CREATE INDEX our_awesome_index ON our_table(a);
+INSERT INTO my_table SELECT i, i FROM generate_series(1, 100)i;
+INSERT INTO your_table SELECT i, i FROM generate_series(1, 100)i;
+INSERT INTO our_table SELECT i, i FROM generate_series(1, 100)i;
+ANALYZE my_table, your_table, our_table;
+--------------------------------------------------------------------
+-- Test the different row hint types:
+--
+-- - Absolute
+-- - Add
+-- - Subtract
+-- - Multiply
+--------------------------------------------------------------------
+-- Baseline no hints
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=20000000000.00..20000017562.79 rows=1000000 width=8)
+ -> Nested Loop (cost=20000000000.00..20000004229.45 rows=333333 width=8)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=0.00..2.67 rows=100 width=4)
+ -> Seq Scan on your_table t2 (cost=0.00..1.33 rows=33 width=4)
+ -> Materialize (cost=10000000000.00..10000000068.45 rows=3333 width=4)
+ -> Nested Loop (cost=10000000000.00..10000000051.79 rows=3333 width=4)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=0.00..7.87 rows=102 width=0)
+ -> Append (cost=0.00..6.51 rows=34 width=0)
+ -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=0.00..1.06 rows=6 width=0)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=0.00..1.01 rows=1 width=0)
+ -> Materialize (cost=0.00..1.50 rows=33 width=4)
+ -> Seq Scan on my_table t1 (cost=0.00..1.33 rows=33 width=4)
+ Optimizer: Postgres-based planner
+(17 rows)
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 #123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
+ -> Append (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=33 width=xxx)
+ -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 +123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000123 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333374 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
+ -> Append (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=33 width=xxx)
+ -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 -123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=999877 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333292 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
+ -> Append (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=33 width=xxx)
+ -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 *123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41000000 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
+ -> Append (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=33 width=xxx)
+ -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
+--------------------------------------------------------------------
+--
+-- Subqueries
+--
+--------------------------------------------------------------------
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(my_table your_table #123)
+ */
+EXPLAIN SELECT * FROM my_table, (SELECT * FROM your_table) AS q;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost={inf}..{inf} rows=123 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=41 width=xxx)
+ -> Seq Scan on my_table (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
+--------------------------------------------------------------------
+--
+-- CTE
+--
+--------------------------------------------------------------------
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(my_table your_table #123)
+ */
+EXPLAIN WITH cte AS (SELECT * FROM my_table, (SELECT * FROM your_table) as q) SELECT * FROM cte;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost={inf}..{inf} rows=123 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=41 width=xxx)
+ -> Seq Scan on my_table (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
+--------------------------------------------------------------------
+-- Test updating lower join row hint
+--------------------------------------------------------------------
+-- force join order to isolate lower join row hint
+set optimizer_join_order=query;
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 #123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=12300 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=4100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
+ -> Append (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Materialize (cost={inf}..{inf} rows=41 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=41 width=xxx)
+ -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 *123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41000000 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
+ -> Append (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=33 width=xxx)
+ -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres-based planner
+
diff --git a/src/test/regress/expected/rowhints_optimizer.out b/src/test/regress/expected/rowhints_optimizer.out
new file mode 100644
index 0000000000..040b8d75d7
--- /dev/null
+++ b/src/test/regress/expected/rowhints_optimizer.out
@@ -0,0 +1,236 @@
+-- Test Optimizer Row Hints Feature
+--
+-- Purpose: Test that row hints may be used to edit cardinality estimates
+LOAD 'pg_hint_plan';
+DROP SCHEMA IF EXISTS rowhints CASCADE;
+CREATE SCHEMA rowhints;
+SET search_path=rowhints;
+SET optimizer_trace_fallback=on;
+-- Setup tables
+CREATE TABLE my_table(a int, b int);
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+CREATE INDEX my_awesome_index ON my_table(a);
+CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+CREATE INDEX your_awesome_index ON your_table(a);
+CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(100) INCLUSIVE EVERY(20));
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+CREATE INDEX our_awesome_index ON our_table(a);
+INSERT INTO my_table SELECT i, i FROM generate_series(1, 100)i;
+INSERT INTO your_table SELECT i, i FROM generate_series(1, 100)i;
+INSERT INTO our_table SELECT i, i FROM generate_series(1, 100)i;
+ANALYZE my_table, your_table, our_table;
+--------------------------------------------------------------------
+-- Test the different row hint types:
+--
+-- - Absolute
+-- - Add
+-- - Subtract
+-- - Multiply
+--------------------------------------------------------------------
+-- Baseline no hints
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..1356765552.28 rows=1000000 width=8)
+ -> Nested Loop (cost=0.00..1356765522.47 rows=333334 width=8)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=0.00..431.01 rows=100 width=4)
+ -> Seq Scan on your_table (cost=0.00..431.00 rows=34 width=4)
+ -> Nested Loop (cost=0.00..1324091.78 rows=3334 width=4)
+ Join Filter: true
+ -> Seq Scan on my_table (cost=0.00..431.00 rows=34 width=4)
+ -> Materialize (cost=0.00..431.00 rows=100 width=1)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=0.00..431.00 rows=100 width=1)
+ -> Dynamic Seq Scan on our_table (cost=0.00..431.00 rows=34 width=1)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+(13 rows)
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 #123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=3334 width=xxx)
+ Join Filter: true
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Dynamic Seq Scan on our_table (cost=xxx..xxx rows=34 width=xxx)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 +123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000123 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333375 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=3334 width=xxx)
+ Join Filter: true
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Dynamic Seq Scan on our_table (cost=xxx..xxx rows=34 width=xxx)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 -123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=999877 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333293 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=3334 width=xxx)
+ Join Filter: true
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Dynamic Seq Scan on our_table (cost=xxx..xxx rows=34 width=xxx)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 *123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41000000 width=xxx)
+ Join Filter: true
+ -> Nested Loop (cost=xxx..xxx rows=3334 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Dynamic Seq Scan on our_table (cost=xxx..xxx rows=34 width=xxx)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+
+--------------------------------------------------------------------
+--
+-- Subqueries
+--
+--------------------------------------------------------------------
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(my_table your_table #123)
+ */
+EXPLAIN SELECT * FROM my_table, (SELECT * FROM your_table) AS q;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ Optimizer: GPORCA
+
+--------------------------------------------------------------------
+--
+-- CTE
+--
+--------------------------------------------------------------------
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(my_table your_table #123)
+ */
+EXPLAIN WITH cte AS (SELECT * FROM my_table, (SELECT * FROM your_table) as q) SELECT * FROM cte;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ Optimizer: GPORCA
+
+--------------------------------------------------------------------
+-- Test updating lower join row hint
+--------------------------------------------------------------------
+-- force join order to isolate lower join row hint
+set optimizer_join_order=query;
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 #123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=12300 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=4100 width=xxx)
+ Join Filter: true
+ -> Nested Loop (cost=xxx..xxx rows=41 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Dynamic Seq Scan on our_table (cost=xxx..xxx rows=34 width=xxx)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 *123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+ QUERY PLAN
+----------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=41000000 width=xxx)
+ Join Filter: true
+ -> Nested Loop (cost=xxx..xxx rows=410000 width=xxx)
+ Join Filter: true
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on my_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on your_table (cost=xxx..xxx rows=34 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=100 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Dynamic Seq Scan on our_table (cost=xxx..xxx rows=34 width=xxx)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+
diff --git a/src/test/regress/greenplum_schedule b/src/test/regress/greenplum_schedule
index 1db65cd253..f9f61706ff 100755
--- a/src/test/regress/greenplum_schedule
+++ b/src/test/regress/greenplum_schedule
@@ -18,6 +18,8 @@
# test for builtin namespace pg_ext_aux
test: pg_ext_aux
+test: planhints rowhints
+
test: pg_dump_binary_upgrade
test: gp_dispatch_keepalives
diff --git a/src/test/regress/sql/maskout.sh b/src/test/regress/sql/maskout.sh
new file mode 120000
index 0000000000..971357cbe8
--- /dev/null
+++ b/src/test/regress/sql/maskout.sh
@@ -0,0 +1 @@
+../../../../gpcontrib/pg_hint_plan/sql/maskout.sh
\ No newline at end of file
diff --git a/src/test/regress/sql/rowhints.sql b/src/test/regress/sql/rowhints.sql
new file mode 100644
index 0000000000..d9e9b3cb2f
--- /dev/null
+++ b/src/test/regress/sql/rowhints.sql
@@ -0,0 +1,124 @@
+-- Test Optimizer Row Hints Feature
+--
+-- Purpose: Test that row hints may be used to edit cardinality estimates
+
+LOAD 'pg_hint_plan';
+
+DROP SCHEMA IF EXISTS rowhints CASCADE;
+
+CREATE SCHEMA rowhints;
+SET search_path=rowhints;
+SET optimizer_trace_fallback=on;
+
+-- Setup tables
+CREATE TABLE my_table(a int, b int);
+CREATE INDEX my_awesome_index ON my_table(a);
+
+CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+CREATE INDEX your_awesome_index ON your_table(a);
+
+CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(100) INCLUSIVE EVERY(20));
+CREATE INDEX our_awesome_index ON our_table(a);
+
+INSERT INTO my_table SELECT i, i FROM generate_series(1, 100)i;
+INSERT INTO your_table SELECT i, i FROM generate_series(1, 100)i;
+INSERT INTO our_table SELECT i, i FROM generate_series(1, 100)i;
+ANALYZE my_table, your_table, our_table;
+
+--------------------------------------------------------------------
+-- Test the different row hint types:
+--
+-- - Absolute
+-- - Add
+-- - Subtract
+-- - Multiply
+--------------------------------------------------------------------
+
+-- Baseline no hints
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 #123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 +123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 -123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 t3 *123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+
+
+--------------------------------------------------------------------
+--
+-- Subqueries
+--
+--------------------------------------------------------------------
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(my_table your_table #123)
+ */
+EXPLAIN SELECT * FROM my_table, (SELECT * FROM your_table) AS q;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+
+
+--------------------------------------------------------------------
+--
+-- CTE
+--
+--------------------------------------------------------------------
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(my_table your_table #123)
+ */
+EXPLAIN WITH cte AS (SELECT * FROM my_table, (SELECT * FROM your_table) as q) SELECT * FROM cte;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+
+
+--------------------------------------------------------------------
+-- Test updating lower join row hint
+--------------------------------------------------------------------
+
+-- force join order to isolate lower join row hint
+set optimizer_join_order=query;
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 #123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
+
+\o results/pg_hint_plan.tmpout
+/*+
+ Rows(t1 t2 *123)
+ */
+EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3;
+\o
+\! sql/maskout.sh results/pg_hint_plan.tmpout
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 19/30: Fix query hang / fallback if involving CTE of replicated
Posted by ma...@apache.org.
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 cc4e8f3c2d45b7d38be7773a4529258469402788
Author: Jingyu Wang <wj...@vmware.com>
AuthorDate: Thu Jan 4 16:34:57 2024 -0800
Fix query hang / fallback if involving CTE of replicated
**Motivation**
This subject has been revisited on several occasions, as seen in the merged PR
13833, PR 14896, and closed PR 13728. However, sporadically, we still encounter
unexpected fallbacks. The hang in the CTE query is a result of a mismatch
between the number of CTE producers and consumers. This mismatch can occur when
there are either more producers than consumers or more consumers than producers,
leading to unconsumed producers or starved consumers that cause the query to
hang.
Historically, we have addressed query hangs by resorting to intentional
fallbacks. While ORCA falling back on the planner is not an ideal solution, it
is preferable to the query not completing. The intentional fallback was
implemented in PR 13833 by restricting the optimization of potential
alternatives that could result in a producer/consumer number mismatch.
In this PR, we reevaluate several test cases previously examined, aiming to find
a solution that avoids hanging or falling back.
**RCA**
The hang in a CTE query commonly arises when the CTE is of a replicated nature,
either tainted or strict. Such occurrences are less frequent if the CTE is hash
or randomly distributed. In the latter case, both producer and consumer
naturally execute on all segments. However, given a replicated input, producers
and consumers can choose to execute on either all segments and then deduplicate,
or, just on one segment. This flexibility results in potential mismatch between
the numbers of producers and consumers. This PR tackles the problem by sending
appropriate distribution requests on both the producer and consumer. Note that a
query hang is usually not a concern with universal input, despite the presence
of duplicate tuples. Universal producer guarantees universal data availability,
and the consumer execution operates based on necessity. This avoids any mismatch
between producer and consumer numbers.
**Implementation**
Historically, we initiate two sets of distribution requests from the physical
sequence operator to its two children. In the first request, we specify both
children to be `Non-Singleton`, aiming for the producer and consumer to execute
across all segments. In the second request, we request `Any` on the producer,
allowing it to retain its inherent distribution property. We align the
consumer's request accordingly. Specifically, if the producer is universal, the
consumer's locality can be `Any`. If the producer is replicated, we forego the
request, which occasionally results in fallbacks due to missing plan alternative
that satisfies all the required properties. In all the other scenarios, we
request `Non-Singleton`, mirroring the first request to spread out data
consumption. Note if the producer is a singleton, we always request the consumer
to be a matching singleton, either on the coordinator or one segment.
As mentioned earlier, query hang arises when dealing with replicated CTEs. In
response, we modify the first distribution request to be `Non-Singleton
Non-Replicated`. This request exclusively handles non-replicated input, where
both the producer and consumer naturally execute across all segments. For
replicated input, a hash filter is applied to enforce the producer into a random
distribution, allowing the consumer to still execute across all segments. In the
second request, we maintain the request for the producer to be `Any` to preserve
its original property. If the original property is replicated, we request the
consumer to be replicated as well. This avoids abandoning the optimization
context.
It's important to clarify that the terms "producer" and "consumer" in the above
requests pertain to the producer and consumer **sides** of the physical sequence
operator. The requests don't directly impact the actual producer, i.e., the
shared scan, or the actual consumer, i.e., consumption of the shared scan.
Therefore, the updated requests don't eliminate the possibility of a number
mismatch between the producer and consumer. However, it does significantly
minimize the likelihood. This is because the plan with the minimal cost is
unlikely to incorporate motions that alter the locality of the actual producer
or consumer from that is requested on their respective sides in an asymmetric
manner that would cause number mismatch.
Interestingly, the physical sequence operator receives a third distribution
request originating from the CTE consumer. This bottom-up request stands out as
an exception in ORCA's top-down optimization framework. The methodology is
documented in this [VLDB paper, section
7.1](https://www.vldb.org/pvldb/vol8/p1704-elhelw.pdf), with the goal of
minimizing unnecessary motions, hash redistributionin particular. It was
implemented by PR 11904. What occurs is the casting of the consumer's derived
property (post partial optimization) as a request back onto the producer.
Currently, this request does not specifically address a replicated CTE input.
However, based on the analysis presented earlier, it becomes evident that this
bottom-up request should not override the producer's duplicate sensitivity.
Specifically, if the CTE starts as replicated but is then converted to random by
the hash filter, we should not allow a duplicate-insensitive request to be sent
to the producer, as it may lead to duplicate hazards and query hang. In this PR,
we assess the derived duplicate sensitivity of the producer and consumer,
preventing mismatching requests.
**Tests**
This PR reverts commit b350160, which solved the query hang by intentional fall
back, while retaining the tests introduced by that commit. Now we no longer
encounter query hang or fallback.
The MDP test, NLJ-Rewindability-CTAS.mdp, reveals a plan diff in which the
duplicate sensitive random motion is now pushed down the physical filter. This
is a conservative maneuver used to handle the scenario where a CTE is inlined by
a filter. In this context, one CTE is referenced within another CTE, and the
results of the first CTE contribute to the filtering criteria in the second CTE.
While the physical filter is unaware of whether it references an inlined CTE,
the above restriction on replicated distribution eliminates the possibility of
costly query hangs. Since duplicate sensitive random motion is a non physical
motion, we don't expect the performance impact to be significant.
---
.../data/dxl/minidump/NLJ-Rewindability-CTAS.mdp | 443 +++++++++++----------
.../dxl/minidump/TaintedReplicatedTablesCTE.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-2.mdp | 2 +-
.../libgpopt/include/gpopt/base/CReqdPropPlan.h | 5 +-
.../libgpopt/src/base/COptimizationContext.cpp | 3 +-
.../gporca/libgpopt/src/base/CReqdPropPlan.cpp | 67 +++-
.../libgpopt/src/operators/CPhysicalFilter.cpp | 2 +-
.../libgpopt/src/operators/CPhysicalMotion.cpp | 6 +-
.../libgpopt/src/operators/CPhysicalSequence.cpp | 95 +++--
src/test/regress/expected/bfv_cte.out | 165 ++++++++
src/test/regress/expected/bfv_cte_optimizer.out | 178 +++++++++
src/test/regress/sql/bfv_cte.sql | 83 ++++
12 files changed, 779 insertions(+), 272 deletions(-)
diff --git a/src/backend/gporca/data/dxl/minidump/NLJ-Rewindability-CTAS.mdp b/src/backend/gporca/data/dxl/minidump/NLJ-Rewindability-CTAS.mdp
index 7b58c03424..65c0b77d16 100644
--- a/src/backend/gporca/data/dxl/minidump/NLJ-Rewindability-CTAS.mdp
+++ b/src/backend/gporca/data/dxl/minidump/NLJ-Rewindability-CTAS.mdp
@@ -443,10 +443,10 @@
</dxl:LogicalCTEAnchor>
</dxl:LogicalCTAS>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="88">
+ <dxl:Plan Id="0" SpaceSize="212">
<dxl:PhysicalCTAS Name="fake ctas rel" IsTemporary="true" StorageType="Heap" DistributionPolicy="Random" InsertColumns="20" VarTypeModList="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324033.549169" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.549187" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:DistrOpclasses/>
<dxl:Columns>
@@ -458,76 +458,37 @@
<dxl:Ident ColId="20" ColName="coalesce" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
- <dxl:Result>
+ <dxl:RandomMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324033.533544" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.533562" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="20" Alias="coalesce">
<dxl:Ident ColId="20" ColName="coalesce" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="38" Alias="ColRef_0038">
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:Ident ColId="38" ColName="ColRef_0038" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
- <dxl:OneTimeFilter/>
- <dxl:Sequence>
+ <dxl:SortingColumnList/>
+ <dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324033.533540" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.533550" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="20" Alias="coalesce">
<dxl:Ident ColId="20" ColName="coalesce" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
+ <dxl:ProjElem ColId="38" Alias="ColRef_0038">
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:ProjElem>
</dxl:ProjList>
- <dxl:CTEProducer CTEId="0" Columns="1,2">
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000118" Rows="1.000000" Width="1"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="1" Alias="val">
- <dxl:Ident ColId="1" ColName="val" TypeMdid="0.25.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="2" Alias="wt">
- <dxl:Ident ColId="2" ColName="wt" TypeMdid="0.701.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Result>
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000117" Rows="1.000000" Width="16"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="1" Alias="val">
- <dxl:FuncExpr FuncId="0.2331.1.0" FuncRetSet="true" TypeMdid="0.25.1.0" FuncVariadic="false">
- <dxl:ConstValue TypeMdid="0.1009.1.0" Value="AAAAqAEAAAAAAAAAGQAAABEAAAABAAAAAAAACXJlcnVtAAAAAAAACXZlbGl0 AAAAAAAABXAAAAAAAAAFcQAAAAAAAAVyAAAAAAAABXMAAAAAAAAFdAAAAAAA AAZ1bQAAAAAABXYAAAAAAAAFcQAAAAAAAAV3AAAAAAAABWUAAAAAAAAFcgAA AAAAAAV0AAAAAAAABXkAAAAAAAAFdQAAAAAAAAVpAAAA"/>
- </dxl:FuncExpr>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="2" Alias="wt">
- <dxl:FuncExpr FuncId="0.2331.1.0" FuncRetSet="true" TypeMdid="0.701.1.0" FuncVariadic="false">
- <dxl:ConstValue TypeMdid="0.1022.1.0" Value="AAAAoAEAAAAAAAAAvQIAABEAAAABAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAA APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw=="/>
- </dxl:FuncExpr>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:OneTimeFilter/>
- <dxl:Result>
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000001" Rows="1.000000" Width="1"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="0" Alias="">
- <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:OneTimeFilter/>
- </dxl:Result>
- </dxl:Result>
- </dxl:CTEProducer>
+ <dxl:Filter/>
+ <dxl:OneTimeFilter/>
<dxl:RandomMotion InputSegments="0" OutputSegments="0,1,2" DuplicateSensitive="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324033.533420" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.533546" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="20" Alias="coalesce">
@@ -536,108 +497,139 @@
</dxl:ProjList>
<dxl:Filter/>
<dxl:SortingColumnList/>
- <dxl:Result>
+ <dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324033.533399" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.533525" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="20" Alias="coalesce">
- <dxl:Coalesce TypeMdid="0.701.1.0">
- <dxl:OpExpr OperatorName="/" OperatorMdid="0.593.1.0" OperatorType="0.701.1.0">
- <dxl:Ident ColId="18" ColName="sum" TypeMdid="0.701.1.0"/>
- <dxl:NullIf OperatorMdid="0.670.1.0" TypeMdid="0.701.1.0">
- <dxl:Ident ColId="19" ColName="sum" TypeMdid="0.701.1.0"/>
- <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAAA=" DoubleValue="0.000000"/>
- </dxl:NullIf>
- </dxl:OpExpr>
- <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAAA=" DoubleValue="0.000000"/>
- </dxl:Coalesce>
+ <dxl:Ident ColId="20" ColName="coalesce" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
- <dxl:Filter/>
- <dxl:OneTimeFilter/>
- <dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
+ <dxl:CTEProducer CTEId="0" Columns="1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324033.533391" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="0.000118" Rows="1.000000" Width="1"/>
</dxl:Properties>
- <dxl:GroupingColumns/>
<dxl:ProjList>
- <dxl:ProjElem ColId="18" Alias="sum">
- <dxl:AggFunc AggMdid="0.2111.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
- <dxl:ValuesList ParamType="aggargs">
- <dxl:OpExpr OperatorName="*" OperatorMdid="0.594.1.0" OperatorType="0.701.1.0">
- <dxl:If TypeMdid="0.701.1.0">
- <dxl:Not>
- <dxl:IsDistinctFrom OperatorMdid="0.98.1.0">
- <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
- <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
- </dxl:IsDistinctFrom>
- </dxl:Not>
- <dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
- <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAAA=" DoubleValue="0.000000"/>
- </dxl:If>
- <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAEA=" DoubleValue="2.000000"/>
- </dxl:OpExpr>
- </dxl:ValuesList>
- <dxl:ValuesList ParamType="aggdirectargs"/>
- <dxl:ValuesList ParamType="aggorder"/>
- <dxl:ValuesList ParamType="aggdistinct"/>
- </dxl:AggFunc>
+ <dxl:ProjElem ColId="1" Alias="val">
+ <dxl:Ident ColId="1" ColName="val" TypeMdid="0.25.1.0"/>
</dxl:ProjElem>
- <dxl:ProjElem ColId="19" Alias="sum">
- <dxl:AggFunc AggMdid="0.2111.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
- <dxl:ValuesList ParamType="aggargs">
- <dxl:OpExpr OperatorName="*" OperatorMdid="0.594.1.0" OperatorType="0.701.1.0">
- <dxl:Cast TypeMdid="0.701.1.0" FuncId="0.316.1.0">
- <dxl:If TypeMdid="0.23.1.0">
- <dxl:Not>
- <dxl:IsDistinctFrom OperatorMdid="0.98.1.0">
- <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
- <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
- </dxl:IsDistinctFrom>
- </dxl:Not>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
- </dxl:If>
- </dxl:Cast>
- <dxl:Coalesce TypeMdid="0.701.1.0">
- <dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
- <dxl:Ident ColId="14" ColName="w" TypeMdid="0.701.1.0"/>
- </dxl:Coalesce>
- </dxl:OpExpr>
- </dxl:ValuesList>
- <dxl:ValuesList ParamType="aggdirectargs"/>
- <dxl:ValuesList ParamType="aggorder"/>
- <dxl:ValuesList ParamType="aggdistinct"/>
- </dxl:AggFunc>
+ <dxl:ProjElem ColId="2" Alias="wt">
+ <dxl:Ident ColId="2" ColName="wt" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
- <dxl:Filter/>
- <dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
+ <dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324033.533305" Rows="3.000000" Width="32"/>
+ <dxl:Cost StartupCost="0" TotalCost="0.000117" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
- <dxl:ProjElem ColId="9" Alias="val">
- <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
+ <dxl:ProjElem ColId="1" Alias="val">
+ <dxl:FuncExpr FuncId="0.2331.1.0" FuncRetSet="true" TypeMdid="0.25.1.0" FuncVariadic="false">
+ <dxl:ConstValue TypeMdid="0.1009.1.0" Value="AAAAqAEAAAAAAAAAGQAAABEAAAABAAAAAAAACXJlcnVtAAAAAAAACXZlbGl0
AAAAAAAABXAAAAAAAAAFcQAAAAAAAAVyAAAAAAAABXMAAAAAAAAFdAAAAAAA
AAZ1bQAAAAAABXYAAAAAAAAFcQAAAAAAAAV3AAAAAAAABWUAAAAAAAAFcgAA
AAAAAAV0AAAAAAAABXkAAAAAAAAFdQAAAAAAAAVpAAAA"/>
+ </dxl:FuncExpr>
</dxl:ProjElem>
- <dxl:ProjElem ColId="10" Alias="wt">
- <dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
+ <dxl:ProjElem ColId="2" Alias="wt">
+ <dxl:FuncExpr FuncId="0.2331.1.0" FuncRetSet="true" TypeMdid="0.701.1.0" FuncVariadic="false">
+ <dxl:ConstValue TypeMdid="0.1022.1.0" Value="AAAAoAEAAAAAAAAAvQIAABEAAAABAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAA
APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw=="/>
+ </dxl:FuncExpr>
</dxl:ProjElem>
- <dxl:ProjElem ColId="12" Alias="val">
- <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:OneTimeFilter/>
+ <dxl:Result>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="0.000001" Rows="1.000000" Width="1"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="">
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:OneTimeFilter/>
+ </dxl:Result>
+ </dxl:Result>
+ </dxl:CTEProducer>
+ <dxl:Result>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.533399" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="20" Alias="coalesce">
+ <dxl:Coalesce TypeMdid="0.701.1.0">
+ <dxl:OpExpr OperatorName="/" OperatorMdid="0.593.1.0" OperatorType="0.701.1.0">
+ <dxl:Ident ColId="18" ColName="sum" TypeMdid="0.701.1.0"/>
+ <dxl:NullIf OperatorMdid="0.670.1.0" TypeMdid="0.701.1.0">
+ <dxl:Ident ColId="19" ColName="sum" TypeMdid="0.701.1.0"/>
+ <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAAA=" DoubleValue="0.000000"/>
+ </dxl:NullIf>
+ </dxl:OpExpr>
+ <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAAA=" DoubleValue="0.000000"/>
+ </dxl:Coalesce>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:OneTimeFilter/>
+ <dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.533391" Rows="1.000000" Width="16"/>
+ </dxl:Properties>
+ <dxl:GroupingColumns/>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="18" Alias="sum">
+ <dxl:AggFunc AggMdid="0.2111.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:ValuesList ParamType="aggargs">
+ <dxl:OpExpr OperatorName="*" OperatorMdid="0.594.1.0" OperatorType="0.701.1.0">
+ <dxl:If TypeMdid="0.701.1.0">
+ <dxl:Not>
+ <dxl:IsDistinctFrom OperatorMdid="0.98.1.0">
+ <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
+ <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
+ </dxl:IsDistinctFrom>
+ </dxl:Not>
+ <dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
+ <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAAA=" DoubleValue="0.000000"/>
+ </dxl:If>
+ <dxl:ConstValue TypeMdid="0.701.1.0" Value="AAAAAAAAAEA=" DoubleValue="2.000000"/>
+ </dxl:OpExpr>
+ </dxl:ValuesList>
+ <dxl:ValuesList ParamType="aggdirectargs"/>
+ <dxl:ValuesList ParamType="aggorder"/>
+ <dxl:ValuesList ParamType="aggdistinct"/>
+ </dxl:AggFunc>
</dxl:ProjElem>
- <dxl:ProjElem ColId="14" Alias="w">
- <dxl:Ident ColId="14" ColName="w" TypeMdid="0.701.1.0"/>
+ <dxl:ProjElem ColId="19" Alias="sum">
+ <dxl:AggFunc AggMdid="0.2111.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:ValuesList ParamType="aggargs">
+ <dxl:OpExpr OperatorName="*" OperatorMdid="0.594.1.0" OperatorType="0.701.1.0">
+ <dxl:Cast TypeMdid="0.701.1.0" FuncId="0.316.1.0">
+ <dxl:If TypeMdid="0.23.1.0">
+ <dxl:Not>
+ <dxl:IsDistinctFrom OperatorMdid="0.98.1.0">
+ <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
+ <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
+ </dxl:IsDistinctFrom>
+ </dxl:Not>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:If>
+ </dxl:Cast>
+ <dxl:Coalesce TypeMdid="0.701.1.0">
+ <dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
+ <dxl:Ident ColId="14" ColName="w" TypeMdid="0.701.1.0"/>
+ </dxl:Coalesce>
+ </dxl:OpExpr>
+ </dxl:ValuesList>
+ <dxl:ValuesList ParamType="aggdirectargs"/>
+ <dxl:ValuesList ParamType="aggorder"/>
+ <dxl:ValuesList ParamType="aggdistinct"/>
+ </dxl:AggFunc>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
- <dxl:JoinFilter>
- <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
- </dxl:JoinFilter>
- <dxl:MergeJoin JoinType="Full" UniqueOuter="false">
+ <dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.001032" Rows="3.000000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324033.533305" Rows="3.000000" Width="32"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="val">
@@ -649,18 +641,17 @@
<dxl:ProjElem ColId="12" Alias="val">
<dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
</dxl:ProjElem>
+ <dxl:ProjElem ColId="14" Alias="w">
+ <dxl:Ident ColId="14" ColName="w" TypeMdid="0.701.1.0"/>
+ </dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
- <dxl:JoinFilter/>
- <dxl:MergeCondList>
- <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.98.1.0">
- <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
- <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
- </dxl:Comparison>
- </dxl:MergeCondList>
- <dxl:Sort SortDiscardDuplicates="false">
+ <dxl:JoinFilter>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:JoinFilter>
+ <dxl:MergeJoin JoinType="Full" UniqueOuter="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000220" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001032" Rows="3.000000" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="val">
@@ -669,16 +660,21 @@
<dxl:ProjElem ColId="10" Alias="wt">
<dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
+ <dxl:ProjElem ColId="12" Alias="val">
+ <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
+ </dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
- <dxl:SortingColumnList>
- <dxl:SortingColumn ColId="9" SortOperatorMdid="0.664.1.0" SortOperatorName="<" SortNullsFirst="false"/>
- </dxl:SortingColumnList>
- <dxl:LimitCount/>
- <dxl:LimitOffset/>
- <dxl:CTEConsumer CTEId="0" Columns="9,10">
+ <dxl:JoinFilter/>
+ <dxl:MergeCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.98.1.0">
+ <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
+ <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
+ </dxl:Comparison>
+ </dxl:MergeCondList>
+ <dxl:Sort SortDiscardDuplicates="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000039" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000220" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="val">
@@ -688,100 +684,119 @@
<dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
- </dxl:CTEConsumer>
- </dxl:Sort>
- <dxl:Sort SortDiscardDuplicates="false">
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000200" Rows="1.000000" Width="8"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="12" Alias="val">
- <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:SortingColumnList>
- <dxl:SortingColumn ColId="12" SortOperatorMdid="0.664.1.0" SortOperatorName="<" SortNullsFirst="false"/>
- </dxl:SortingColumnList>
- <dxl:LimitCount/>
- <dxl:LimitOffset/>
- <dxl:Result>
+ <dxl:Filter/>
+ <dxl:SortingColumnList>
+ <dxl:SortingColumn ColId="9" SortOperatorMdid="0.664.1.0" SortOperatorName="<" SortNullsFirst="false"/>
+ </dxl:SortingColumnList>
+ <dxl:LimitCount/>
+ <dxl:LimitOffset/>
+ <dxl:CTEConsumer CTEId="0" Columns="9,10">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000039" Rows="1.000000" Width="16"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="9" Alias="val">
+ <dxl:Ident ColId="9" ColName="val" TypeMdid="0.25.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="10" Alias="wt">
+ <dxl:Ident ColId="10" ColName="wt" TypeMdid="0.701.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ </dxl:CTEConsumer>
+ </dxl:Sort>
+ <dxl:Sort SortDiscardDuplicates="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000109" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="0.000200" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="12" Alias="val">
- <dxl:FuncExpr FuncId="0.2331.1.0" FuncRetSet="true" TypeMdid="0.25.1.0" FuncVariadic="false">
- <dxl:ConstValue TypeMdid="0.1009.1.0" Value="AAAAZAEAAAAAAAAAGQAAAAkAAAABAAAAAAAACG9kaW8AAAAKYmVhdGFlAAAA AAAFYQAAAAAAAAViAAAAAAAABWMAAAAAAAAFZAAAAAAAAAVlAAAAAAAABWYA AAAAAAAFZwAAAA=="/>
- </dxl:FuncExpr>
+ <dxl:Ident ColId="12" ColName="val" TypeMdid="0.25.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
- <dxl:OneTimeFilter/>
+ <dxl:SortingColumnList>
+ <dxl:SortingColumn ColId="12" SortOperatorMdid="0.664.1.0" SortOperatorName="<" SortNullsFirst="false"/>
+ </dxl:SortingColumnList>
+ <dxl:LimitCount/>
+ <dxl:LimitOffset/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000001" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="0.000109" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
- <dxl:ProjElem ColId="13" Alias="">
- <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ <dxl:ProjElem ColId="12" Alias="val">
+ <dxl:FuncExpr FuncId="0.2331.1.0" FuncRetSet="true" TypeMdid="0.25.1.0" FuncVariadic="false">
+ <dxl:ConstValue TypeMdid="0.1009.1.0" Value="AAAAZAEAAAAAAAAAGQAAAAkAAAABAAAAAAAACG9kaW8AAAAKYmVhdGFlAAAA
AAAFYQAAAAAAAAViAAAAAAAABWMAAAAAAAAFZAAAAAAAAAVlAAAAAAAABWYA
AAAAAAAFZwAAAA=="/>
+ </dxl:FuncExpr>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
<dxl:OneTimeFilter/>
+ <dxl:Result>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="0.000001" Rows="1.000000" Width="1"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="13" Alias="">
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:OneTimeFilter/>
+ </dxl:Result>
</dxl:Result>
- </dxl:Result>
- </dxl:Sort>
- </dxl:MergeJoin>
- <dxl:Materialize Eager="false">
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000028" Rows="1.000000" Width="8"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="14" Alias="w">
- <dxl:Ident ColId="14" ColName="w" TypeMdid="0.701.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
+ </dxl:Sort>
+ </dxl:MergeJoin>
+ <dxl:Materialize Eager="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000020" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000028" Rows="1.000000" Width="8"/>
</dxl:Properties>
- <dxl:GroupingColumns/>
<dxl:ProjList>
<dxl:ProjElem ColId="14" Alias="w">
- <dxl:AggFunc AggMdid="0.2105.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="701">
- <dxl:ValuesList ParamType="aggargs">
- <dxl:Ident ColId="16" ColName="wt" TypeMdid="0.701.1.0"/>
- </dxl:ValuesList>
- <dxl:ValuesList ParamType="aggdirectargs"/>
- <dxl:ValuesList ParamType="aggorder"/>
- <dxl:ValuesList ParamType="aggdistinct"/>
- </dxl:AggFunc>
+ <dxl:Ident ColId="14" ColName="w" TypeMdid="0.701.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
- <dxl:CTEConsumer CTEId="0" Columns="15,16">
+ <dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000019" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000020" Rows="1.000000" Width="8"/>
</dxl:Properties>
+ <dxl:GroupingColumns/>
<dxl:ProjList>
- <dxl:ProjElem ColId="15" Alias="val">
- <dxl:Ident ColId="15" ColName="val" TypeMdid="0.25.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="16" Alias="wt">
- <dxl:Ident ColId="16" ColName="wt" TypeMdid="0.701.1.0"/>
+ <dxl:ProjElem ColId="14" Alias="w">
+ <dxl:AggFunc AggMdid="0.2105.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="701">
+ <dxl:ValuesList ParamType="aggargs">
+ <dxl:Ident ColId="16" ColName="wt" TypeMdid="0.701.1.0"/>
+ </dxl:ValuesList>
+ <dxl:ValuesList ParamType="aggdirectargs"/>
+ <dxl:ValuesList ParamType="aggorder"/>
+ <dxl:ValuesList ParamType="aggdistinct"/>
+ </dxl:AggFunc>
</dxl:ProjElem>
</dxl:ProjList>
- </dxl:CTEConsumer>
- </dxl:Aggregate>
- </dxl:Materialize>
- </dxl:NestedLoopJoin>
- </dxl:Aggregate>
- </dxl:Result>
+ <dxl:Filter/>
+ <dxl:CTEConsumer CTEId="0" Columns="15,16">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000019" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="15" Alias="val">
+ <dxl:Ident ColId="15" ColName="val" TypeMdid="0.25.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="16" Alias="wt">
+ <dxl:Ident ColId="16" ColName="wt" TypeMdid="0.701.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ </dxl:CTEConsumer>
+ </dxl:Aggregate>
+ </dxl:Materialize>
+ </dxl:NestedLoopJoin>
+ </dxl:Aggregate>
+ </dxl:Result>
+ </dxl:Sequence>
</dxl:RandomMotion>
- </dxl:Sequence>
- </dxl:Result>
+ </dxl:Result>
+ </dxl:RandomMotion>
</dxl:PhysicalCTAS>
</dxl:Plan>
</dxl:Thread>
diff --git a/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp b/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp
index e7f605dd4d..55d07b2a11 100644
--- a/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp
+++ b/src/backend/gporca/data/dxl/minidump/TaintedReplicatedTablesCTE.mdp
@@ -350,7 +350,7 @@
</dxl:LogicalCTEAnchor>
</dxl:LogicalCTEAnchor>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="70">
+ <dxl:Plan Id="0" SpaceSize="82">
<dxl:Sequence>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="1293.001221" Rows="2.000000" Width="24"/>
diff --git a/src/backend/gporca/data/dxl/minidump/cte-duplicate-columns-2.mdp b/src/backend/gporca/data/dxl/minidump/cte-duplicate-columns-2.mdp
index e3bf7fb602..6f375b8e47 100644
--- a/src/backend/gporca/data/dxl/minidump/cte-duplicate-columns-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/cte-duplicate-columns-2.mdp
@@ -235,7 +235,7 @@ where x1.b = x2.b;
</dxl:LogicalJoin>
</dxl:LogicalCTEAnchor>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="20">
+ <dxl:Plan Id="0" SpaceSize="28">
<dxl:Sequence>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="1293.001043" Rows="1.000000" Width="24"/>
diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CReqdPropPlan.h b/src/backend/gporca/libgpopt/include/gpopt/base/CReqdPropPlan.h
index 2fea31f6cd..f9e683ca61 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/base/CReqdPropPlan.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/base/CReqdPropPlan.h
@@ -185,8 +185,9 @@ public:
// map input required and derived plan properties into new required plan properties
static CReqdPropPlan *PrppRemapForCTE(CMemoryPool *mp,
- CReqdPropPlan *prppInput,
- CDrvdPropPlan *pdpplanInput,
+ CReqdPropPlan *prppProducer,
+ CDrvdPropPlan *pdpplanProducer,
+ CDrvdPropPlan *pdpplanConsumer,
UlongToColRefMap *colref_mapping);
// print function
diff --git a/src/backend/gporca/libgpopt/src/base/COptimizationContext.cpp b/src/backend/gporca/libgpopt/src/base/COptimizationContext.cpp
index 603a834584..954dd96a8c 100644
--- a/src/backend/gporca/libgpopt/src/base/COptimizationContext.cpp
+++ b/src/backend/gporca/libgpopt/src/base/COptimizationContext.cpp
@@ -417,7 +417,8 @@ COptimizationContext::PrppCTEProducer(CMemoryPool *mp,
mp, popProducer->UlCTEId(), pcrsInnerOutput,
popProducer->Pdrgpcr());
CReqdPropPlan *prppProducer = CReqdPropPlan::PrppRemapForCTE(
- mp, pocProducer->Prpp(), pccConsumer->Pdpplan(), colref_mapping);
+ mp, pocProducer->Prpp(), pccProducer->Pdpplan(), pccConsumer->Pdpplan(),
+ colref_mapping);
colref_mapping->Release();
if (prppProducer->Equals(pocProducer->Prpp()))
diff --git a/src/backend/gporca/libgpopt/src/base/CReqdPropPlan.cpp b/src/backend/gporca/libgpopt/src/base/CReqdPropPlan.cpp
index df19aecf59..f0cfa78c6a 100644
--- a/src/backend/gporca/libgpopt/src/base/CReqdPropPlan.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CReqdPropPlan.cpp
@@ -526,20 +526,29 @@ CReqdPropPlan::FEqualForCostBounding(const CReqdPropPlan *prppFst,
//
//---------------------------------------------------------------------------
CReqdPropPlan *
-CReqdPropPlan::PrppRemapForCTE(CMemoryPool *mp, CReqdPropPlan *prppInput,
- CDrvdPropPlan *pdpplanInput,
+CReqdPropPlan::PrppRemapForCTE(CMemoryPool *mp, CReqdPropPlan *prppProducer,
+ CDrvdPropPlan *pdpplanProducer,
+ CDrvdPropPlan *pdpplanConsumer,
UlongToColRefMap *colref_mapping)
{
GPOS_ASSERT(nullptr != colref_mapping);
- GPOS_ASSERT(nullptr != prppInput);
- GPOS_ASSERT(nullptr != pdpplanInput);
+ GPOS_ASSERT(nullptr != prppProducer);
+ GPOS_ASSERT(nullptr != pdpplanProducer);
+ GPOS_ASSERT(nullptr != pdpplanConsumer);
// Remap derived sort order to a required sort order.
- COrderSpec *pos = pdpplanInput->Pos()->PosCopyWithRemappedColumns(
+ COrderSpec *pos = pdpplanConsumer->Pos()->PosCopyWithRemappedColumns(
mp, colref_mapping, false /*must_exist*/);
- CEnfdOrder *peo = GPOS_NEW(mp) CEnfdOrder(pos, prppInput->Peo()->Eom());
-
- // Remap derived distribution only if it can be used as required distribution.
+ CEnfdOrder *peo = GPOS_NEW(mp) CEnfdOrder(pos, prppProducer->Peo()->Eom());
+
+ // Remap derived distribution only if:
+ // (1) it can be used as required distribution, and
+ // (2) either the producer's derived distribution spec isn't duplicate
+ // sensitive, or, the consumer's derived distribution spec is duplicate
+ // sensitive. This is to ensure we don't accidentally raise a duplicate
+ // insensitive request when it's supposed to be duplicate sensitive,
+ // such as when the input is replicated.
+ //
// Also, fix distribution specs with equivalent columns, since those may come
// from different consumers and NOT be equivalent in the producer.
// For example:
@@ -548,35 +557,49 @@ CReqdPropPlan::PrppRemapForCTE(CMemoryPool *mp, CReqdPropPlan *prppInput,
// On the query side, columns x1.a and x2.b are equivalent, but we should NOT
// treat columns a and b of the producer as equivalent.
- CDistributionSpec *pdsDerived = pdpplanInput->Pds();
+ CDistributionSpec *pdsDerivedProducer = pdpplanProducer->Pds();
+ CDistributionSpec *pdsDerivedConsumer = pdpplanConsumer->Pds();
+
+ BOOL producer_duplicate_sensitive =
+ CDistributionSpec::EdtRandom == pdsDerivedProducer->Edt()
+ ? CDistributionSpecRandom::PdsConvert(pdsDerivedProducer)
+ ->IsDuplicateSensitive()
+ : false;
+ BOOL consumer_duplicate_sensitive =
+ CDistributionSpec::EdtRandom == pdsDerivedConsumer->Edt()
+ ? CDistributionSpecRandom::PdsConvert(pdsDerivedConsumer)
+ ->IsDuplicateSensitive()
+ : false;
CEnfdDistribution *ped = nullptr;
- if (pdsDerived->FRequirable())
+ if (pdsDerivedConsumer->FRequirable() &&
+ (!producer_duplicate_sensitive || consumer_duplicate_sensitive))
{
- CDistributionSpec *pdsNoEquiv = pdsDerived->StripEquivColumns(mp);
+ CDistributionSpec *pdsNoEquiv =
+ pdsDerivedConsumer->StripEquivColumns(mp);
CDistributionSpec *pds = pdsNoEquiv->PdsCopyWithRemappedColumns(
mp, colref_mapping, false /*must_exist*/);
- ped = GPOS_NEW(mp) CEnfdDistribution(pds, prppInput->Ped()->Edm());
+ ped = GPOS_NEW(mp) CEnfdDistribution(pds, prppProducer->Ped()->Edm());
pdsNoEquiv->Release();
}
else
{
- prppInput->Ped()->AddRef();
- ped = prppInput->Ped();
+ prppProducer->Ped()->AddRef();
+ ped = prppProducer->Ped();
}
// other properties are copied from input
- prppInput->PcrsRequired()->AddRef();
- CColRefSet *pcrsRequired = prppInput->PcrsRequired();
+ prppProducer->PcrsRequired()->AddRef();
+ CColRefSet *pcrsRequired = prppProducer->PcrsRequired();
- prppInput->Per()->AddRef();
- CEnfdRewindability *per = prppInput->Per();
+ prppProducer->Per()->AddRef();
+ CEnfdRewindability *per = prppProducer->Per();
- prppInput->Pepp()->AddRef();
- CEnfdPartitionPropagation *pepp = prppInput->Pepp();
+ prppProducer->Pepp()->AddRef();
+ CEnfdPartitionPropagation *pepp = prppProducer->Pepp();
- prppInput->Pcter()->AddRef();
- CCTEReq *pcter = prppInput->Pcter();
+ prppProducer->Pcter()->AddRef();
+ CCTEReq *pcter = prppProducer->Pcter();
return GPOS_NEW(mp) CReqdPropPlan(pcrsRequired, peo, ped, per, pepp, pcter);
}
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalFilter.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalFilter.cpp
index 4865236e0e..58eae30313 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalFilter.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalFilter.cpp
@@ -129,7 +129,7 @@ CPhysicalFilter::PdsRequired(CMemoryPool *mp, CExpressionHandle &exprhdl,
!CDistributionSpecNonSingleton::PdsConvert(pdsRequired)
->FAllowReplicated())
{
- // this situation arises when we have Filter instead inlined CTE,
+ // this situation arises when we have Filter inside inlined CTE,
// in this case, we need to push down non-singleton with not allowed replicated through Filter
pdsRequired->AddRef();
return pdsRequired;
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalMotion.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalMotion.cpp
index 602ae36115..8aab252965 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalMotion.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalMotion.cpp
@@ -83,6 +83,7 @@ CPhysicalMotion::PdsRequired(CMemoryPool *mp,
{
GPOS_ASSERT(0 == child_index);
+ // scenario 1:
// if the required distribution is EdtStrictRandom, it indicates
// that this motion operator was enforced into the same
// group as that of CPhysicalComputeScalar just below CPhysicalDML(Insert)
@@ -131,10 +132,11 @@ CPhysicalMotion::PdsRequired(CMemoryPool *mp,
// +--CScalarProjectList
// +--CScalarProjectElement "ColRef_0008"
// +--CScalarConst (1)
+ // scenario 2:
+ // CTE consumer's derived property is EdtStrictRandom. It's
+ // sent back to the physical sequence.
if (CDistributionSpec::EdtStrictRandom == pdsRequired->Edt())
{
- GPOS_ASSERT(COperator::EopPhysicalMotionRandom == Eopid());
- GPOS_ASSERT(CDistributionSpec::EdtStrictRandom == Pds()->Edt());
return GPOS_NEW(mp) CDistributionSpecRandom();
}
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp
index 1657bcf480..5dd12b8711 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalSequence.cpp
@@ -16,6 +16,7 @@
#include "gpopt/base/CCTEReq.h"
#include "gpopt/base/CDistributionSpecAny.h"
#include "gpopt/base/CDistributionSpecNonSingleton.h"
+#include "gpopt/base/CDistributionSpecReplicated.h"
#include "gpopt/base/CDistributionSpecSingleton.h"
#include "gpopt/base/COptCtxt.h"
#include "gpopt/operators/CExpressionHandle.h"
@@ -35,15 +36,18 @@ CPhysicalSequence::CPhysicalSequence(CMemoryPool *mp)
{
// Sequence generates two distribution requests for its children:
// (1) If incoming distribution from above is Singleton, pass it through
- // to all children, otherwise request Non-Singleton on all children
+ // to all children, otherwise request Non-Singleton (Non-Replicated)
+ // on all children
//
// (2) Optimize first child with Any distribution requirement, and compute
// distribution request on other children based on derived distribution
// of first child:
// * If distribution of first child is a Singleton, request Singleton
- // on all children
- // * If distribution of first child is a Non-Singleton, request
- // Non-Singleton on all children
+ // on the second child
+ // * If distribution of first child is Replicated, request Replicated
+ // on the second child
+ // * Otherwise, request Non-Singleton (Non-Replicated) on the second
+ // child
SetDistrRequests(2);
@@ -188,65 +192,100 @@ CPhysicalSequence::PdsRequired(CMemoryPool *mp,
GPOS_ASSERT(child_index < exprhdl.Arity());
GPOS_ASSERT(ulOptReq < UlDistrRequests());
+ // The following distribution requests ensure matching number of
+ // producers and consumers. Any mismatch, either more producers
+ // than consumers, or more consumers than producers, will cause
+ // the query to hang
+
+ // 1st request
if (0 == ulOptReq)
{
- if (CDistributionSpec::EdtSingleton == pdsRequired->Edt() ||
- CDistributionSpec::EdtStrictSingleton == pdsRequired->Edt())
+ // If the incoming request is a singleton, request singleton
+ // on ALL the children. No need to check strict singleton,
+ // cause strict singleton is a derived only spec.
+ if (CDistributionSpec::EdtSingleton == pdsRequired->Edt())
{
- // incoming request is a singleton, request singleton on all children
CDistributionSpecSingleton *pdss =
CDistributionSpecSingleton::PdssConvert(pdsRequired);
return GPOS_NEW(mp) CDistributionSpecSingleton(pdss->Est());
}
- // incoming request is a non-singleton, request non-singleton on all children
- return GPOS_NEW(mp) CDistributionSpecNonSingleton();
+ // Otherwise, request non-singleton (excluding replicated)
+ // on ALL the children.
+
+ // If the input is hashed or randomly distributed, no motion
+ // will be enforced. Both the producer and the consumer are
+ // executed on all the segments. That is, no mismatch between
+ // the number of producers and consumers.
+
+ // If the input is replicated, a hash filter will be applied
+ // to the input. The hash filter resolves the duplicate hazard,
+ // and now the producer is randomly distributed. The consumer
+ // will continue to be executed on all the segments. Again, no
+ // mismatch between the number of producers and consumers.
+ return GPOS_NEW(mp)
+ CDistributionSpecNonSingleton(false /* fAllowReplicated */);
}
+
+ // 2nd request
GPOS_ASSERT(1 == ulOptReq);
if (0 == child_index)
{
- // no distribution requirement on first child
+ // Request Any on the first child
return GPOS_NEW(mp) CDistributionSpecAny(this->Eopid());
}
- // get derived plan properties of first child
+ // Get derived plan properties of first child
CDrvdPropPlan *pdpplan = CDrvdPropPlan::Pdpplan((*pdrgpdpCtxt)[0]);
+ // Because we request Any on the first child, no motion could
+ // have been enforced. The derived spec of the first child is
+ // what it delivers in the first place.
CDistributionSpec *pds = pdpplan->Pds();
+ // If the first child is singleton, request singleton on the
+ // second child. This request is identical to the 1st request
+ // (ulOptReq = 0), where we request singleton on ALL the
+ // children, and would eventually be deduplicated.
if (pds->FSingletonOrStrictSingleton())
{
- // first child is singleton, request singleton distribution on second child
CDistributionSpecSingleton *pdss =
CDistributionSpecSingleton::PdssConvert(pds);
return GPOS_NEW(mp) CDistributionSpecSingleton(pdss->Est());
}
+ // If the first child is universal, request Any on the second
+ // child. This is because if the producer is universally
+ // available, no matter what the locality of the consumer
+ // is, the consumer would be able to access the shared data
if (CDistributionSpec::EdtUniversal == pds->Edt())
{
- // first child is universal, impose no requirements on second child
return GPOS_NEW(mp) CDistributionSpecAny(this->Eopid());
}
- // If required distribution is singleton on master (sequence is top operation) or
- // non-singleton with not allowed replicated (there is another top-sequence under this sequence)
- // then we should not allow replicated distribution, to avoid potential hang issues,
- // which may accured when ORCA is translating expression to DXL and sets
- // one segment for input array if strict or tainted replicated distribution detected,
- // and Redistribute from all segments to one segments appears.
-
- if ((CDistributionSpec::EdtSingleton == pdsRequired->Edt() &&
- CDistributionSpecSingleton::PdssConvert(pdsRequired)->FOnMaster()) ||
- (CDistributionSpec::EdtNonSingleton == pdsRequired->Edt() &&
- !CDistributionSpecNonSingleton::PdsConvert(pdsRequired)
- ->FAllowReplicated()))
+ // If the first child is replicated, request replicated on the
+ // second child. This way, the producer is only executed on one
+ // segment, and so is the consumer. The plan would look like:
+ // Gather Motion 1:1 (slice1; segments: 1)
+ // -> Sequence
+ // -> Shared Scan (share slice:id 1:1)
+ // -> Seq Scan on rep
+ // -> Broadcast Motion 3:1 (slice2; segments: 3)
+ // ...
+ // ...
+ // -> Gather Motion 1:1 (sliceN; segments: 1)
+ // -> Shared Scan (share slice:id N:1)
+ if (CDistributionSpec::EdtStrictReplicated == pds->Edt() ||
+ CDistributionSpec::EdtTaintedReplicated == pds->Edt())
{
return GPOS_NEW(mp)
- CDistributionSpecNonSingleton(false /* fAllowReplicated */);
+ CDistributionSpecReplicated(CDistributionSpec::EdtReplicated);
}
- // first child is non-singleton, request a non-singleton distribution on second child
- return GPOS_NEW(mp) CDistributionSpecNonSingleton();
+ // Request non-singleton (excluding replicated) on the second
+ // child
+ return GPOS_NEW(mp)
+ CDistributionSpecNonSingleton(false /* fAllowReplicated */);
}
diff --git a/src/test/regress/expected/bfv_cte.out b/src/test/regress/expected/bfv_cte.out
index 925d6d1e49..b050796d4a 100644
--- a/src/test/regress/expected/bfv_cte.out
+++ b/src/test/regress/expected/bfv_cte.out
@@ -487,6 +487,7 @@ select wait_until_query_output_to_file('/tmp/bfv_cte.out');
-- s/slice=2\): initialized xslice state/slice={2|4}): initialized xslice state/g
-- m/slice=4\): initialized xslice state/
-- s/slice=4\): initialized xslice state/slice={2|4}): initialized xslice state/g
+-- s/One-Time Filter: \(gp_execution_segment\(\) =\d+\)/One-Time Filter: \(gp_execution_segment\(\) =#\)/
-- end_matchsubs
-- Filter out irrelevant LOG messages from segments other than seg2.
\! cat /tmp/bfv_cte.out | grep -P '^(?!LOG)|^(LOG.*seg2)' | grep -vP 'LOG.*fault|decreased xslice state refcount'
@@ -521,3 +522,167 @@ RESET enable_parallel;
DROP TABLE sisc_t1;
DROP TABLE sisc_t2;
\! rm /tmp/bfv_cte.out
+-- The following tests ensures queries involving CTE don't hang in ORCA or fall back.
+-- Query hang is caused by a mismatch between the number of CTE producers and
+-- consumers. Either there are more producers than consumers, or more consumers than
+-- producers, the unconsumed producers or the starved consumers would cause the query
+-- to hang. Query fall back, on the other hand, is due to a missing plan that satisfies
+-- all the required plan properties. The issues stated above are fixed by sending
+-- appropriate distribution requests based on how data is distributed to begin with,
+-- to ensure the number of CTE producers and consumers match. For each of the tests,
+-- we use explain to verify the plan and the actual query to verify the query doesn't
+-- hang.
+-- This test involves a tainted-replicated CTE and two consumer
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that gathers
+-- the CTE onto the coordinator. Both the producer and the consumer executes on the
+-- coordiator. There's 1 producer matching 1 consumer.
+drop table if exists rep;
+NOTICE: table "rep" does not exist, skipping
+create table rep (i character varying(10)) distributed replicated;
+explain (analyze off, costs off, verbose off)
+with cte1 as ( select *,row_number() over ( partition by i) as rank_desc from rep),
+cte2 as ( select 'col1' tblnm,count(*) diffcnt from ( select * from cte1) x)
+select * from ( select 'col1' tblnm from cte1) a left join cte2 c on a.tblnm=c.tblnm;
+ QUERY PLAN
+-----------------------------------------------------------------
+ Hash Left Join
+ Hash Cond: (('col1'::text) = ('col1'::text))
+ -> Gather Motion 1:1 (slice1; segments: 1)
+ -> Subquery Scan on cte1
+ -> WindowAgg
+ Partition By: rep.i
+ -> Sort
+ Sort Key: rep.i
+ -> Seq Scan on rep
+ -> Hash
+ -> Aggregate
+ -> Gather Motion 1:1 (slice2; segments: 1)
+ -> Subquery Scan on cte1_1
+ -> WindowAgg
+ Partition By: rep_1.i
+ -> Sort
+ Sort Key: rep_1.i
+ -> Seq Scan on rep rep_1
+ Optimizer: Postgres-based planner
+(19 rows)
+
+with cte1 as ( select *,row_number() over ( partition by i) as rank_desc from rep),
+ cte2 as ( select 'col1' tblnm,count(*) diffcnt from ( select * from cte1) x)
+select * from ( select 'col1' tblnm from cte1) a left join cte2 c on a.tblnm=c.tblnm;
+ tblnm | tblnm | diffcnt
+-------+-------+---------
+(0 rows)
+
+drop table rep;
+-- This test involves a tainted-replicated CTE and two consumers
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that executes
+-- the producer and both consumers on one segment, before gathering the data onto
+-- the coordinator and return. There's 1 producer matching 1 consumer for each consumer.
+drop table if exists rep1, rep2;
+NOTICE: table "rep1" does not exist, skipping
+NOTICE: table "rep2" does not exist, skipping
+create table rep1 (id bigserial not null, isc varchar(15) not null,iscd varchar(15) null) distributed replicated;
+create table rep2 (id numeric null, rc varchar(255) null,ri numeric null) distributed replicated;
+insert into rep1 (isc,iscd) values ('cmn_bin_yes', 'cmn_bin_yes');
+insert into rep2 (id,rc,ri) values (113551,'cmn_bin_yes',101991), (113552,'cmn_bin_no',101991), (113553,'cmn_bin_err',101991), (113554,'cmn_bin_null',101991);
+explain (analyze off, costs off, verbose off)
+with
+ t1 as (select * from rep1),
+ t2 as (select id, rc from rep2 where ri = 101991)
+select p.*from t1 p join t2 r on p.isc = r.rc join t2 r1 on p.iscd = r1.rc;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Hash Join
+ Hash Cond: ((rep1.iscd)::text = (r1.rc)::text)
+ -> Hash Join
+ Hash Cond: ((rep1.isc)::text = (r.rc)::text)
+ -> Seq Scan on rep1
+ -> Hash
+ -> Subquery Scan on r
+ -> Seq Scan on rep2
+ Filter: (ri = '101991'::numeric)
+ -> Hash
+ -> Subquery Scan on r1
+ -> Seq Scan on rep2 rep2_1
+ Filter: (ri = '101991'::numeric)
+ Optimizer: Postgres-based planner
+(15 rows)
+
+with
+ t1 as (select * from rep1),
+ t2 as (select id, rc from rep2 where ri = 101991)
+select p.*from t1 p join t2 r on p.isc = r.rc join t2 r1 on p.iscd = r1.rc limit 1;
+ id | isc | iscd
+----+-------------+-------------
+ 1 | cmn_bin_yes | cmn_bin_yes
+(1 row)
+
+drop table rep1, rep2;
+-- This test involves a strictly replicated CTE and two consumers
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that executes
+-- the producer and both consumers on one segment by placing a one-time segment filter
+-- on the producer side. The coordinator gathers data from all three segments, even
+-- though only one segment has the tuples from the join due to the one-time filter.
+-- There's 1 producer matching 1 consumer for each consumer.
+drop table if exists t1, t2, rep;
+NOTICE: table "t1" does not exist, skipping
+NOTICE: table "t2" does not exist, skipping
+NOTICE: table "rep" does not exist, skipping
+create table t1 (a int, b int);
+create table t2 (a int, b int);
+create table rep (a int, b int) distributed replicated;
+insert into t1 select 1, generate_series(1,10);
+insert into t2 select 1, generate_series(1,20);
+insert into rep select 1, 1;
+explain (analyze off, costs off, verbose off)
+with t1_cte as (select b from t1),
+rep_cte as (select a from rep)
+select
+case when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+end as rep_cte_a
+from t1_cte join t2 on t1_cte.b = t2.b;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ InitPlan 1 (returns $0) (slice4)
+ -> Gather Motion 1:1 (slice5; segments: 1)
+ -> Seq Scan on rep
+ InitPlan 2 (returns $1) (slice6)
+ -> Gather Motion 1:1 (slice7; segments: 1)
+ -> Seq Scan on rep rep_1
+ -> Hash Join
+ Hash Cond: (t1.b = t2.b)
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: t1.b
+ -> Seq Scan on t1
+ -> Hash
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: t2.b
+ -> Seq Scan on t2
+ Optimizer: Postgres-based planner
+(17 rows)
+
+with t1_cte as (select b from t1),
+rep_cte as (select a from rep)
+select
+case when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+end as rep_cte_a
+from t1_cte join t2 on t1_cte.b = t2.b;
+ rep_cte_a
+-----------
+ 1
+
+
+
+
+ 1
+
+
+
+
+(10 rows)
+
+drop table t1, t2, rep;
diff --git a/src/test/regress/expected/bfv_cte_optimizer.out b/src/test/regress/expected/bfv_cte_optimizer.out
index a178d208dd..dc7c1d75e1 100644
--- a/src/test/regress/expected/bfv_cte_optimizer.out
+++ b/src/test/regress/expected/bfv_cte_optimizer.out
@@ -489,6 +489,7 @@ select wait_until_query_output_to_file('/tmp/bfv_cte.out');
-- s/slice=2\): initialized xslice state/slice={2|4}): initialized xslice state/g
-- m/slice=4\): initialized xslice state/
-- s/slice=4\): initialized xslice state/slice={2|4}): initialized xslice state/g
+-- s/One-Time Filter: \(gp_execution_segment\(\) =\d+\)/One-Time Filter: \(gp_execution_segment\(\) =#\)/
-- end_matchsubs
-- Filter out irrelevant LOG messages from segments other than seg2.
\! cat /tmp/bfv_cte.out | grep -P '^(?!LOG)|^(LOG.*seg2)' | grep -vP 'LOG.*fault|decreased xslice state refcount'
@@ -523,3 +524,180 @@ RESET enable_parallel;
DROP TABLE sisc_t1;
DROP TABLE sisc_t2;
\! rm /tmp/bfv_cte.out
+-- The following tests ensures queries involving CTE don't hang in ORCA or fall back.
+-- Query hang is caused by a mismatch between the number of CTE producers and
+-- consumers. Either there are more producers than consumers, or more consumers than
+-- producers, the unconsumed producers or the starved consumers would cause the query
+-- to hang. Query fall back, on the other hand, is due to a missing plan that satisfies
+-- all the required plan properties. The issues stated above are fixed by sending
+-- appropriate distribution requests based on how data is distributed to begin with,
+-- to ensure the number of CTE producers and consumers match. For each of the tests,
+-- we use explain to verify the plan and the actual query to verify the query doesn't
+-- hang.
+-- This test involves a tainted-replicated CTE and two consumer
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that gathers
+-- the CTE onto the coordinator. Both the producer and the consumer executes on the
+-- coordiator. There's 1 producer matching 1 consumer.
+drop table if exists rep;
+NOTICE: table "rep" does not exist, skipping
+create table rep (i character varying(10)) distributed replicated;
+explain (analyze off, costs off, verbose off)
+with cte1 as ( select *,row_number() over ( partition by i) as rank_desc from rep),
+cte2 as ( select 'col1' tblnm,count(*) diffcnt from ( select * from cte1) x)
+select * from ( select 'col1' tblnm from cte1) a left join cte2 c on a.tblnm=c.tblnm;
+ QUERY PLAN
+----------------------------------------------------------------
+ Sequence
+ -> Shared Scan (share slice:id 0:0)
+ -> Gather Motion 1:1 (slice1; segments: 1)
+ -> WindowAgg
+ Partition By: rep.i
+ -> Sort
+ Sort Key: rep.i
+ -> Seq Scan on rep
+ -> Hash Left Join
+ Hash Cond: (('col1'::text) = ('col1'::text))
+ -> Result
+ -> Shared Scan (share slice:id 0:0)
+ -> Hash
+ -> Result
+ Filter: (('col1'::text) = 'col1'::text)
+ -> Aggregate
+ -> Shared Scan (share slice:id 0:0)
+ Optimizer: GPORCA
+(18 rows)
+
+with cte1 as ( select *,row_number() over ( partition by i) as rank_desc from rep),
+ cte2 as ( select 'col1' tblnm,count(*) diffcnt from ( select * from cte1) x)
+select * from ( select 'col1' tblnm from cte1) a left join cte2 c on a.tblnm=c.tblnm;
+ tblnm | tblnm | diffcnt
+-------+-------+---------
+(0 rows)
+
+drop table rep;
+-- This test involves a tainted-replicated CTE and two consumers
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that executes
+-- the producer and both consumers on one segment, before gathering the data onto
+-- the coordinator and return. There's 1 producer matching 1 consumer for each consumer.
+drop table if exists rep1, rep2;
+NOTICE: table "rep1" does not exist, skipping
+NOTICE: table "rep2" does not exist, skipping
+create table rep1 (id bigserial not null, isc varchar(15) not null,iscd varchar(15) null) distributed replicated;
+create table rep2 (id numeric null, rc varchar(255) null,ri numeric null) distributed replicated;
+insert into rep1 (isc,iscd) values ('cmn_bin_yes', 'cmn_bin_yes');
+insert into rep2 (id,rc,ri) values (113551,'cmn_bin_yes',101991), (113552,'cmn_bin_no',101991), (113553,'cmn_bin_err',101991), (113554,'cmn_bin_null',101991);
+explain (analyze off, costs off, verbose off)
+with
+ t1 as (select * from rep1),
+ t2 as (select id, rc from rep2 where ri = 101991)
+select p.*from t1 p join t2 r on p.isc = r.rc join t2 r1 on p.iscd = r1.rc;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Sequence
+ -> Shared Scan (share slice:id 1:1)
+ -> Seq Scan on rep2
+ Filter: (ri = '101991'::numeric)
+ -> Hash Join
+ Hash Cond: ((rep1.isc)::text = (share1_ref2.rc)::text)
+ -> Hash Join
+ Hash Cond: ((rep1.iscd)::text = (share1_ref3.rc)::text)
+ -> Seq Scan on rep1
+ -> Hash
+ -> Shared Scan (share slice:id 1:1)
+ -> Hash
+ -> Shared Scan (share slice:id 1:1)
+ Optimizer: GPORCA
+(15 rows)
+
+with
+ t1 as (select * from rep1),
+ t2 as (select id, rc from rep2 where ri = 101991)
+select p.*from t1 p join t2 r on p.isc = r.rc join t2 r1 on p.iscd = r1.rc limit 1;
+ id | isc | iscd
+----+-------------+-------------
+ 1 | cmn_bin_yes | cmn_bin_yes
+(1 row)
+
+drop table rep1, rep2;
+-- This test involves a strictly replicated CTE and two consumers
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that executes
+-- the producer and both consumers on one segment by placing a one-time segment filter
+-- on the producer side. The coordinator gathers data from all three segments, even
+-- though only one segment has the tuples from the join due to the one-time filter.
+-- There's 1 producer matching 1 consumer for each consumer.
+drop table if exists t1, t2, rep;
+NOTICE: table "t1" does not exist, skipping
+NOTICE: table "t2" does not exist, skipping
+NOTICE: table "rep" does not exist, skipping
+create table t1 (a int, b int);
+create table t2 (a int, b int);
+create table rep (a int, b int) distributed replicated;
+insert into t1 select 1, generate_series(1,10);
+insert into t2 select 1, generate_series(1,20);
+insert into rep select 1, 1;
+explain (analyze off, costs off, verbose off)
+with t1_cte as (select b from t1),
+rep_cte as (select a from rep)
+select
+case when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+end as rep_cte_a
+from t1_cte join t2 on t1_cte.b = t2.b;
+ QUERY PLAN
+------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Sequence
+ -> Shared Scan (share slice:id 1:1)
+ -> Result
+ One-Time Filter: (gp_execution_segment() = 1)
+ -> Seq Scan on rep
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Hash Join
+ Hash Cond: (t1.b = t2.b)
+ -> Seq Scan on t1
+ -> Hash
+ -> Broadcast Motion 3:3 (slice6; segments: 3)
+ -> Seq Scan on t2
+ -> Assert
+ Assert Cond: ((row_number() OVER (?)) = 1)
+ -> Materialize
+ -> Broadcast Motion 1:3 (slice4)
+ -> WindowAgg
+ -> Gather Motion 3:1 (slice5; segments: 3)
+ -> Shared Scan (share slice:id 5:1)
+ -> Assert
+ Assert Cond: ((row_number() OVER (?)) = 1)
+ -> Materialize
+ -> Broadcast Motion 1:3 (slice2)
+ -> WindowAgg
+ -> Gather Motion 3:1 (slice3; segments: 3)
+ -> Shared Scan (share slice:id 3:1)
+ Optimizer: GPORCA
+(31 rows)
+
+with t1_cte as (select b from t1),
+rep_cte as (select a from rep)
+select
+case when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+end as rep_cte_a
+from t1_cte join t2 on t1_cte.b = t2.b;
+ rep_cte_a
+-----------
+ 1
+ 1
+
+
+
+
+
+
+
+
+(10 rows)
+
+drop table t1, t2, rep;
diff --git a/src/test/regress/sql/bfv_cte.sql b/src/test/regress/sql/bfv_cte.sql
index 02b1895e8a..537579784f 100644
--- a/src/test/regress/sql/bfv_cte.sql
+++ b/src/test/regress/sql/bfv_cte.sql
@@ -323,6 +323,7 @@ select wait_until_query_output_to_file('/tmp/bfv_cte.out');
-- s/slice=2\): initialized xslice state/slice={2|4}): initialized xslice state/g
-- m/slice=4\): initialized xslice state/
-- s/slice=4\): initialized xslice state/slice={2|4}): initialized xslice state/g
+-- s/One-Time Filter: \(gp_execution_segment\(\) =\d+\)/One-Time Filter: \(gp_execution_segment\(\) =#\)/
-- end_matchsubs
-- Filter out irrelevant LOG messages from segments other than seg2.
\! cat /tmp/bfv_cte.out | grep -P '^(?!LOG)|^(LOG.*seg2)' | grep -vP 'LOG.*fault|decreased xslice state refcount'
@@ -334,3 +335,85 @@ RESET enable_parallel;
DROP TABLE sisc_t1;
DROP TABLE sisc_t2;
\! rm /tmp/bfv_cte.out
+
+-- The following tests ensures queries involving CTE don't hang in ORCA or fall back.
+-- Query hang is caused by a mismatch between the number of CTE producers and
+-- consumers. Either there are more producers than consumers, or more consumers than
+-- producers, the unconsumed producers or the starved consumers would cause the query
+-- to hang. Query fall back, on the other hand, is due to a missing plan that satisfies
+-- all the required plan properties. The issues stated above are fixed by sending
+-- appropriate distribution requests based on how data is distributed to begin with,
+-- to ensure the number of CTE producers and consumers match. For each of the tests,
+-- we use explain to verify the plan and the actual query to verify the query doesn't
+-- hang.
+
+-- This test involves a tainted-replicated CTE and two consumer
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that gathers
+-- the CTE onto the coordinator. Both the producer and the consumer executes on the
+-- coordiator. There's 1 producer matching 1 consumer.
+drop table if exists rep;
+create table rep (i character varying(10)) distributed replicated;
+
+explain (analyze off, costs off, verbose off)
+with cte1 as ( select *,row_number() over ( partition by i) as rank_desc from rep),
+cte2 as ( select 'col1' tblnm,count(*) diffcnt from ( select * from cte1) x)
+select * from ( select 'col1' tblnm from cte1) a left join cte2 c on a.tblnm=c.tblnm;
+
+with cte1 as ( select *,row_number() over ( partition by i) as rank_desc from rep),
+ cte2 as ( select 'col1' tblnm,count(*) diffcnt from ( select * from cte1) x)
+select * from ( select 'col1' tblnm from cte1) a left join cte2 c on a.tblnm=c.tblnm;
+drop table rep;
+
+-- This test involves a tainted-replicated CTE and two consumers
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that executes
+-- the producer and both consumers on one segment, before gathering the data onto
+-- the coordinator and return. There's 1 producer matching 1 consumer for each consumer.
+drop table if exists rep1, rep2;
+create table rep1 (id bigserial not null, isc varchar(15) not null,iscd varchar(15) null) distributed replicated;
+create table rep2 (id numeric null, rc varchar(255) null,ri numeric null) distributed replicated;
+insert into rep1 (isc,iscd) values ('cmn_bin_yes', 'cmn_bin_yes');
+insert into rep2 (id,rc,ri) values (113551,'cmn_bin_yes',101991), (113552,'cmn_bin_no',101991), (113553,'cmn_bin_err',101991), (113554,'cmn_bin_null',101991);
+explain (analyze off, costs off, verbose off)
+with
+ t1 as (select * from rep1),
+ t2 as (select id, rc from rep2 where ri = 101991)
+select p.*from t1 p join t2 r on p.isc = r.rc join t2 r1 on p.iscd = r1.rc;
+
+with
+ t1 as (select * from rep1),
+ t2 as (select id, rc from rep2 where ri = 101991)
+select p.*from t1 p join t2 r on p.isc = r.rc join t2 r1 on p.iscd = r1.rc limit 1;
+drop table rep1, rep2;
+
+-- This test involves a strictly replicated CTE and two consumers
+-- To ensure there's no duplicate hazard, the cost model chooses a plan that executes
+-- the producer and both consumers on one segment by placing a one-time segment filter
+-- on the producer side. The coordinator gathers data from all three segments, even
+-- though only one segment has the tuples from the join due to the one-time filter.
+-- There's 1 producer matching 1 consumer for each consumer.
+drop table if exists t1, t2, rep;
+create table t1 (a int, b int);
+create table t2 (a int, b int);
+create table rep (a int, b int) distributed replicated;
+insert into t1 select 1, generate_series(1,10);
+insert into t2 select 1, generate_series(1,20);
+insert into rep select 1, 1;
+
+explain (analyze off, costs off, verbose off)
+with t1_cte as (select b from t1),
+rep_cte as (select a from rep)
+select
+case when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+end as rep_cte_a
+from t1_cte join t2 on t1_cte.b = t2.b;
+
+with t1_cte as (select b from t1),
+rep_cte as (select a from rep)
+select
+case when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+when (t2.b in (1,2)) then (select rep_cte.a from rep_cte)
+end as rep_cte_a
+from t1_cte join t2 on t1_cte.b = t2.b;
+drop table t1, t2, rep;
+
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 26/30: [ORCA] Fix SIGSEGV using subquery exists on materialized view
Posted by ma...@apache.org.
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 49b1c5620796f7ea18cc95df6921ec4b8a7adb76
Author: David Kimura <dk...@vmware.com>
AuthorDate: Mon Feb 12 08:38:39 2024 -0800
[ORCA] Fix SIGSEGV using subquery exists on materialized view
In Query to DXL translation, one of the tasks in RetrieveRel() is to get the
relation keyset. That keyset defines the table descriptor used in the query.
In the case of materialized views, ORCA did not build the keyset. As a
result, the column was never marked used and was subsequently optimized
out. That led a SIGSEGV in release mode (or fallback in debug mode) when
the optimized out column is later referenced.
See FRemoveExistentialSubquery()
Following example demonstrated this issue:
CREATE TABLE t (a int) DISTRIBUTED BY (a);
CREATE MATERIALIZED VIEW v AS SELECT a FROM t DISTRIBUTED RANDOMLY;
SELECT * FROM v WHERE EXISTS (select a FROM v);
This commit fixes the problem by allowing materialized views to build a keyset.
Notes:
- Commit 801b7a920b introduced used/unused column framework.
- Non-materialized views aren't affected because their RTE references
the relation OID. So, it is treated like a normal relation while
building keysets in RetrieveRel().
---
.../gpopt/translate/CTranslatorRelcacheToDXL.cpp | 2 +-
src/test/regress/expected/qp_subquery.out | 110 ++++++++++
.../regress/expected/qp_subquery_optimizer.out | 222 +++++++++++++++++++++
src/test/regress/sql/qp_subquery.sql | 28 +++
4 files changed, 361 insertions(+), 1 deletion(-)
diff --git a/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp b/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
index 9807905e8a..ba67932018 100644
--- a/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
@@ -2863,7 +2863,7 @@ CTranslatorRelcacheToDXL::RelHasSystemColumns(char rel_kind)
{
return RELKIND_RELATION == rel_kind || RELKIND_SEQUENCE == rel_kind ||
RELKIND_AOSEGMENTS == rel_kind || RELKIND_TOASTVALUE == rel_kind ||
- RELKIND_FOREIGN_TABLE == rel_kind ||
+ RELKIND_FOREIGN_TABLE == rel_kind || RELKIND_MATVIEW == rel_kind ||
RELKIND_PARTITIONED_TABLE == rel_kind;
}
diff --git a/src/test/regress/expected/qp_subquery.out b/src/test/regress/expected/qp_subquery.out
index 2e0d26fefc..266145c89a 100644
--- a/src/test/regress/expected/qp_subquery.out
+++ b/src/test/regress/expected/qp_subquery.out
@@ -1,5 +1,6 @@
create schema qp_subquery;
set search_path to qp_subquery;
+set optimizer_trace_fallback to on;
begin;
CREATE TABLE SUBSELECT_TBL1 (f1 integer, f2 integer, f3 float);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'f1' as the Cloudberry Database data distribution key for this table.
@@ -1804,5 +1805,114 @@ from (
8 | false
(10 rows)
+-- check various [NOT] EXISTS subqueries on materialized views
+create table t (a int, b int) distributed by (a);
+insert into t values (1, 1), (2, NULL), (NULL, 3);
+create materialized view v as select a, b from t distributed randomly;
+select * from v where exists (select a from v);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where exists (select a from v limit 0);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select a from v where a=2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where exists (select a from v where a<>2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select a from v);
+ a | b
+---+---
+(0 rows)
+
+select * from v where not exists (select a from v limit 0);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select a from v where a=2);
+ a | b
+---+---
+(0 rows)
+
+select * from v where not exists (select a from v where a<>2);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select b from v);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where exists (select b from v limit 0);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select b from v where b=2);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select b from v where b<>2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select b from v);
+ a | b
+---+---
+(0 rows)
+
+select * from v where not exists (select b from v limit 0);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select b from v where b=2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select b from v where b<>2);
+ a | b
+---+---
+(0 rows)
+
set client_min_messages='warning';
drop schema qp_subquery cascade;
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/expected/qp_subquery_optimizer.out b/src/test/regress/expected/qp_subquery_optimizer.out
index 7f140e59af..f67234ab65 100644
--- a/src/test/regress/expected/qp_subquery_optimizer.out
+++ b/src/test/regress/expected/qp_subquery_optimizer.out
@@ -1,5 +1,6 @@
create schema qp_subquery;
set search_path to qp_subquery;
+set optimizer_trace_fallback to on;
begin;
CREATE TABLE SUBSELECT_TBL1 (f1 integer, f2 integer, f3 float);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'f1' as the Cloudberry Database data distribution key for this table.
@@ -70,6 +71,8 @@ SELECT '' AS three, f1, f2
FROM SUBSELECT_TBL1
WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL1
WHERE f3 IS NOT NULL) ORDER BY 2,3;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
three | f1 | f2
-------+----+----
| 1 | 2
@@ -139,6 +142,8 @@ SELECT '' AS five, f1 AS "Correlated Field"
FROM SUBSELECT_TBL1
WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL1
WHERE f3 IS NOT NULL);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
five | Correlated Field
------+------------------
| 3
@@ -864,6 +869,8 @@ create table Tbl8352_t2(a int, b int) distributed by (a);
insert into Tbl8352_t1 values(1,null),(null,1),(1,1),(null,null);
insert into Tbl8352_t2 values(1,1);
select * from Tbl8352_t1 where (Tbl8352_t1.a,Tbl8352_t1.b) not in (select Tbl8352_t2.a,Tbl8352_t2.b from Tbl8352_t2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
(0 rows)
@@ -873,6 +880,8 @@ create table Tbl8352_t2a(a int, b int) distributed by (a);
insert into Tbl8352_t1a values(1,2),(3,null),(null,4),(null,null);
insert into Tbl8352_t2a values(1,2);
select * from Tbl8352_t1a where (Tbl8352_t1a.a,Tbl8352_t1a.b) not in (select Tbl8352_t2a.a,Tbl8352_t2a.b from Tbl8352_t2a) order by 1,2;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 |
@@ -880,12 +889,16 @@ select * from Tbl8352_t1a where (Tbl8352_t1a.a,Tbl8352_t1a.b) not in (select Tbl
(2 rows)
select (1,null::int) not in (select 1,1);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
?column?
----------
(1 row)
select (3,null::int) not in (select 1,1);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
?column?
----------
t
@@ -928,18 +941,24 @@ commit;
-- not in subquery involving vars from different rels with inner join
--
select t1.a, t2.b from t1, t2 where t1.a=t2.a and ((t1.a,t2.b) not in (select i1.a,i1.b from i1));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
(1 row)
select t1.a, t2.b from t1 inner join t2 on (t1.a=t2.a and ((t1.a,t2.b) not in (select i1.a,i1.b from i1)));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
(1 row)
select t1.a, t2.b from t1 inner join t2 on (t1.a=t2.a) where ((t1.a,t2.b) not in (select i1.a,i1.b from i1));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -947,6 +966,8 @@ select t1.a, t2.b from t1 inner join t2 on (t1.a=t2.a) where ((t1.a,t2.b) not i
-- unsupported case
explain select t1.a, t2.b from t1, t2 where t1.a=t2.a or ((t1.a,t2.b) not in (select i1.a,i1.b from i1));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
QUERY PLAN
------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000002.10 rows=3 width=8)
@@ -965,6 +986,8 @@ explain select t1.a, t2.b from t1, t2 where t1.a=t2.a or ((t1.a,t2.b) not in (se
-- not in subquery involving vars from different rels with left join.
--
select t1.a, t2.b from t1 left join t2 on (t1.a=t2.a) where ((t1.a,t2.b) not in (select i1.a,i1.b from i1));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -972,6 +995,8 @@ select t1.a, t2.b from t1 left join t2 on (t1.a=t2.a) where ((t1.a,t2.b) not in
(2 rows)
select t1.a, t2.b from t1 left join t2 on (t1.a=t2.a and ((t1.a,t2.b) not in (select i1.a,i1.b from i1)));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
1 |
@@ -983,6 +1008,8 @@ select t1.a, t2.b from t1 left join t2 on (t1.a=t2.a and ((t1.a,t2.b) not in (s
-- not in subquery involving vars from different rels with outer join
--
select t1.a, t2.b from t1 full outer join t2 on (t1.a=t2.a) where ((t1.a,t2.b) not in (select i1.a,i1.b from i1));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -992,6 +1019,8 @@ select t1.a, t2.b from t1 full outer join t2 on (t1.a=t2.a) where ((t1.a,t2.b)
-- not in subquery with a row var in FULL JOIN condition
select t1.a, t2.b from t1 full outer join t2 on (t1.a=t2.a and ((t1.a,t2.b) not in (select i1.a,i1.b from i1)));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1040,6 +1069,8 @@ select Tbl01.*,foo(Tbl01.a) as foo from Tbl01; -- showing foo values
(4 rows)
select Tbl01.* from Tbl01 where foo(Tbl01.a) not in (select a from Tbl03);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query Parameter
a | b | c
---+----+----
| 11 | 12
@@ -1082,6 +1113,8 @@ commit;
--
-- non-nullability due to inner join
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b from Tbl05,Tbl06 where Tbl05.a=Tbl06.a and Tbl05.b < 10); -- expected: (3,4),(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1089,6 +1122,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b
(2 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07 inner join Tbl08 on (Tbl07.a=Tbl08.a and Tbl07.b=Tbl08.b) inner join i3 on (i3.a=Tbl08.a and i3.b=Tbl08.b)); -- expected:(3,4), (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1097,6 +1132,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b
-- non-nullability due to where clause condition
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b from Tbl05 where Tbl05.a < 2 and Tbl05.b < 10); -- expected: (3,4), (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1104,6 +1141,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b
(2 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07 left join Tbl08 on (Tbl07.a=Tbl08.a) where Tbl07.a = 1 and Tbl07.b = 2); -- expected: (3,4),(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1112,12 +1151,16 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b
-- not null condition in the where clause
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07 full outer join Tbl08 on (Tbl07.a=Tbl08.a) where Tbl07.a is not null and Tbl07.b is not null); -- (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
5 | 6
(1 row)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07 left join Tbl08 on (Tbl07.a=Tbl08.a) where Tbl07.a is not null and Tbl07.b is not null); -- (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
5 | 6
@@ -1125,6 +1168,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b
-- or clauses that should lead to non-nullability
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b from Tbl05 where (Tbl05.a < 2 or Tbl05.a > 100) AND (Tbl05.b < 4 or Tbl05.b > 100)); -- expected: (3,4), (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1133,6 +1178,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b
-- base-table constraints
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from i3); -- expected: (3,4),(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1140,6 +1187,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from
(2 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b from Tbl05,i3 where Tbl05.a = i3.a and Tbl05.b = i3.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1147,6 +1196,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b
(2 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b from Tbl05,i3 where Tbl05.a < i3.a and Tbl05.b > i3.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1156,6 +1207,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b
-- non-null constant values
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select 1,2); -- (3,4),(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1171,6 +1224,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in ((1,2));
-- multiple NOT-IN expressions
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl06.a,Tbl06.b from Tbl06) and (Tbl04.a,Tbl04.b) not in (select i3.a, i3.b from i3); -- expected: (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
5 | 6
@@ -1178,6 +1233,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl06.a,Tbl06.b
explain (costs off)
select Tbl04.* from Tbl04 where not ((Tbl04.a,Tbl04.b) in (select Tbl06.a,Tbl06.b from Tbl06) or (Tbl04.a,Tbl04.b) in (select i3.a, i3.b from i3));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
QUERY PLAN
--------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -1196,6 +1253,8 @@ select Tbl04.* from Tbl04 where not ((Tbl04.a,Tbl04.b) in (select Tbl06.a,Tbl06.
(13 rows)
select Tbl04.* from Tbl04 where not ((Tbl04.a,Tbl04.b) in (select Tbl06.a,Tbl06.b from Tbl06) or (Tbl04.a,Tbl04.b) in (select i3.a, i3.b from i3)); -- expected: (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
5 | 6
@@ -1228,6 +1287,8 @@ select Tbl04.* from Tbl04 where Tbl04.a NOT IN (select Tbl05.a from Tbl05 left j
--
-- No where clause
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b from Tbl05); -- expected: (3,4), (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1236,29 +1297,39 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b
-- INDF in the where clause
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07,Tbl08 where Tbl07.a is not distinct from Tbl08.a and Tbl07.b is not distinct from Tbl08.b); -- no rows
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
(0 rows)
-- null conditions in the where clause
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07 left join Tbl08 on (Tbl07.a=Tbl08.a and Tbl07.b=Tbl08.b) where Tbl07.a is null and Tbl07.b is null); -- no rows
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
(0 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07 full outer join Tbl08 on (Tbl07.a=Tbl08.a and Tbl07.b=Tbl08.b) where Tbl07.a is null and Tbl07.b is null); -- no rows
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
(0 rows)
-- OR clauses that should not lead to non-nullability
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl07.a,Tbl07.b from Tbl07,Tbl08 where Tbl07.a is not distinct from Tbl08.a or Tbl07.a=1); -- no rows
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
(0 rows)
-- values list: we don't support it yet. not worth the effort.
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (values(1,2),(3,4)); -- (3,4),(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
5 | 6
@@ -1266,6 +1337,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (values(1,2),(3,4)); --
-- functions/ops in the target list of the subquery
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a+2,i3.b+2 from i3); -- expected: (5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
1 | 2
@@ -1282,6 +1355,8 @@ select Tbl09.a, Tbl09.b from Tbl09;
(3 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl09.a,Tbl09.b from Tbl09); -- expected: (3,4)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1296,12 +1371,16 @@ select Tbl09.a, Tbl09.b from Tbl09 group by Tbl09.a, Tbl09.b;
(3 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl09.a, Tbl09.b from Tbl09 group by Tbl09.a, Tbl09.b); -- expected: (3,4)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
(1 row)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select sum(i3.b),i3.a from i3 group by i3.a); -- (1,2),(3,4),(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
1 | 2
@@ -1311,6 +1390,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select sum(i3.b),i3.a
-- infering not-nullability for only one of the columns
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,Tbl05.b from i3,Tbl05 where i3.a=Tbl05.a); -- (3,4),(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1318,6 +1399,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,Tbl05.b fr
(2 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) NOT IN (select i3.a,i3.b from Tbl07 left join i3 on (i3.a=Tbl07.a and i3.b=Tbl07.b) where i3.a > 2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1330,22 +1413,30 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) NOT IN (select i3.a,i3.b from
-- Started supporting since RIO
--
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from i3 union select Tbl07.a, Tbl07.b from Tbl07); -- nulls in the inner side, should not return any rows
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
(0 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from i3 union all select Tbl07.a, Tbl07.b from Tbl07); -- nulls in the innder side, should not return any rows
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
(0 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select 1,2 union select 3,4); --(5,6)
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
5 | 6
(1 row)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from i3) or (Tbl04.a,Tbl04.b) not in (select Tbl07.a, Tbl07.b from Tbl07);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1354,6 +1445,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from
-- Cases where the planner "should have" determined not-nullabitlity
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from i3 left join Tbl07 on (i3.a=Tbl07.a and i3.b=Tbl07.b));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1361,6 +1454,8 @@ select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select i3.a,i3.b from
(2 rows)
select Tbl04.* from Tbl04 where (Tbl04.a,Tbl04.b) not in (select Tbl05.a,Tbl05.b from Tbl05 where (Tbl05.a IN (select i3.a from i3)) AND (Tbl05.b IN (select i3.b from i3)));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---+---
3 | 4
@@ -1375,12 +1470,16 @@ insert into Tbl04 values(3,4);
create table Tbl10(x int, y int);
insert into Tbl10 values(1,null);
select * from Tbl04 where (x,y) not in (select x,y from Tbl10);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
x | y
---+---
3 | 4
(1 row)
select * from Tbl04 where (x,y) not in (select 1,y from Tbl10);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
x | y
---+---
3 | 4
@@ -1394,6 +1493,8 @@ select * from tbl10 where y not in (select 1 where false);
alter table Tbl10 alter column x set not null;
select * from Tbl04 where (x,y) not in (select x,y from Tbl10);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
x | y
---+---
3 | 4
@@ -1418,6 +1519,8 @@ insert into TblText3 values('florian','waas');
insert into TblText3 values('oak','barrett');
commit;
SELECT TblText1.a, TblText2.b FROM TblText1 JOIN TblText2 ON TblText1.a = TblText2.a WHERE ((NOT (TblText1.a, TblText2.b) IN (SELECT TblText3.a, TblText3.b FROM TblText3)));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
--------+----------
tushar | pednekar
@@ -1425,6 +1528,8 @@ SELECT TblText1.a, TblText2.b FROM TblText1 JOIN TblText2 ON TblText1.a = TblTex
(2 rows)
SELECT TblText1.a, TblText2.b FROM TblText1 JOIN TblText2 ON TblText1.a = TblText2.a WHERE (( (TblText1.a, TblText2.b) IN (SELECT TblText3.a, TblText3.b FROM TblText3)));
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-Scalar Subquery
a | b
---------+---------
florian | waas
@@ -1597,8 +1702,12 @@ NOTICE: table has parent, setting distribution columns to match parent table
create table append_rel2(att4 int) INHERITS(append_rel);
NOTICE: table has parent, setting distribution columns to match parent table
insert into append_rel values(1,10),(2,20),(3,30);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
analyze append_rel;
explain with test as (select * from (select * from append_rel) p where att1 in (select att1 from append_rel where att2 >= 19) ) select att2 from append_rel where att1 in (select att1 from test where att2 <= 21);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3) (cost=2296.15..4165.55 rows=51935 width=4)
@@ -1633,6 +1742,8 @@ explain with test as (select * from (select * from append_rel) p where att1 in (
(29 rows)
with test as (select * from (select * from append_rel) p where att1 in (select att1 from append_rel where att2 >= 19) ) select att2 from append_rel where att1 in (select att1 from test where att2 <= 21);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
att2
------
20
@@ -1764,6 +1875,8 @@ CREATE TABLE a2 AS (
CREATE TABLE a3 AS (
SELECT a1, row_to_json(a2) AS rj FROM a2)
WITH data distributed BY (a1);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Whole-row variable
-- explain "verbose" is needed to show that the subplan is hashed
explain (verbose, costs off) select a1,case when a2 in (select a1::text from a1 where a1 is not null) then 'true' else 'false' end as checkcol
from (
@@ -1806,5 +1919,114 @@ from (
10 | false
(10 rows)
+-- check various [NOT] EXISTS subqueries on materialized views
+create table t (a int, b int) distributed by (a);
+insert into t values (1, 1), (2, NULL), (NULL, 3);
+create materialized view v as select a, b from t distributed randomly;
+select * from v where exists (select a from v);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where exists (select a from v limit 0);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select a from v where a=2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where exists (select a from v where a<>2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select a from v);
+ a | b
+---+---
+(0 rows)
+
+select * from v where not exists (select a from v limit 0);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select a from v where a=2);
+ a | b
+---+---
+(0 rows)
+
+select * from v where not exists (select a from v where a<>2);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select b from v);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where exists (select b from v limit 0);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select b from v where b=2);
+ a | b
+---+---
+(0 rows)
+
+select * from v where exists (select b from v where b<>2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select b from v);
+ a | b
+---+---
+(0 rows)
+
+select * from v where not exists (select b from v limit 0);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select b from v where b=2);
+ a | b
+---+---
+ 2 |
+ | 3
+ 1 | 1
+(3 rows)
+
+select * from v where not exists (select b from v where b<>2);
+ a | b
+---+---
+(0 rows)
+
set client_min_messages='warning';
drop schema qp_subquery cascade;
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/sql/qp_subquery.sql b/src/test/regress/sql/qp_subquery.sql
index 0c374024d6..716d684aa1 100644
--- a/src/test/regress/sql/qp_subquery.sql
+++ b/src/test/regress/sql/qp_subquery.sql
@@ -1,5 +1,6 @@
create schema qp_subquery;
set search_path to qp_subquery;
+set optimizer_trace_fallback to on;
begin;
CREATE TABLE SUBSELECT_TBL1 (f1 integer, f2 integer, f3 float);
@@ -730,5 +731,32 @@ from (
from a3
)t;
+-- check various [NOT] EXISTS subqueries on materialized views
+create table t (a int, b int) distributed by (a);
+insert into t values (1, 1), (2, NULL), (NULL, 3);
+
+create materialized view v as select a, b from t distributed randomly;
+
+select * from v where exists (select a from v);
+select * from v where exists (select a from v limit 0);
+select * from v where exists (select a from v where a=2);
+select * from v where exists (select a from v where a<>2);
+
+select * from v where not exists (select a from v);
+select * from v where not exists (select a from v limit 0);
+select * from v where not exists (select a from v where a=2);
+select * from v where not exists (select a from v where a<>2);
+
+select * from v where exists (select b from v);
+select * from v where exists (select b from v limit 0);
+select * from v where exists (select b from v where b=2);
+select * from v where exists (select b from v where b<>2);
+
+select * from v where not exists (select b from v);
+select * from v where not exists (select b from v limit 0);
+select * from v where not exists (select b from v where b=2);
+select * from v where not exists (select b from v where b<>2);
+
set client_min_messages='warning';
drop schema qp_subquery cascade;
+reset optimizer_trace_fallback;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 24/30: [ORCA] Update all join operators to derive set of table descriptors
Posted by ma...@apache.org.
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 b05263bde4ab3167920abc81236cf4983e2e3ea1
Author: David Kimura <dk...@vmware.com>
AuthorDate: Thu Feb 8 13:55:01 2024 -0800
[ORCA] Update all join operators to derive set of table descriptors
Commit a76fa13ce25 updated API DeriveTableDescriptor() to return a table
descriptor set, intead of a single table descriptor (or NULL). That
commit updated CLogicalNAryJoin, but other join types still returned
NULL.
This follow up commit updates the other join types as well via class
inheritance. That list includes:
- CLogicalFullOuterJoin
- CLogicalInnerJoin
- CLogicalLeftAntiSemiJoin
- CLogicalLeftOuterJoin
- CLogicalLeftSemiJoin
- CLogicalNAryJoin
- CLogicalRightOuterJoin
---
.../include/gpopt/operators/CLogicalJoin.h | 4 ++++
.../include/gpopt/operators/CLogicalNAryJoin.h | 4 ----
.../gporca/libgpopt/src/operators/CLogicalJoin.cpp | 27 ++++++++++++++++++++++
.../libgpopt/src/operators/CLogicalNAryJoin.cpp | 27 ----------------------
4 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalJoin.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalJoin.h
index fc12ac3711..8c1e366a11 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalJoin.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalJoin.h
@@ -109,6 +109,10 @@ public:
return PfpDeriveFromScalar(mp, exprhdl);
}
+ // derive table descriptor
+ CTableDescriptorHashSet *DeriveTableDescriptor(
+ CMemoryPool *mp, CExpressionHandle &exprhdl) const override;
+
//-------------------------------------------------------------------------------------
// Derived Stats
//-------------------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h
index 6f5dafa192..7e2f6e07d7 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h
@@ -86,10 +86,6 @@ public:
CPropConstraint *DerivePropertyConstraint(
CMemoryPool *mp, CExpressionHandle &exprhdl) const override;
- // derive table descriptor
- CTableDescriptorHashSet *DeriveTableDescriptor(
- CMemoryPool *mp, CExpressionHandle &exprhdl) const override;
-
//-------------------------------------------------------------------------------------
// Derived Stats
//-------------------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp
index c1b9f73b51..aada2d9374 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalJoin.cpp
@@ -52,6 +52,33 @@ CLogicalJoin::Matches(COperator *pop) const
return (pop->Eopid() == Eopid());
}
+CTableDescriptorHashSet *
+CLogicalJoin::DeriveTableDescriptor(CMemoryPool *mp,
+ CExpressionHandle &exprhdl) const
+{
+ CTableDescriptorHashSet *table_descriptor_set =
+ GPOS_NEW(mp) CTableDescriptorHashSet(mp);
+
+ for (ULONG ul = 0; ul < exprhdl.Arity(); ul++)
+ {
+ if (exprhdl.Pop(ul)->FLogical())
+ {
+ CTableDescriptorHashSetIter hsiter(
+ exprhdl.DeriveTableDescriptor(ul));
+ while (hsiter.Advance())
+ {
+ CTableDescriptor *ptabdesc =
+ const_cast<CTableDescriptor *>(hsiter.Get());
+ if (table_descriptor_set->Insert(ptabdesc))
+ {
+ ptabdesc->AddRef();
+ }
+ }
+ }
+ }
+ return table_descriptor_set;
+}
+
//---------------------------------------------------------------------------
// @function:
// CLogicalJoin::PstatsDerive
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp
index e469f88031..620958b06f 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp
@@ -194,33 +194,6 @@ CLogicalNAryJoin::DerivePropertyConstraint(CMemoryPool *mp,
return GPOS_NEW(mp) CPropConstraint(mp, equivalenceClasses, pcnstrNew);
}
-CTableDescriptorHashSet *
-CLogicalNAryJoin::DeriveTableDescriptor(CMemoryPool *mp,
- CExpressionHandle &exprhdl) const
-{
- CTableDescriptorHashSet *table_descriptor_set =
- GPOS_NEW(mp) CTableDescriptorHashSet(mp);
-
- for (ULONG ul = 0; ul < exprhdl.Arity(); ul++)
- {
- if (exprhdl.Pop(ul)->FLogical())
- {
- CTableDescriptorHashSetIter hsiter(
- exprhdl.DeriveTableDescriptor(ul));
- while (hsiter.Advance())
- {
- CTableDescriptor *ptabdesc =
- const_cast<CTableDescriptor *>(hsiter.Get());
- if (table_descriptor_set->Insert(ptabdesc))
- {
- ptabdesc->AddRef();
- }
- }
- }
- }
- return table_descriptor_set;
-}
-
//---------------------------------------------------------------------------
// @function:
// CLogicalNAryJoin::PxfsCandidates
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 29/30: Enable plan hints regress test
Posted by ma...@apache.org.
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 55a8f905b1b73777bb5655b6282faccfd2a38226
Author: David Kimura <dk...@vmware.com>
AuthorDate: Thu Jan 25 13:44:00 2024 -0800
Enable plan hints regress test
- Add PLANNER answer file
- Update TidScan test query to use ctid in predicate
- Use explain costs off in tests
- Use ANALYZE to prevent test plan shape flakes
---
src/test/regress/expected/planhints.out | 1836 +++++++++++---------
.../{planhints.out => planhints_optimizer.out} | 427 ++---
src/test/regress/sql/planhints.sql | 86 +-
3 files changed, 1286 insertions(+), 1063 deletions(-)
diff --git a/src/test/regress/expected/planhints.out b/src/test/regress/expected/planhints.out
index 088e453114..029ccec87e 100644
--- a/src/test/regress/expected/planhints.out
+++ b/src/test/regress/expected/planhints.out
@@ -10,38 +10,56 @@ SET search_path=planhints;
SET optimizer_trace_fallback=on;
-- Setup tables
CREATE TABLE my_table(a int, b int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE INDEX my_awesome_index ON my_table(a);
CREATE INDEX my_amazing_index ON my_table(a);
CREATE INDEX my_incredible_index ON my_table(a);
CREATE INDEX my_bitmap_index ON my_table USING bitmap (a);
CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE INDEX your_awesome_index ON your_table(a);
CREATE INDEX your_amazing_index ON your_table(a);
CREATE INDEX your_incredible_index ON your_table(a);
CREATE INDEX your_bitmap_index ON your_table USING bitmap (a);
CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(10) EVERY(3));
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE INDEX our_awesome_index ON our_table(a);
CREATE INDEX our_amazing_index ON our_table(a);
CREATE INDEX our_incredible_index ON our_table(a);
CREATE INDEX our_bitmap_index ON our_table USING bitmap (a);
+ANALYZE my_table;
+ANALYZE your_table;
+ANALYZE our_table;
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
-> Hash
- -> Dynamic Index Scan on our_awesome_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
--------------------------------------------------------------------
--
@@ -54,24 +72,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
SeqScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
-----------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
+ Hash Cond: (t1.a = t2.a)
-> Hash Join
- Hash Cond: (my_table.a = our_table.a)
- -> Seq Scan on my_table
- Filter: (a < 42)
- -> Hash
- -> Dynamic Seq Scan on our_table
- Number of partitions to scan: 4 (out of 4)
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
-> Hash
- -> Seq Scan on your_table
+ -> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: GPORCA
-(15 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan
@@ -80,23 +106,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
IndexScan(t3 our_amazing_index)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Scan using my_incredible_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Scan on our_amazing_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
@@ -105,23 +140,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
IndexScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_bitmap_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Scan on our_awesome_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
IndexOnlyScan(t1 my_incredible_index)
@@ -129,23 +173,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
IndexOnlyScan(t3 our_amazing_index)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
------------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_amazing_index on your_table
- Index Cond: (a < 42)
- -> Index Only Scan using my_incredible_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Only Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Only Scan on our_amazing_index on our_table
+ -> Index Only Scan using your_amazing_index on your_table t2
Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
IndexOnlyScan(t1)
@@ -153,23 +206,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
IndexOnlyScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
------------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Only Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_bitmap_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Only Scan on our_awesome_index on our_table
+ -> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
BitmapScan(t1 my_bitmap_index)
@@ -177,30 +239,44 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
BitmapScan(t3 our_bitmap_index)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
- -> Nested Loop
- Join Filter: true
- -> Dynamic Bitmap Heap Scan on our_table
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index
- Index Cond: (a < 42)
- -> Bitmap Heap Scan on my_table
- Recheck Cond: ((a = our_table.a) AND (a < 42))
- -> Bitmap Index Scan on my_bitmap_index
- Index Cond: ((a = our_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: (a < 42)
-> Hash
- -> Bitmap Heap Scan on your_table
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
-(21 rows)
+ Optimizer: Postgres-based planner
+(35 rows)
/*+
BitmapScan(t1)
@@ -208,30 +284,44 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
BitmapScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
- -> Nested Loop
- Join Filter: true
- -> Dynamic Bitmap Heap Scan on our_table
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index
- Index Cond: (a < 42)
- -> Bitmap Heap Scan on my_table
- Recheck Cond: ((a = our_table.a) AND (a < 42))
- -> Bitmap Index Scan on my_bitmap_index
- Index Cond: ((a = our_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: (a < 42)
-> Hash
- -> Bitmap Heap Scan on your_table
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
-(21 rows)
+ Optimizer: Postgres-based planner
+(35 rows)
--------------------------------------------------------------------
--
@@ -241,62 +331,68 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
/*+
SeqScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
SeqScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on your_table (cost=0.00..431.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
SeqScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Dynamic Seq Scan on our_table (cost=0.00..431.00 rows=1 width=4)
- Number of partitions to scan: 4 (out of 4)
- Filter: (a < 42)
- Optimizer: GPORCA
-(5 rows)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
/*+
IndexScan(t1 my_incredible_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_incredible_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+-----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using my_incredible_index on my_table t1
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
IndexScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+-------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using my_bitmap_index on my_table t1
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -304,200 +400,246 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
--/*+
-- IndexScan(t2 your_amazing_index)
-- */
---EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+--EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
--/*+
-- IndexScan(t2)
-- */
---EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+--EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
IndexScan(t3 our_amazing_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
-----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Scan on our_amazing_index on our_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(5 rows)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
/*+
IndexScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
-----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(5 rows)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
/*+
IndexOnlyScan(t1 my_incredible_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Only Scan using my_incredible_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+----------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using my_incredible_index on my_table t1
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
IndexOnlyScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Only Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+-------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using my_bitmap_index on my_table t1
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
IndexOnlyScan(t2 your_amazing_index)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
- -> Index Only Scan using your_amazing_index on your_table (cost=0.00..6.01 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+-----------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using your_amazing_index on your_table t2
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
IndexOnlyScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
- -> Index Only Scan using your_awesome_index on your_table (cost=0.00..6.01 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+-----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
IndexOnlyScan(t3 our_amazing_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Only Scan on our_amazing_index on our_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(5 rows)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
/*+
IndexOnlyScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Only Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(5 rows)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
/*+
BitmapScan(t1 my_bitmap_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on my_table t1
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on my_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(6 rows)
/*+
BitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on my_table t1
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on my_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(6 rows)
/*+
BitmapScan(t2 your_bitmap_index)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
---------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(6 rows)
/*+
BitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
---------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(6 rows)
/*+
BitmapScan(t3 our_bitmap_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
- -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
- Index Cond: (a < 42)
- Optimizer: GPORCA
-(8 rows)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ Optimizer: Postgres-based planner
+(19 rows)
/*+
BitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
- -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
- Index Cond: (a < 42)
- Optimizer: GPORCA
-(8 rows)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ Optimizer: Postgres-based planner
+(19 rows)
--------------------------------------------------------------------
--
@@ -510,23 +652,32 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
NoSeqScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_bitmap_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Scan on our_awesome_index on our_table
+ -> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
NoIndexScan(t1)
@@ -534,23 +685,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
NoIndexScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
------------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Only Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
-> Hash
- -> Dynamic Index Only Scan on our_awesome_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
NoIndexOnlyScan(t1)
@@ -558,25 +718,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
NoIndexOnlyScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
- -> Nested Loop
- Join Filter: true
- -> Dynamic Index Scan on our_awesome_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- -> Index Scan using my_awesome_index on my_table
- Index Cond: ((a = our_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
-> Hash
- -> Bitmap Heap Scan on your_table
- Recheck Cond: (a < 42)
- -> Bitmap Index Scan on your_bitmap_index
- Index Cond: (a < 42)
- Optimizer: GPORCA
-(16 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
NoBitmapScan(t1)
@@ -584,23 +751,32 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
NoBitmapScan(t3)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
-> Hash
- -> Dynamic Index Scan on our_awesome_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
--------------------------------------------------------------------
--
@@ -618,7 +794,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
@@ -628,21 +804,12 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
NoBitmapScan(t1)
"
DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
- NoIndexOnlyScan(t1)
- NoBitmapScan(t1)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
- NoBitmapScan(t1)
- "
-DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
@@ -650,16 +817,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
- NoIndexOnlyScan(t2)
- NoBitmapScan(t2)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
- NoBitmapScan(t2)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
@@ -669,12 +827,12 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
NoBitmapScan(t2)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on your_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
@@ -682,7 +840,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
@@ -692,23 +850,20 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
NoBitmapScan(t3)
"
DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
- NoIndexOnlyScan(t3)
- NoBitmapScan(t3)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
- NoBitmapScan(t3)
- "
-DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Dynamic Seq Scan on our_table (cost=0.00..431.00 rows=1 width=4)
- Number of partitions to scan: 4 (out of 4)
- Filter: (a < 42)
- Optimizer: GPORCA
-(5 rows)
+ QUERY PLAN
+---------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
--
-- Make IndexScan is only valid plan
@@ -718,16 +873,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
- NoIndexOnlyScan(t1)
- NoBitmapScan(t1)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
- NoBitmapScan(t1)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
@@ -737,12 +883,12 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
NoBitmapScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
----------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Optimizer: GPORCA
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
(4 rows)
/*+
@@ -750,16 +896,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
- NoIndexOnlyScan(t2)
- NoBitmapScan(t2)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
- NoBitmapScan(t2)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
@@ -769,31 +906,20 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
NoBitmapScan(t2)
"
DETAIL: Conflict scan method hint.
-INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because no plan has been computed for required properties in GPORCA
- QUERY PLAN
-----------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..775.42 rows=28700 width=4)
- -> Seq Scan on your_table t2 (cost=0.00..392.75 rows=9567 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table t2
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
-/*+
- NoSeqScan(t3)
- NoIndexOnlyScan(t3)
- NoBitmapScan(t3)
- */
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
- NoIndexOnlyScan(t3)
- NoBitmapScan(t3)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
+/*+
+ NoSeqScan(t3)
+ NoIndexOnlyScan(t3)
NoBitmapScan(t3)
- "
-DETAIL: Conflict scan method hint.
+ */
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
@@ -803,14 +929,20 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
NoBitmapScan(t3)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(5 rows)
+ QUERY PLAN
+---------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
--
-- Make IndexOnlyScan is only valid plan
@@ -820,16 +952,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
- NoIndexScan(t1)
- NoBitmapScan(t1)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
- NoBitmapScan(t1)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
NoIndexScan(t1)
NoBitmapScan(t1)
@@ -839,12 +962,12 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
NoBitmapScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
---------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Only Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Optimizer: GPORCA
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
(4 rows)
/*+
@@ -852,16 +975,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
- NoIndexScan(t2)
- NoBitmapScan(t2)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
- NoBitmapScan(t2)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
NoIndexScan(t2)
NoBitmapScan(t2)
@@ -871,12 +985,12 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
NoBitmapScan(t2)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
- -> Index Only Scan using your_awesome_index on your_table (cost=0.00..6.01 rows=1 width=4)
- Index Cond: (a < 42)
- Optimizer: GPORCA
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
(4 rows)
/*+
@@ -884,16 +998,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
- NoIndexScan(t3)
- NoBitmapScan(t3)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
- NoBitmapScan(t3)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
NoIndexScan(t3)
NoBitmapScan(t3)
@@ -903,14 +1008,20 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
NoBitmapScan(t3)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Only Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(5 rows)
+ QUERY PLAN
+---------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
--
-- Make BitmapScan is only valid plan
@@ -920,16 +1031,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t1)
NoIndexOnlyScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
- NoIndexScan(t1)
- NoIndexOnlyScan(t1)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
- NoIndexOnlyScan(t1)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
NoIndexScan(t1)
NoIndexOnlyScan(t1)
@@ -939,31 +1041,20 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
NoIndexOnlyScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
- Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
- Index Cond: (a < 42)
- Optimizer: GPORCA
-(6 rows)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(4 rows)
/*+
NoSeqScan(t2)
NoIndexScan(t2)
NoIndexOnlyScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
- NoIndexScan(t2)
- NoIndexOnlyScan(t2)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
- NoIndexOnlyScan(t2)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
NoIndexScan(t2)
NoIndexOnlyScan(t2)
@@ -973,31 +1064,20 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
NoIndexOnlyScan(t2)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
---------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
- Recheck Cond: (a < 42)
- -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
- Index Cond: (a < 42)
- Optimizer: GPORCA
-(6 rows)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(4 rows)
/*+
NoSeqScan(t3)
NoIndexScan(t3)
NoIndexOnlyScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
- NoIndexScan(t3)
- NoIndexOnlyScan(t3)
- "
-DETAIL: Conflict scan method hint.
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
- NoIndexOnlyScan(t3)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
NoIndexScan(t3)
NoIndexOnlyScan(t3)
@@ -1007,17 +1087,20 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
NoIndexOnlyScan(t3)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
- -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
- Index Cond: (a < 42)
- Optimizer: GPORCA
-(8 rows)
+ QUERY PLAN
+---------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(11 rows)
--------------------------------------------------------------------
--
@@ -1031,24 +1114,32 @@ CREATE VIEW everybody_view AS SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_
SeqScan(t3)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
-----------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
+ Hash Cond: (t1.a = t2.a)
-> Hash Join
- Hash Cond: (my_table.a = our_table.a)
- -> Seq Scan on my_table
- Filter: (a < 42)
- -> Hash
- -> Dynamic Seq Scan on our_table
- Number of partitions to scan: 4 (out of 4)
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Seq Scan on our_table_1_prt_p1_1 t3
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
-> Hash
- -> Seq Scan on your_table
+ -> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: GPORCA
-(15 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
@@ -1057,23 +1148,32 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
IndexScan(t3 our_amazing_index)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Scan using my_incredible_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Scan on our_amazing_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
@@ -1082,23 +1182,32 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
IndexScan(t3)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
---------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_bitmap_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Scan on our_awesome_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
IndexOnlyScan(t1 my_incredible_index)
@@ -1106,23 +1215,32 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
IndexOnlyScan(t3 our_amazing_index)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
------------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_amazing_index on your_table
- Index Cond: (a < 42)
- -> Index Only Scan using my_incredible_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Only Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Only Scan on our_amazing_index on our_table
+ -> Index Only Scan using your_amazing_index on your_table t2
Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
IndexOnlyScan(t1)
@@ -1130,23 +1248,32 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
IndexOnlyScan(t3)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
------------------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (your_table.a = our_table.a)
- -> Nested Loop
- Join Filter: true
- -> Index Only Scan using your_awesome_index on your_table
- Index Cond: (a < 42)
- -> Index Only Scan using my_awesome_index on my_table
- Index Cond: ((a = your_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_bitmap_index on my_table t1
+ Index Cond: (a < 42)
-> Hash
- -> Dynamic Index Only Scan on our_awesome_index on our_table
+ -> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- Optimizer: GPORCA
-(14 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
BitmapScan(t1 my_bitmap_index)
@@ -1154,30 +1281,44 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
BitmapScan(t3 our_bitmap_index)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
- -> Nested Loop
- Join Filter: true
- -> Dynamic Bitmap Heap Scan on our_table
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index
- Index Cond: (a < 42)
- -> Bitmap Heap Scan on my_table
- Recheck Cond: ((a = our_table.a) AND (a < 42))
- -> Bitmap Index Scan on my_bitmap_index
- Index Cond: ((a = our_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: (a < 42)
-> Hash
- -> Bitmap Heap Scan on your_table
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
-(21 rows)
+ Optimizer: Postgres-based planner
+(35 rows)
/*+
BitmapScan(t1)
@@ -1185,30 +1326,44 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
BitmapScan(t3)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
- -> Nested Loop
- Join Filter: true
- -> Dynamic Bitmap Heap Scan on our_table
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index
- Index Cond: (a < 42)
- -> Bitmap Heap Scan on my_table
- Recheck Cond: ((a = our_table.a) AND (a < 42))
- -> Bitmap Index Scan on my_bitmap_index
- Index Cond: ((a = our_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: (a < 42)
-> Hash
- -> Bitmap Heap Scan on your_table
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
-(21 rows)
+ Optimizer: Postgres-based planner
+(35 rows)
--------------------------------------------------------------------
--
@@ -1225,24 +1380,32 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
-----------------------------------------------------------------------
+ QUERY PLAN
+---------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
+ Hash Cond: (t1.a = t2.a)
-> Hash Join
- Hash Cond: (my_table.a = our_table.a)
- -> Seq Scan on my_table
- Filter: (a < 42)
- -> Hash
- -> Dynamic Seq Scan on our_table
- Number of partitions to scan: 4 (out of 4)
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Seq Scan on our_table_1_prt_p1_1 t3
Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ Filter: (a < 42)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ Filter: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
-> Hash
- -> Seq Scan on your_table
+ -> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: GPORCA
-(15 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
@@ -1255,22 +1418,32 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
-------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- Join Filter: true
- -> Nested Loop
- Join Filter: true
- -> Dynamic Index Scan on our_amazing_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- -> Index Scan using my_incredible_index on my_table
- Index Cond: ((a = our_table.a) AND (a < 42))
- -> Index Only Scan using your_incredible_index on your_table
- Index Cond: ((a = my_table.a) AND (a < 42))
- Optimizer: GPORCA
-(13 rows)
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
+ -> Hash
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
@@ -1283,22 +1456,32 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
-------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- Join Filter: true
- -> Nested Loop
- Join Filter: true
- -> Dynamic Index Scan on our_awesome_index on our_table
- Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- -> Index Scan using my_awesome_index on my_table
- Index Cond: ((a = our_table.a) AND (a < 42))
- -> Index Only Scan using your_incredible_index on your_table
- Index Cond: ((a = my_table.a) AND (a < 42))
- Optimizer: GPORCA
-(13 rows)
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_bitmap_index on my_table t1
+ Index Cond: (a < 42)
+ -> Hash
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
IndexOnlyScan(t1 my_incredible_index)
@@ -1310,22 +1493,32 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- Join Filter: true
- -> Nested Loop
- Join Filter: true
- -> Dynamic Index Only Scan on our_amazing_index on our_table
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Only Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
+ -> Hash
+ -> Index Only Scan using your_amazing_index on your_table t2
Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- -> Index Only Scan using my_incredible_index on my_table
- Index Cond: ((a = our_table.a) AND (a < 42))
- -> Index Only Scan using your_amazing_index on your_table
- Index Cond: ((a = my_table.a) AND (a < 42))
- Optimizer: GPORCA
-(13 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
IndexOnlyScan(t1)
@@ -1337,22 +1530,32 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- Join Filter: true
- -> Nested Loop
- Join Filter: true
- -> Dynamic Index Only Scan on our_awesome_index on our_table
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ Index Cond: (a < 42)
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Index Scan using my_bitmap_index on my_table t1
+ Index Cond: (a < 42)
+ -> Hash
+ -> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Number of partitions to scan: 4 (out of 4)
- -> Index Only Scan using my_awesome_index on my_table
- Index Cond: ((a = our_table.a) AND (a < 42))
- -> Index Only Scan using your_incredible_index on your_table
- Index Cond: ((a = my_table.a) AND (a < 42))
- Optimizer: GPORCA
-(13 rows)
+ Optimizer: Postgres-based planner
+(23 rows)
/*+
BitmapScan(t1 my_bitmap_index)
@@ -1364,30 +1567,44 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
- -> Nested Loop
- Join Filter: true
- -> Dynamic Bitmap Heap Scan on our_table
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index
- Index Cond: (a < 42)
- -> Bitmap Heap Scan on my_table
- Recheck Cond: ((a = our_table.a) AND (a < 42))
- -> Bitmap Index Scan on my_bitmap_index
- Index Cond: ((a = our_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: (a < 42)
-> Hash
- -> Bitmap Heap Scan on your_table
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
-(21 rows)
+ Optimizer: Postgres-based planner
+(35 rows)
/*+
BitmapScan(t1)
@@ -1399,30 +1616,44 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (my_table.a = your_table.a)
- -> Nested Loop
- Join Filter: true
- -> Dynamic Bitmap Heap Scan on our_table
- Number of partitions to scan: 4 (out of 4)
- Recheck Cond: (a < 42)
- Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index
- Index Cond: (a < 42)
- -> Bitmap Heap Scan on my_table
- Recheck Cond: ((a = our_table.a) AND (a < 42))
- -> Bitmap Index Scan on my_bitmap_index
- Index Cond: ((a = our_table.a) AND (a < 42))
+ Hash Cond: (t1.a = t2.a)
+ -> Hash Join
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: (a < 42)
-> Hash
- -> Bitmap Heap Scan on your_table
+ -> Bitmap Heap Scan on your_table t2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: GPORCA
-(21 rows)
+ Optimizer: Postgres-based planner
+(35 rows)
--------------------------------------------------------------------
--
@@ -1432,43 +1663,39 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
/*+
TidScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Operator Unsupported plan hint: TidScan not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
- Filter: (a < 42)
+EXPLAIN (costs off) SELECT t1.ctid FROM my_table AS t1 WHERE ctid = '(0,1)';
+NOTICE: SELECT uses system-defined column "t1.ctid" without the necessary companion column "t1.gp_segment_id"
+HINT: To uniquely identify a row within a distributed table, use the "gp_segment_id" column together with the "ctid" column.
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Tid Scan on my_table t1
+ TID Cond: (ctid = '(0,1)'::tid)
Optimizer: Postgres-based planner
(4 rows)
/*+
NoTidScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Operator Unsupported plan hint: NoTidScan not supported
- QUERY PLAN
------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=225.64..761.89 rows=28700 width=4)
- -> Bitmap Heap Scan on my_table t1 (cost=225.64..379.23 rows=9567 width=4)
- Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..223.25 rows=9567 width=0)
- Index Cond: (a < 42)
+EXPLAIN (costs off) SELECT t1.ctid FROM my_table AS t1 WHERE ctid >= '(0,1)';
+NOTICE: SELECT uses system-defined column "t1.ctid" without the necessary companion column "t1.gp_segment_id"
+HINT: To uniquely identify a row within a distributed table, use the "gp_segment_id" column together with the "ctid" column.
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
+ Filter: (ctid >= '(0,1)'::tid)
Optimizer: Postgres-based planner
-(6 rows)
+(4 rows)
/*+
IndexScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Operator Unsupported plan hint: IndexScanRegexp not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
@@ -1476,13 +1703,11 @@ DETAIL: Operator Unsupported plan hint: IndexScanRegexp not supported
/*+
IndexOnlyScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Operator Unsupported plan hint: IndexOnlyScanRegexp not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
@@ -1490,13 +1715,11 @@ DETAIL: Operator Unsupported plan hint: IndexOnlyScanRegexp not supported
/*+
BitmapScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Operator Unsupported plan hint: BitmapScanRegexp not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
@@ -1510,55 +1733,46 @@ DETAIL: Operator Unsupported plan hint: BitmapScanRegexp not supported
/*+
SeqScan()
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "
- "
-DETAIL: SeqScan hint requires a relation.
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "
"
DETAIL: SeqScan hint requires a relation.
- QUERY PLAN
----------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a < 42)
- Optimizer: GPORCA
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
(4 rows)
-- Mixing NoIndexScan and SeqScan hints
/*+
SeqScan(t1) NoIndexScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t1) NoIndexScan(t1)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t1) NoIndexScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
/*+
NoIndexScan(t1) SeqScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1) SeqScan(t1)
- "
-DETAIL: Conflict scan method hint.
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1) SeqScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: GPORCA
+ Optimizer: Postgres-based planner
(4 rows)
diff --git a/src/test/regress/expected/planhints.out b/src/test/regress/expected/planhints_optimizer.out
similarity index 73%
copy from src/test/regress/expected/planhints.out
copy to src/test/regress/expected/planhints_optimizer.out
index 088e453114..d2a4c54cc0 100644
--- a/src/test/regress/expected/planhints.out
+++ b/src/test/regress/expected/planhints_optimizer.out
@@ -24,6 +24,9 @@ CREATE INDEX our_awesome_index ON our_table(a);
CREATE INDEX our_amazing_index ON our_table(a);
CREATE INDEX our_incredible_index ON our_table(a);
CREATE INDEX our_bitmap_index ON our_table USING bitmap (a);
+ANALYZE my_table;
+ANALYZE your_table;
+ANALYZE our_table;
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
QUERY PLAN
--------------------------------------------------------------------------
@@ -241,11 +244,11 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
/*+
SeqScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table
Filter: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -253,11 +256,11 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
SeqScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on your_table (cost=0.00..431.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table
Filter: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -265,11 +268,11 @@ EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
SeqScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Dynamic Seq Scan on our_table (cost=0.00..431.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on our_table
Number of partitions to scan: 4 (out of 4)
Filter: (a < 42)
Optimizer: GPORCA
@@ -278,11 +281,11 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexScan(t1 my_incredible_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_incredible_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using my_incredible_index on my_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -290,11 +293,11 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
IndexScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+-----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using my_awesome_index on my_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -304,21 +307,21 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
--/*+
-- IndexScan(t2 your_amazing_index)
-- */
---EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+--EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
--/*+
-- IndexScan(t2)
-- */
---EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+--EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
IndexScan(t3 our_amazing_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
-----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Scan on our_amazing_index on our_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Index Scan on our_amazing_index on our_table
Index Cond: (a < 42)
Number of partitions to scan: 4 (out of 4)
Optimizer: GPORCA
@@ -327,11 +330,11 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
-----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Index Scan on our_awesome_index on our_table
Index Cond: (a < 42)
Number of partitions to scan: 4 (out of 4)
Optimizer: GPORCA
@@ -340,11 +343,11 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexOnlyScan(t1 my_incredible_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Only Scan using my_incredible_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+-------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using my_incredible_index on my_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -352,11 +355,11 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
IndexOnlyScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Only Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using my_awesome_index on my_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -364,11 +367,11 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
IndexOnlyScan(t2 your_amazing_index)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
- -> Index Only Scan using your_amazing_index on your_table (cost=0.00..6.01 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+--------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using your_amazing_index on your_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -376,11 +379,11 @@ EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
IndexOnlyScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
- -> Index Only Scan using your_awesome_index on your_table (cost=0.00..6.01 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+--------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using your_awesome_index on your_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -388,11 +391,11 @@ EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
IndexOnlyScan(t3 our_amazing_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Only Scan on our_amazing_index on our_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+-----------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Index Only Scan on our_amazing_index on our_table
Index Cond: (a < 42)
Number of partitions to scan: 4 (out of 4)
Optimizer: GPORCA
@@ -401,11 +404,11 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexOnlyScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Only Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+-----------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Index Only Scan on our_awesome_index on our_table
Index Cond: (a < 42)
Number of partitions to scan: 4 (out of 4)
Optimizer: GPORCA
@@ -414,13 +417,13 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
BitmapScan(t1 my_bitmap_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on my_table
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on my_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(6 rows)
@@ -428,13 +431,13 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
BitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on my_table
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on my_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(6 rows)
@@ -442,13 +445,13 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
BitmapScan(t2 your_bitmap_index)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
---------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on your_table
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(6 rows)
@@ -456,13 +459,13 @@ EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
BitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
---------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on your_table
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(6 rows)
@@ -470,15 +473,15 @@ EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
BitmapScan(t3 our_bitmap_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
- -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+-----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Bitmap Heap Scan on our_table
Number of partitions to scan: 4 (out of 4)
Recheck Cond: (a < 42)
Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(8 rows)
@@ -486,15 +489,15 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
BitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
- QUERY PLAN
----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
- -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+-----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Bitmap Heap Scan on our_table
Number of partitions to scan: 4 (out of 4)
Recheck Cond: (a < 42)
Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(8 rows)
@@ -618,7 +621,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
@@ -637,10 +640,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
NoBitmapScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table
Filter: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -650,7 +653,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
@@ -669,10 +672,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
NoBitmapScan(t2)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on your_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table
Filter: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -682,7 +685,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
@@ -701,10 +704,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
NoBitmapScan(t3)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Dynamic Seq Scan on our_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on our_table
Number of partitions to scan: 4 (out of 4)
Filter: (a < 42)
Optimizer: GPORCA
@@ -718,7 +721,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
@@ -737,10 +740,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
NoBitmapScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
----------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ QUERY PLAN
+-----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using my_awesome_index on my_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -750,7 +753,7 @@ DETAIL: Conflict scan method hint.
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
@@ -771,10 +774,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
DETAIL: Conflict scan method hint.
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because no plan has been computed for required properties in GPORCA
- QUERY PLAN
-----------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..775.42 rows=28700 width=4)
- -> Seq Scan on your_table t2 (cost=0.00..392.75 rows=9567 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on your_table t2
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
@@ -784,7 +787,7 @@ DETAIL: Falling back to Postgres-based planner because no plan has been compute
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
@@ -803,10 +806,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
NoBitmapScan(t3)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Index Scan on our_awesome_index on our_table
Index Cond: (a < 42)
Number of partitions to scan: 4 (out of 4)
Optimizer: GPORCA
@@ -820,7 +823,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
NoIndexScan(t1)
NoBitmapScan(t1)
@@ -839,10 +842,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
NoBitmapScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
---------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Only Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ QUERY PLAN
+----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using my_awesome_index on my_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -852,7 +855,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
NoIndexScan(t2)
NoBitmapScan(t2)
@@ -871,10 +874,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
NoBitmapScan(t2)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
- -> Index Only Scan using your_awesome_index on your_table (cost=0.00..6.01 rows=1 width=4)
+ QUERY PLAN
+--------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Only Scan using your_awesome_index on your_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -884,7 +887,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
NoIndexScan(t3)
NoBitmapScan(t3)
@@ -903,10 +906,10 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
NoBitmapScan(t3)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Dynamic Index Only Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ QUERY PLAN
+-----------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Index Only Scan on our_awesome_index on our_table
Index Cond: (a < 42)
Number of partitions to scan: 4 (out of 4)
Optimizer: GPORCA
@@ -920,7 +923,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t1)
NoIndexOnlyScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
NoIndexScan(t1)
NoIndexOnlyScan(t1)
@@ -939,12 +942,12 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
NoIndexOnlyScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+ QUERY PLAN
+--------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on my_table
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on my_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(6 rows)
@@ -954,7 +957,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t2)
NoIndexOnlyScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
NoIndexScan(t2)
NoIndexOnlyScan(t2)
@@ -973,12 +976,12 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
NoIndexOnlyScan(t2)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
---------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
- -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Bitmap Heap Scan on your_table
Recheck Cond: (a < 42)
- -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(6 rows)
@@ -988,7 +991,7 @@ DETAIL: Conflict scan method hint.
NoIndexScan(t3)
NoIndexOnlyScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
NoIndexScan(t3)
NoIndexOnlyScan(t3)
@@ -1007,14 +1010,14 @@ INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
NoIndexOnlyScan(t3)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
----------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
- -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
+ QUERY PLAN
+-----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Bitmap Heap Scan on our_table
Number of partitions to scan: 4 (out of 4)
Recheck Cond: (a < 42)
Filter: (a < 42)
- -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
Index Cond: (a < 42)
Optimizer: GPORCA
(8 rows)
@@ -1432,43 +1435,45 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
/*+
TidScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.ctid FROM my_table AS t1 WHERE ctid = '(0,1)';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: TidScan not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
- Filter: (a < 42)
+NOTICE: SELECT uses system-defined column "t1.ctid" without the necessary companion column "t1.gp_segment_id"
+HINT: To uniquely identify a row within a distributed table, use the "gp_segment_id" column together with the "ctid" column.
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Tid Scan on my_table t1
+ TID Cond: (ctid = '(0,1)'::tid)
Optimizer: Postgres-based planner
(4 rows)
/*+
NoTidScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.ctid FROM my_table AS t1 WHERE ctid >= '(0,1)';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: NoTidScan not supported
- QUERY PLAN
------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=225.64..761.89 rows=28700 width=4)
- -> Bitmap Heap Scan on my_table t1 (cost=225.64..379.23 rows=9567 width=4)
- Recheck Cond: (a < 42)
- -> Bitmap Index Scan on my_bitmap_index (cost=0.00..223.25 rows=9567 width=0)
- Index Cond: (a < 42)
+NOTICE: SELECT uses system-defined column "t1.ctid" without the necessary companion column "t1.gp_segment_id"
+HINT: To uniquely identify a row within a distributed table, use the "gp_segment_id" column together with the "ctid" column.
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
+ Filter: (ctid >= '(0,1)'::tid)
Optimizer: Postgres-based planner
-(6 rows)
+(4 rows)
/*+
IndexScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: IndexScanRegexp not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
@@ -1476,13 +1481,13 @@ DETAIL: Operator Unsupported plan hint: IndexScanRegexp not supported
/*+
IndexOnlyScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: IndexOnlyScanRegexp not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
@@ -1490,13 +1495,13 @@ DETAIL: Operator Unsupported plan hint: IndexOnlyScanRegexp not supported
/*+
BitmapScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: BitmapScanRegexp not supported
- QUERY PLAN
-----------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
- -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table t1
Filter: (a < 42)
Optimizer: Postgres-based planner
(4 rows)
@@ -1510,17 +1515,17 @@ DETAIL: Operator Unsupported plan hint: BitmapScanRegexp not supported
/*+
SeqScan()
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "
"
DETAIL: SeqScan hint requires a relation.
INFO: pg_hint_plan: hint syntax error at or near "
"
DETAIL: SeqScan hint requires a relation.
- QUERY PLAN
----------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
- -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ QUERY PLAN
+-----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Index Scan using my_awesome_index on my_table
Index Cond: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -1529,17 +1534,17 @@ DETAIL: SeqScan hint requires a relation.
/*+
SeqScan(t1) NoIndexScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t1) NoIndexScan(t1)
"
DETAIL: Conflict scan method hint.
INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t1) NoIndexScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table
Filter: (a < 42)
Optimizer: GPORCA
(4 rows)
@@ -1547,17 +1552,17 @@ DETAIL: Conflict scan method hint.
/*+
NoIndexScan(t1) SeqScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1) SeqScan(t1)
"
DETAIL: Conflict scan method hint.
INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1) SeqScan(t1)
"
DETAIL: Conflict scan method hint.
- QUERY PLAN
-------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
- -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on my_table
Filter: (a < 42)
Optimizer: GPORCA
(4 rows)
diff --git a/src/test/regress/sql/planhints.sql b/src/test/regress/sql/planhints.sql
index 5fadee39c2..3846bd3b18 100644
--- a/src/test/regress/sql/planhints.sql
+++ b/src/test/regress/sql/planhints.sql
@@ -30,6 +30,10 @@ CREATE INDEX our_amazing_index ON our_table(a);
CREATE INDEX our_incredible_index ON our_table(a);
CREATE INDEX our_bitmap_index ON our_table USING bitmap (a);
+ANALYZE my_table;
+ANALYZE your_table;
+ANALYZE our_table;
+
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
--------------------------------------------------------------------
@@ -99,111 +103,111 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
/*+
SeqScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
SeqScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
SeqScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexScan(t1 my_incredible_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
IndexScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
--/*+
-- IndexScan(t2 your_amazing_index)
-- */
---EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+--EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
-- NB: IndexScan on AO table is invalid because AO tables do not support index
-- scan (e.g. t2)
--/*+
-- IndexScan(t2)
-- */
---EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+--EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
IndexScan(t3 our_amazing_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexOnlyScan(t1 my_incredible_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
IndexOnlyScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
IndexOnlyScan(t2 your_amazing_index)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
IndexOnlyScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
IndexOnlyScan(t3 our_amazing_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
IndexOnlyScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
BitmapScan(t1 my_bitmap_index)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
BitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
BitmapScan(t2 your_bitmap_index)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
BitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
BitmapScan(t3 our_bitmap_index)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
/*+
BitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--------------------------------------------------------------------
@@ -258,21 +262,21 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
NoIndexScan(t2)
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
NoIndexScan(t3)
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--
-- Make IndexScan is only valid plan
@@ -282,21 +286,21 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
NoIndexOnlyScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
NoSeqScan(t2)
NoIndexOnlyScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
NoSeqScan(t3)
NoIndexOnlyScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--
-- Make IndexOnlyScan is only valid plan
@@ -306,21 +310,21 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
NoIndexScan(t1)
NoBitmapScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
NoSeqScan(t2)
NoIndexScan(t2)
NoBitmapScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
NoSeqScan(t3)
NoIndexScan(t3)
NoBitmapScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--
-- Make BitmapScan is only valid plan
@@ -330,21 +334,21 @@ EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
NoIndexScan(t1)
NoIndexOnlyScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
NoSeqScan(t2)
NoIndexScan(t2)
NoIndexOnlyScan(t2)
*/
-EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
/*+
NoSeqScan(t3)
NoIndexScan(t3)
NoIndexOnlyScan(t3)
*/
-EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--------------------------------------------------------------------
--
@@ -500,27 +504,27 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
/*+
TidScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.ctid FROM my_table AS t1 WHERE ctid = '(0,1)';
/*+
NoTidScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.ctid FROM my_table AS t1 WHERE ctid >= '(0,1)';
/*+
IndexScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
IndexOnlyScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
BitmapScanRegexp(t1 '*awesome*')
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
--------------------------------------------------------------------
@@ -533,14 +537,14 @@ EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
SeqScan()
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
-- Mixing NoIndexScan and SeqScan hints
/*+
SeqScan(t1) NoIndexScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
/*+
NoIndexScan(t1) SeqScan(t1)
*/
-EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 02/30: [ORCA] Update DeriveTableDescriptor to return set of descriptors
Posted by ma...@apache.org.
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 940bf22d5e5a1e594052da932f7af84d2e62781b
Author: David Kimura <dk...@vmware.com>
AuthorDate: Tue Dec 19 22:28:18 2023 +0000
[ORCA] Update DeriveTableDescriptor to return set of descriptors
Prior to this commit, DeriveTableDescriptor was limited to returning a
single table descriptor. However, there are operators that may contain
more than one table descriptor (e.g. CLogicalNAryJoin). Instead, NULL
was returned for simplicity.
There are use cases that require deriving multiple table descriptors
(e.g. join hints). This commit changes DeriveTableDescriptor to return a
set of all table descriptors.
---
.../include/gpopt/base/CDrvdPropRelational.h | 6 ++--
.../include/gpopt/metadata/CTableDescriptor.h | 14 ++++++++
.../libgpopt/include/gpopt/operators/CExpression.h | 2 +-
.../include/gpopt/operators/CExpressionHandle.h | 4 +--
.../libgpopt/include/gpopt/operators/CLogical.h | 2 +-
.../gpopt/operators/CLogicalBitmapTableGet.h | 11 +++---
.../include/gpopt/operators/CLogicalCTEConsumer.h | 2 +-
.../include/gpopt/operators/CLogicalCTEProducer.h | 2 +-
.../include/gpopt/operators/CLogicalDynamicGet.h | 5 +--
.../gpopt/operators/CLogicalDynamicGetBase.h | 9 ++---
.../include/gpopt/operators/CLogicalGbAgg.h | 10 ++++++
.../libgpopt/include/gpopt/operators/CLogicalGet.h | 12 ++++---
.../include/gpopt/operators/CLogicalNAryJoin.h | 4 +++
.../include/gpopt/operators/CLogicalProject.h | 10 ++++++
.../include/gpopt/operators/CLogicalSelect.h | 7 ++--
.../libgpopt/src/base/CDrvdPropRelational.cpp | 17 ++++++---
src/backend/gporca/libgpopt/src/base/CUtils.cpp | 2 +-
.../libgpopt/src/metadata/CTableDescriptor.cpp | 28 +++++++++++++++
.../gporca/libgpopt/src/operators/CExpression.cpp | 2 +-
.../libgpopt/src/operators/CExpressionHandle.cpp | 4 +--
.../gporca/libgpopt/src/operators/CLogical.cpp | 8 ++---
.../src/operators/CLogicalBitmapTableGet.cpp | 16 +++++----
.../libgpopt/src/operators/CLogicalCTEConsumer.cpp | 8 +++--
.../libgpopt/src/operators/CLogicalCTEProducer.cpp | 9 +++--
.../operators/CLogicalDynamicBitmapTableGet.cpp | 10 +++---
.../src/operators/CLogicalDynamicForeignGet.cpp | 8 ++---
.../libgpopt/src/operators/CLogicalDynamicGet.cpp | 12 +++----
.../src/operators/CLogicalDynamicGetBase.cpp | 26 ++++++++------
.../src/operators/CLogicalDynamicIndexGet.cpp | 4 +--
.../gporca/libgpopt/src/operators/CLogicalGet.cpp | 42 ++++++++++++----------
.../libgpopt/src/operators/CLogicalNAryJoin.cpp | 27 ++++++++++++++
.../gporca/libgpopt/src/xforms/CJoinOrderDPv2.cpp | 6 ++--
.../gporca/libgpopt/src/xforms/CXformUtils.cpp | 14 +++++---
.../gporca/libgpos/include/gpos/common/CHashSet.h | 11 ++++++
.../src/statistics/CStatisticsUtils.cpp | 5 ++-
35 files changed, 253 insertions(+), 106 deletions(-)
diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h b/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h
index 1a2f4f1e11..ad88ece79f 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/base/CDrvdPropRelational.h
@@ -109,7 +109,7 @@ private:
// function properties
CFunctionProp *m_pfp;
- CTableDescriptor *m_table_descriptor;
+ CTableDescriptorHashSet *m_table_descriptor{nullptr};
// helper for getting applicable FDs from child
static CFunctionalDependencyArray *DeriveChildFunctionalDependencies(
@@ -167,7 +167,7 @@ protected:
// function properties
CFunctionProp *DeriveFunctionProperties(CExpressionHandle &);
- CTableDescriptor *DeriveTableDescriptor(CExpressionHandle &);
+ CTableDescriptorHashSet *DeriveTableDescriptor(CExpressionHandle &);
public:
CDrvdPropRelational(const CDrvdPropRelational &) = delete;
@@ -228,7 +228,7 @@ public:
// function properties
CFunctionProp *GetFunctionProperties() const;
- CTableDescriptor *GetTableDescriptor() const;
+ CTableDescriptorHashSet *GetTableDescriptor() const;
// shorthand for conversion
static CDrvdPropRelational *GetRelationalProperties(CDrvdProp *pdp);
diff --git a/src/backend/gporca/libgpopt/include/gpopt/metadata/CTableDescriptor.h b/src/backend/gporca/libgpopt/include/gpopt/metadata/CTableDescriptor.h
index cb5aa1583f..9ef2184600 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/metadata/CTableDescriptor.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/metadata/CTableDescriptor.h
@@ -251,7 +251,21 @@ public:
return m_assigned_query_id_for_target_rel;
}
+ static ULONG HashValue(const CTableDescriptor *ptabdesc);
+
+ static BOOL Equals(const CTableDescriptor *ptabdescLeft,
+ const CTableDescriptor *ptabdescRight);
+
}; // class CTableDescriptor
+
+using CTableDescriptorHashSet =
+ CHashSet<CTableDescriptor, CTableDescriptor::HashValue,
+ CTableDescriptor::Equals, CleanupRelease<CTableDescriptor>>;
+using CTableDescriptorHashSetIter =
+ CHashSetIter<CTableDescriptor, CTableDescriptor::HashValue,
+ CTableDescriptor::Equals, CleanupRelease<CTableDescriptor>>;
+
+
} // namespace gpopt
#endif // !GPOPT_CTableDescriptor_H
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CExpression.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CExpression.h
index 16b5d105f6..bba2897db8 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CExpression.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CExpression.h
@@ -292,7 +292,7 @@ public:
CFunctionProp *DeriveFunctionProperties();
CFunctionalDependencyArray *DeriveFunctionalDependencies();
CPartInfo *DerivePartitionInfo();
- CTableDescriptor *DeriveTableDescriptor();
+ CTableDescriptorHashSet *DeriveTableDescriptor();
// Scalar property accessors - derived as needed
CColRefSet *DeriveDefinedColumns();
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CExpressionHandle.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CExpressionHandle.h
index 9046469077..fbef560d17 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CExpressionHandle.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CExpressionHandle.h
@@ -323,8 +323,8 @@ public:
CPartInfo *DerivePartitionInfo() const;
CPartInfo *DerivePartitionInfo(ULONG child_index) const;
- CTableDescriptor *DeriveTableDescriptor() const;
- CTableDescriptor *DeriveTableDescriptor(ULONG child_index) const;
+ CTableDescriptorHashSet *DeriveTableDescriptor() const;
+ CTableDescriptorHashSet *DeriveTableDescriptor(ULONG child_index) const;
// Scalar property accessors
CColRefSet *DeriveDefinedColumns(ULONG child_index) const;
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogical.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogical.h
index 1fcf5f5d14..1152b65d2d 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogical.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogical.h
@@ -255,7 +255,7 @@ public:
virtual CFunctionProp *DeriveFunctionProperties(
CMemoryPool *mp, CExpressionHandle &exprhdl) const;
- virtual CTableDescriptor *DeriveTableDescriptor(
+ virtual CTableDescriptorHashSet *DeriveTableDescriptor(
CMemoryPool *mp, CExpressionHandle &exprhdl) const;
//-------------------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalBitmapTableGet.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalBitmapTableGet.h
index 2858b3efcb..4381fb9833 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalBitmapTableGet.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalBitmapTableGet.h
@@ -40,7 +40,7 @@ class CLogicalBitmapTableGet : public CLogical
{
private:
// table descriptor
- CTableDescriptor *m_ptabdesc;
+ CTableDescriptorHashSet *m_ptabdesc;
// origin operator id -- gpos::ulong_max if operator was not generated via a transformation
ULONG m_ulOriginOpId;
@@ -70,7 +70,7 @@ public:
CTableDescriptor *
Ptabdesc() const
{
- return m_ptabdesc;
+ return m_ptabdesc->First();
}
// table alias
@@ -157,11 +157,12 @@ public:
}
// derive table descriptor
- CTableDescriptor *
- DeriveTableDescriptor(CMemoryPool *, // mp
- CExpressionHandle & // exprhdl
+ CTableDescriptorHashSet *
+ DeriveTableDescriptor(CMemoryPool *mp GPOS_UNUSED, // mp
+ CExpressionHandle & // exprhdl
) const override
{
+ m_ptabdesc->AddRef();
return m_ptabdesc;
}
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEConsumer.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEConsumer.h
index f7e09768cf..650d19544a 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEConsumer.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEConsumer.h
@@ -146,7 +146,7 @@ public:
CExpressionHandle &exprhdl) const override;
// derive table descriptor
- CTableDescriptor *DeriveTableDescriptor(
+ CTableDescriptorHashSet *DeriveTableDescriptor(
CMemoryPool *mp, CExpressionHandle &exprhdl) const override;
// compute required stats columns of the n-th child
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEProducer.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEProducer.h
index 868017265e..812db8c9db 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEProducer.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalCTEProducer.h
@@ -138,7 +138,7 @@ public:
return PpartinfoPassThruOuter(exprhdl);
}
- CTableDescriptor *DeriveTableDescriptor(
+ CTableDescriptorHashSet *DeriveTableDescriptor(
CMemoryPool *mp, CExpressionHandle &exprhdl) const override;
// compute required stats columns of the n-th child
CColRefSet *
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h
index da5d6f2905..516087b429 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h
@@ -131,11 +131,12 @@ public:
}
// derive table descriptor
- CTableDescriptor *
- DeriveTableDescriptor(CMemoryPool *, // mp
+ CTableDescriptorHashSet *
+ DeriveTableDescriptor(CMemoryPool *mp GPOS_UNUSED,
CExpressionHandle & // exprhdl
) const override
{
+ m_ptabdesc->AddRef();
return m_ptabdesc;
}
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGetBase.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGetBase.h
index 3f097800dc..534f40ba96 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGetBase.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGetBase.h
@@ -37,7 +37,7 @@ protected:
const CName *m_pnameAlias;
// table descriptor
- CTableDescriptor *m_ptabdesc;
+ CTableDescriptorHashSet *m_ptabdesc;
// dynamic scan id
ULONG m_scan_id;
@@ -117,7 +117,7 @@ public:
virtual CTableDescriptor *
Ptabdesc() const
{
- return m_ptabdesc;
+ return m_ptabdesc->First();
}
// return scan id
@@ -164,11 +164,12 @@ public:
}
// derive table descriptor
- CTableDescriptor *
- DeriveTableDescriptor(CMemoryPool *, // mp
+ CTableDescriptorHashSet *
+ DeriveTableDescriptor(CMemoryPool *mp GPOS_UNUSED,
CExpressionHandle & // exprhdl
) const override
{
+ m_ptabdesc->AddRef();
return m_ptabdesc;
}
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGbAgg.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGbAgg.h
index a7f1b01c20..6193ceeb71 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGbAgg.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGbAgg.h
@@ -261,6 +261,16 @@ public:
static IOstream &OsPrintGbAggType(IOstream &os,
COperator::EGbAggType egbaggtype);
+ CTableDescriptorHashSet *
+ DeriveTableDescriptor(CMemoryPool *,
+ CExpressionHandle &exprhdl) const override
+ {
+ CTableDescriptorHashSet *table_descriptor_set =
+ exprhdl.DeriveTableDescriptor(0);
+ table_descriptor_set->AddRef();
+ return table_descriptor_set;
+ }
+
private:
// array of grouping columns
CColRefArray *m_pdrgpcr;
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h
index 1dc5b00b95..5ce4a328b4 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h
@@ -37,7 +37,7 @@ private:
const CName *m_pnameAlias;
// table descriptor
- CTableDescriptor *m_ptabdesc;
+ CTableDescriptorHashSet *m_ptabdesc;
// output columns
CColRefArray *m_pdrgpcrOutput;
@@ -105,7 +105,7 @@ public:
CTableDescriptor *
Ptabdesc() const
{
- return m_ptabdesc;
+ return m_ptabdesc->First();
}
// partition columns
@@ -156,7 +156,8 @@ public:
CExpressionHandle & // exprhdl
) const override
{
- return PpcDeriveConstraintFromTable(mp, m_ptabdesc, m_pdrgpcrOutput);
+ return PpcDeriveConstraintFromTable(mp, m_ptabdesc->First(),
+ m_pdrgpcrOutput);
}
// derive join depth
@@ -169,11 +170,12 @@ public:
}
// derive table descriptor
- CTableDescriptor *
- DeriveTableDescriptor(CMemoryPool *, // mp
+ CTableDescriptorHashSet *
+ DeriveTableDescriptor(CMemoryPool *mp GPOS_UNUSED,
CExpressionHandle & // exprhdl
) const override
{
+ m_ptabdesc->AddRef();
return m_ptabdesc;
}
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h
index 7e2f6e07d7..6f5dafa192 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalNAryJoin.h
@@ -86,6 +86,10 @@ public:
CPropConstraint *DerivePropertyConstraint(
CMemoryPool *mp, CExpressionHandle &exprhdl) const override;
+ // derive table descriptor
+ CTableDescriptorHashSet *DeriveTableDescriptor(
+ CMemoryPool *mp, CExpressionHandle &exprhdl) const override;
+
//-------------------------------------------------------------------------------------
// Derived Stats
//-------------------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalProject.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalProject.h
index 0212ffda3e..eddb99c479 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalProject.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalProject.h
@@ -109,6 +109,16 @@ public:
return dynamic_cast<CLogicalProject *>(pop);
}
+ CTableDescriptorHashSet *
+ DeriveTableDescriptor(CMemoryPool *,
+ CExpressionHandle &exprhdl) const override
+ {
+ CTableDescriptorHashSet *table_descriptor_set =
+ exprhdl.DeriveTableDescriptor(0);
+ table_descriptor_set->AddRef();
+ return table_descriptor_set;
+ }
+
}; // class CLogicalProject
} // namespace gpopt
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalSelect.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalSelect.h
index db80c0f575..925a8f2697 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalSelect.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalSelect.h
@@ -95,11 +95,14 @@ public:
}
// derive table descriptor
- CTableDescriptor *
+ CTableDescriptorHashSet *
DeriveTableDescriptor(CMemoryPool *, // mp
CExpressionHandle &exprhdl) const override
{
- return exprhdl.DeriveTableDescriptor(0);
+ CTableDescriptorHashSet *table_descriptor_set =
+ exprhdl.DeriveTableDescriptor(0);
+ table_descriptor_set->AddRef();
+ return table_descriptor_set;
}
//-------------------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/src/base/CDrvdPropRelational.cpp b/src/backend/gporca/libgpopt/src/base/CDrvdPropRelational.cpp
index 873586fcb6..f7639e5d3d 100644
--- a/src/backend/gporca/libgpopt/src/base/CDrvdPropRelational.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CDrvdPropRelational.cpp
@@ -76,6 +76,7 @@ CDrvdPropRelational::~CDrvdPropRelational()
CRefCount::SafeRelease(m_ppartinfo);
CRefCount::SafeRelease(m_ppc);
CRefCount::SafeRelease(m_pfp);
+ CRefCount::SafeRelease(m_table_descriptor);
}
}
@@ -586,20 +587,28 @@ CDrvdPropRelational::DeriveFunctionProperties(CExpressionHandle &exprhdl)
}
// table descriptor
-CTableDescriptor *
+CTableDescriptorHashSet *
CDrvdPropRelational::GetTableDescriptor() const
{
GPOS_RTL_ASSERT(IsComplete());
return m_table_descriptor;
}
-CTableDescriptor *
+CTableDescriptorHashSet *
CDrvdPropRelational::DeriveTableDescriptor(CExpressionHandle &exprhdl)
{
if (!m_is_prop_derived->ExchangeSet(EdptTableDescriptor))
{
- CLogical *popLogical = CLogical::PopConvert(exprhdl.Pop());
- m_table_descriptor = popLogical->DeriveTableDescriptor(m_mp, exprhdl);
+ if (exprhdl.Pop()->FLogical())
+ {
+ CLogical *popLogical = CLogical::PopConvert(exprhdl.Pop());
+ m_table_descriptor =
+ popLogical->DeriveTableDescriptor(m_mp, exprhdl);
+ }
+ else
+ {
+ m_table_descriptor = GPOS_NEW(m_mp) CTableDescriptorHashSet(m_mp);
+ }
}
return m_table_descriptor;
diff --git a/src/backend/gporca/libgpopt/src/base/CUtils.cpp b/src/backend/gporca/libgpopt/src/base/CUtils.cpp
index d1d212de85..0ce367eb43 100644
--- a/src/backend/gporca/libgpopt/src/base/CUtils.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CUtils.cpp
@@ -2193,7 +2193,7 @@ CUtils::PexprLogicalSelect(CMemoryPool *mp, CExpression *pexpr,
pexpr->Pop()->Eopid() == CLogical::EopLogicalGet ||
pexpr->Pop()->Eopid() == CLogical::EopLogicalDynamicGet)
{
- ptabdesc = pexpr->DeriveTableDescriptor();
+ ptabdesc = pexpr->DeriveTableDescriptor()->First();
// there are some cases where we don't populate LogicalSelect currently
GPOS_ASSERT_IMP(pexpr->Pop()->Eopid() != CLogical::EopLogicalSelect,
nullptr != ptabdesc);
diff --git a/src/backend/gporca/libgpopt/src/metadata/CTableDescriptor.cpp b/src/backend/gporca/libgpopt/src/metadata/CTableDescriptor.cpp
index 15bd4e14cc..e9248127b1 100644
--- a/src/backend/gporca/libgpopt/src/metadata/CTableDescriptor.cpp
+++ b/src/backend/gporca/libgpopt/src/metadata/CTableDescriptor.cpp
@@ -308,5 +308,33 @@ CTableDescriptor::IndexCount()
return ulIndices;
}
+//---------------------------------------------------------------------------
+// @function:
+// CTableDescriptor::HashValue
+//
+// @doc:
+// Returns hash value of the relation. The value is unique by MDId and
+// relation name (or alias).
+//
+//
+//---------------------------------------------------------------------------
+ULONG
+CTableDescriptor::HashValue(const CTableDescriptor *ptabdesc)
+{
+ ULONG ulHash =
+ gpos::CombineHashes(ptabdesc->MDId()->HashValue(),
+ CWStringConst::HashValue(ptabdesc->Name().Pstr()));
+
+ return ulHash;
+}
+
+BOOL
+CTableDescriptor::Equals(const CTableDescriptor *ptabdescLeft,
+ const CTableDescriptor *ptabdescRight)
+{
+ return ptabdescLeft->MDId()->Equals(ptabdescRight->MDId()) &&
+ ptabdescLeft->Name().Equals(ptabdescRight->Name());
+}
+
// EOF
diff --git a/src/backend/gporca/libgpopt/src/operators/CExpression.cpp b/src/backend/gporca/libgpopt/src/operators/CExpression.cpp
index 641fb7f04c..f97281ea40 100644
--- a/src/backend/gporca/libgpopt/src/operators/CExpression.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CExpression.cpp
@@ -1417,7 +1417,7 @@ CExpression::DerivePartitionInfo()
return m_pdprel->DerivePartitionInfo(exprhdl);
}
-CTableDescriptor *
+CTableDescriptorHashSet *
CExpression::DeriveTableDescriptor()
{
CExpressionHandle exprhdl(m_mp);
diff --git a/src/backend/gporca/libgpopt/src/operators/CExpressionHandle.cpp b/src/backend/gporca/libgpopt/src/operators/CExpressionHandle.cpp
index f28d38249d..9d6ba12901 100644
--- a/src/backend/gporca/libgpopt/src/operators/CExpressionHandle.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CExpressionHandle.cpp
@@ -1983,7 +1983,7 @@ CExpressionHandle::DerivePartitionInfo() const
return GetRelationalProperties()->GetPartitionInfo();
}
-CTableDescriptor *
+CTableDescriptorHashSet *
CExpressionHandle::DeriveTableDescriptor() const
{
if (nullptr != Pexpr())
@@ -1994,7 +1994,7 @@ CExpressionHandle::DeriveTableDescriptor() const
return GetRelationalProperties()->GetTableDescriptor();
}
-CTableDescriptor *
+CTableDescriptorHashSet *
CExpressionHandle::DeriveTableDescriptor(ULONG child_index) const
{
if (nullptr != Pexpr())
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogical.cpp b/src/backend/gporca/libgpopt/src/operators/CLogical.cpp
index bbed275569..7088f5ba1b 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogical.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogical.cpp
@@ -938,12 +938,10 @@ CLogical::DeriveFunctionProperties(CMemoryPool *mp,
// Derive table descriptor for tables used by operator
//
//---------------------------------------------------------------------------
-CTableDescriptor *
-CLogical::DeriveTableDescriptor(CMemoryPool *, CExpressionHandle &) const
+CTableDescriptorHashSet *
+CLogical::DeriveTableDescriptor(CMemoryPool *mp, CExpressionHandle &) const
{
- //currently return null unless there is a single table being used. Later we may want
- //to make this return a set of table descriptors and pass them up all operators
- return nullptr;
+ return GPOS_NEW(mp) CTableDescriptorHashSet(mp);
}
//---------------------------------------------------------------------------
// @function:
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalBitmapTableGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalBitmapTableGet.cpp
index a099d5241d..a44253ac99 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalBitmapTableGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalBitmapTableGet.cpp
@@ -40,7 +40,7 @@ CLogicalBitmapTableGet::CLogicalBitmapTableGet(CMemoryPool *mp,
const CName *pnameTableAlias,
CColRefArray *pdrgpcrOutput)
: CLogical(mp),
- m_ptabdesc(ptabdesc),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_ulOriginOpId(ulOriginOpId),
m_pnameTableAlias(pnameTableAlias),
m_pdrgpcrOutput(pdrgpcrOutput)
@@ -48,6 +48,8 @@ CLogicalBitmapTableGet::CLogicalBitmapTableGet(CMemoryPool *mp,
GPOS_ASSERT(nullptr != ptabdesc);
GPOS_ASSERT(nullptr != pnameTableAlias);
GPOS_ASSERT(nullptr != pdrgpcrOutput);
+
+ m_ptabdesc->Insert(ptabdesc);
}
//---------------------------------------------------------------------------
@@ -60,7 +62,7 @@ CLogicalBitmapTableGet::CLogicalBitmapTableGet(CMemoryPool *mp,
//---------------------------------------------------------------------------
CLogicalBitmapTableGet::CLogicalBitmapTableGet(CMemoryPool *mp)
: CLogical(mp),
- m_ptabdesc(nullptr),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_ulOriginOpId(gpos::ulong_max),
m_pnameTableAlias(nullptr),
m_pdrgpcrOutput(nullptr)
@@ -95,7 +97,7 @@ ULONG
CLogicalBitmapTableGet::HashValue() const
{
ULONG ulHash = gpos::CombineHashes(COperator::HashValue(),
- m_ptabdesc->MDId()->HashValue());
+ Ptabdesc()->MDId()->HashValue());
ulHash =
gpos::CombineHashes(ulHash, CUtils::UlHashColArray(m_pdrgpcrOutput));
@@ -166,7 +168,7 @@ CPropConstraint *
CLogicalBitmapTableGet::DerivePropertyConstraint(
CMemoryPool *mp, CExpressionHandle &exprhdl) const
{
- return PpcDeriveConstraintFromTableWithPredicates(mp, exprhdl, m_ptabdesc,
+ return PpcDeriveConstraintFromTableWithPredicates(mp, exprhdl, Ptabdesc(),
m_pdrgpcrOutput);
}
@@ -200,7 +202,7 @@ CLogicalBitmapTableGet::OsPrint(IOstream &os) const
{
os << SzId() << " ";
os << ", Table Name: (";
- m_ptabdesc->Name().OsPrint(os);
+ Ptabdesc()->Name().OsPrint(os);
os << ")";
os << ", Columns: [";
CUtils::OsPrintDrgPcr(os, m_pdrgpcrOutput);
@@ -234,9 +236,9 @@ CLogicalBitmapTableGet::PopCopyWithRemappedColumns(
}
CName *pnameAlias = GPOS_NEW(mp) CName(mp, *m_pnameTableAlias);
- m_ptabdesc->AddRef();
+ Ptabdesc()->AddRef();
- return GPOS_NEW(mp) CLogicalBitmapTableGet(mp, m_ptabdesc, m_ulOriginOpId,
+ return GPOS_NEW(mp) CLogicalBitmapTableGet(mp, Ptabdesc(), m_ulOriginOpId,
pnameAlias, pdrgpcrOutput);
}
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalCTEConsumer.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalCTEConsumer.cpp
index 6db74d7548..bf7accbbf5 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalCTEConsumer.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalCTEConsumer.cpp
@@ -238,7 +238,7 @@ CLogicalCTEConsumer::DeriveJoinDepth(CMemoryPool *, //mp,
}
// derive table descriptor
-CTableDescriptor *
+CTableDescriptorHashSet *
CLogicalCTEConsumer::DeriveTableDescriptor(CMemoryPool *, //mp
CExpressionHandle & //exprhdl
) const
@@ -246,7 +246,11 @@ CLogicalCTEConsumer::DeriveTableDescriptor(CMemoryPool *, //mp
CExpression *pexpr =
COptCtxt::PoctxtFromTLS()->Pcteinfo()->PexprCTEProducer(m_id);
GPOS_ASSERT(nullptr != pexpr);
- return pexpr->DeriveTableDescriptor();
+
+ CTableDescriptorHashSet *table_descriptor_set =
+ pexpr->DeriveTableDescriptor();
+ table_descriptor_set->AddRef();
+ return table_descriptor_set;
}
//---------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalCTEProducer.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalCTEProducer.cpp
index 62c31b9efb..c1bdcf0d2f 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalCTEProducer.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalCTEProducer.cpp
@@ -132,12 +132,15 @@ CLogicalCTEProducer::DeriveMaxCard(CMemoryPool *, // mp
return exprhdl.DeriveMaxCard(0);
}
-CTableDescriptor *
-CLogicalCTEProducer::DeriveTableDescriptor(CMemoryPool *, // mp
+CTableDescriptorHashSet *
+CLogicalCTEProducer::DeriveTableDescriptor(CMemoryPool *,
CExpressionHandle &exprhdl) const
{
// pass on table descriptor of first child
- return exprhdl.DeriveTableDescriptor(0);
+ CTableDescriptorHashSet *child_table_descriptor_set =
+ exprhdl.DeriveTableDescriptor(0);
+ child_table_descriptor_set->AddRef();
+ return child_table_descriptor_set;
}
//---------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicBitmapTableGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicBitmapTableGet.cpp
index adae373629..e74627c31b 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicBitmapTableGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicBitmapTableGet.cpp
@@ -82,7 +82,7 @@ ULONG
CLogicalDynamicBitmapTableGet::HashValue() const
{
ULONG ulHash = gpos::CombineHashes(COperator::HashValue(),
- m_ptabdesc->MDId()->HashValue());
+ Ptabdesc()->MDId()->HashValue());
ulHash = gpos::CombineHashes(ulHash, gpos::HashValue(&m_scan_id));
ulHash =
gpos::CombineHashes(ulHash, CUtils::UlHashColArray(m_pdrgpcrOutput));
@@ -118,7 +118,7 @@ CPropConstraint *
CLogicalDynamicBitmapTableGet::DerivePropertyConstraint(
CMemoryPool *mp, CExpressionHandle &exprhdl) const
{
- return PpcDeriveConstraintFromTableWithPredicates(mp, exprhdl, m_ptabdesc,
+ return PpcDeriveConstraintFromTableWithPredicates(mp, exprhdl, Ptabdesc(),
m_pdrgpcrOutput);
}
@@ -167,7 +167,7 @@ CLogicalDynamicBitmapTableGet::OsPrint(IOstream &os) const
{
os << SzId() << " ";
os << ", Table Name: (";
- m_ptabdesc->Name().OsPrint(os);
+ Ptabdesc()->Name().OsPrint(os);
os << ") Scan Id: " << m_scan_id;
os << ", Columns: [";
CUtils::OsPrintDrgPcr(os, m_pdrgpcrOutput);
@@ -201,14 +201,14 @@ CLogicalDynamicBitmapTableGet::PopCopyWithRemappedColumns(
}
CName *pnameAlias = GPOS_NEW(mp) CName(mp, *m_pnameAlias);
- m_ptabdesc->AddRef();
+ Ptabdesc()->AddRef();
m_partition_mdids->AddRef();
CColRef2dArray *pdrgpdrgpcrPart = CUtils::PdrgpdrgpcrRemap(
mp, m_pdrgpdrgpcrPart, colref_mapping, must_exist);
return GPOS_NEW(mp) CLogicalDynamicBitmapTableGet(
- mp, m_ptabdesc, m_ulOriginOpId, pnameAlias, m_scan_id, pdrgpcrOutput,
+ mp, Ptabdesc(), m_ulOriginOpId, pnameAlias, m_scan_id, pdrgpcrOutput,
pdrgpdrgpcrPart, m_partition_mdids);
}
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicForeignGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicForeignGet.cpp
index 08d8bfb53b..99616074fb 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicForeignGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicForeignGet.cpp
@@ -107,13 +107,13 @@ CLogicalDynamicForeignGet::PopCopyWithRemappedColumns(
colref_mapping, must_exist);
}
CColRef2dArray *pdrgpdrgpcrPart =
- PdrgpdrgpcrCreatePartCols(mp, pdrgpcrOutput, m_ptabdesc->PdrgpulPart());
+ PdrgpdrgpcrCreatePartCols(mp, pdrgpcrOutput, Ptabdesc()->PdrgpulPart());
CName *pnameAlias = GPOS_NEW(mp) CName(mp, *m_pnameAlias);
- m_ptabdesc->AddRef();
+ Ptabdesc()->AddRef();
m_partition_mdids->AddRef();
return GPOS_NEW(mp) CLogicalDynamicForeignGet(
- mp, pnameAlias, m_ptabdesc, m_scan_id, pdrgpcrOutput, pdrgpdrgpcrPart,
+ mp, pnameAlias, Ptabdesc(), m_scan_id, pdrgpcrOutput, pdrgpdrgpcrPart,
m_partition_mdids, m_foreign_server_oid, m_exec_location);
}
@@ -143,7 +143,7 @@ CLogicalDynamicForeignGet::PstatsDerive(CMemoryPool *mp,
{
// requesting stats on distribution columns to estimate data skew
IStatistics *pstatsTable =
- PstatsBaseTable(mp, exprhdl, m_ptabdesc, m_pcrsDist);
+ PstatsBaseTable(mp, exprhdl, Ptabdesc(), m_pcrsDist);
CColRefSet *pcrs = GPOS_NEW(mp) CColRefSet(mp, m_pdrgpcrOutput);
CUpperBoundNDVs *upper_bound_NDVs =
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp
index 5df65d3066..ff4ff42350 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp
@@ -116,7 +116,7 @@ ULONG
CLogicalDynamicGet::HashValue() const
{
ULONG ulHash = gpos::CombineHashes(COperator::HashValue(),
- m_ptabdesc->MDId()->HashValue());
+ Ptabdesc()->MDId()->HashValue());
ulHash =
gpos::CombineHashes(ulHash, CUtils::UlHashColArray(m_pdrgpcrOutput));
@@ -163,9 +163,9 @@ CLogicalDynamicGet::PopCopyWithRemappedColumns(CMemoryPool *mp,
colref_mapping, must_exist);
}
CColRef2dArray *pdrgpdrgpcrPart =
- PdrgpdrgpcrCreatePartCols(mp, pdrgpcrOutput, m_ptabdesc->PdrgpulPart());
+ PdrgpdrgpcrCreatePartCols(mp, pdrgpcrOutput, Ptabdesc()->PdrgpulPart());
CName *pnameAlias = GPOS_NEW(mp) CName(mp, *m_pnameAlias);
- m_ptabdesc->AddRef();
+ Ptabdesc()->AddRef();
m_partition_mdids->AddRef();
CConstraint *partition_cnstrs_disj = nullptr;
@@ -183,7 +183,7 @@ CLogicalDynamicGet::PopCopyWithRemappedColumns(CMemoryPool *mp,
}
return GPOS_NEW(mp) CLogicalDynamicGet(
- mp, pnameAlias, m_ptabdesc, m_scan_id, pdrgpcrOutput, pdrgpdrgpcrPart,
+ mp, pnameAlias, Ptabdesc(), m_scan_id, pdrgpcrOutput, pdrgpdrgpcrPart,
m_partition_mdids, partition_cnstrs_disj, m_static_pruned,
m_foreign_server_mdids);
}
@@ -258,7 +258,7 @@ CLogicalDynamicGet::OsPrint(IOstream &os) const
// actual name of table in catalog and columns
os << " (";
- m_ptabdesc->Name().OsPrint(os);
+ Ptabdesc()->Name().OsPrint(os);
os << "), ";
os << "Columns: [";
CUtils::OsPrintDrgPcr(os, m_pdrgpcrOutput);
@@ -328,7 +328,7 @@ CLogicalDynamicGet::PstatsDeriveFilter(CMemoryPool *mp,
}
CStatistics *pstatsFullTable = dynamic_cast<CStatistics *>(
- PstatsBaseTable(mp, exprhdl, m_ptabdesc, pcrsStat));
+ PstatsBaseTable(mp, exprhdl, Ptabdesc(), pcrsStat));
pcrsStat->Release();
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGetBase.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGetBase.cpp
index 499d54d6cb..0f4bba5df3 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGetBase.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGetBase.cpp
@@ -43,7 +43,7 @@ using namespace gpopt;
CLogicalDynamicGetBase::CLogicalDynamicGetBase(CMemoryPool *mp)
: CLogical(mp),
m_pnameAlias(nullptr),
- m_ptabdesc(nullptr),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_scan_id(0),
m_pdrgpcrOutput(nullptr),
m_pdrgpdrgpcrPart(nullptr),
@@ -67,7 +67,7 @@ CLogicalDynamicGetBase::CLogicalDynamicGetBase(
IMdIdArray *partition_mdids)
: CLogical(mp),
m_pnameAlias(pnameAlias),
- m_ptabdesc(ptabdesc),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_scan_id(scan_id),
m_pdrgpcrOutput(pdrgpcrOutput),
m_pdrgpdrgpcrPart(pdrgpdrgpcrPart),
@@ -80,7 +80,9 @@ CLogicalDynamicGetBase::CLogicalDynamicGetBase(
GPOS_ASSERT(nullptr != pdrgpcrOutput);
GPOS_ASSERT(nullptr != pdrgpdrgpcrPart);
- m_pcrsDist = CLogical::PcrsDist(mp, m_ptabdesc, m_pdrgpcrOutput);
+ m_ptabdesc->Insert(ptabdesc);
+
+ m_pcrsDist = CLogical::PcrsDist(mp, Ptabdesc(), m_pdrgpcrOutput);
m_root_col_mapping_per_part =
ConstructRootColMappingPerPart(mp, m_pdrgpcrOutput, m_partition_mdids);
}
@@ -101,7 +103,7 @@ CLogicalDynamicGetBase::CLogicalDynamicGetBase(CMemoryPool *mp,
IMdIdArray *partition_mdids)
: CLogical(mp),
m_pnameAlias(pnameAlias),
- m_ptabdesc(ptabdesc),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_scan_id(scan_id),
m_pdrgpcrOutput(nullptr),
m_pcrsDist(nullptr),
@@ -110,12 +112,14 @@ CLogicalDynamicGetBase::CLogicalDynamicGetBase(CMemoryPool *mp,
GPOS_ASSERT(nullptr != ptabdesc);
GPOS_ASSERT(nullptr != pnameAlias);
+ m_ptabdesc->Insert(ptabdesc);
+
// generate a default column set for the table descriptor
- m_pdrgpcrOutput = PdrgpcrCreateMapping(mp, m_ptabdesc->Pdrgpcoldesc(),
- UlOpId(), m_ptabdesc->MDId());
+ m_pdrgpcrOutput = PdrgpcrCreateMapping(mp, Ptabdesc()->Pdrgpcoldesc(),
+ UlOpId(), Ptabdesc()->MDId());
m_pdrgpdrgpcrPart = PdrgpdrgpcrCreatePartCols(mp, m_pdrgpcrOutput,
- m_ptabdesc->PdrgpulPart());
- m_pcrsDist = CLogical::PcrsDist(mp, m_ptabdesc, m_pdrgpcrOutput);
+ Ptabdesc()->PdrgpulPart());
+ m_pcrsDist = CLogical::PcrsDist(mp, Ptabdesc(), m_pdrgpcrOutput);
m_root_col_mapping_per_part =
ConstructRootColMappingPerPart(mp, m_pdrgpcrOutput, m_partition_mdids);
@@ -174,7 +178,7 @@ CLogicalDynamicGetBase::DeriveKeyCollection(CMemoryPool *mp,
CExpressionHandle & // exprhdl
) const
{
- const CBitSetArray *pdrgpbs = m_ptabdesc->PdrgpbsKeys();
+ const CBitSetArray *pdrgpbs = Ptabdesc()->PdrgpbsKeys();
return CLogical::PkcKeysBaseTable(mp, pdrgpbs, m_pdrgpcrOutput);
}
@@ -193,7 +197,7 @@ CLogicalDynamicGetBase::DerivePropertyConstraint(CMemoryPool *mp,
CExpressionHandle & // exprhdl
) const
{
- return PpcDeriveConstraintFromTable(mp, m_ptabdesc, m_pdrgpcrOutput);
+ return PpcDeriveConstraintFromTable(mp, Ptabdesc(), m_pdrgpcrOutput);
}
//---------------------------------------------------------------------------
@@ -209,7 +213,7 @@ CLogicalDynamicGetBase::DerivePartitionInfo(CMemoryPool *mp,
CExpressionHandle & // exprhdl
) const
{
- IMDId *mdid = m_ptabdesc->MDId();
+ IMDId *mdid = Ptabdesc()->MDId();
mdid->AddRef();
m_pdrgpdrgpcrPart->AddRef();
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicIndexGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicIndexGet.cpp
index 65584053cc..c41dae6bc8 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicIndexGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicIndexGet.cpp
@@ -166,11 +166,11 @@ CLogicalDynamicIndexGet::PopCopyWithRemappedColumns(
CColRef2dArray *pdrgpdrgpcrPart = CUtils::PdrgpdrgpcrRemap(
mp, m_pdrgpdrgpcrPart, colref_mapping, must_exist);
- m_ptabdesc->AddRef();
+ Ptabdesc()->AddRef();
m_partition_mdids->AddRef();
return GPOS_NEW(mp) CLogicalDynamicIndexGet(
- mp, pmdindex, m_ptabdesc, m_ulOriginOpId, pnameAlias, m_scan_id,
+ mp, pmdindex, Ptabdesc(), m_ulOriginOpId, pnameAlias, m_scan_id,
pdrgpcrOutput, pdrgpdrgpcrPart, m_partition_mdids,
m_ulUnindexedPredColCount);
}
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp
index 04665d57ea..39524647e9 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp
@@ -40,7 +40,7 @@ using namespace gpopt;
CLogicalGet::CLogicalGet(CMemoryPool *mp)
: CLogical(mp),
m_pnameAlias(nullptr),
- m_ptabdesc(nullptr),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_pdrgpcrOutput(nullptr),
m_pdrgpdrgpcrPart(nullptr),
m_pcrsDist(nullptr)
@@ -60,7 +60,7 @@ CLogicalGet::CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
CTableDescriptor *ptabdesc)
: CLogical(mp),
m_pnameAlias(pnameAlias),
- m_ptabdesc(ptabdesc),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_pdrgpcrOutput(nullptr),
m_pdrgpdrgpcrPart(nullptr),
m_pcrsDist(nullptr)
@@ -68,17 +68,19 @@ CLogicalGet::CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
GPOS_ASSERT(nullptr != ptabdesc);
GPOS_ASSERT(nullptr != pnameAlias);
+ m_ptabdesc->Insert(ptabdesc);
+
// generate a default column set for the table descriptor
- m_pdrgpcrOutput = PdrgpcrCreateMapping(mp, m_ptabdesc->Pdrgpcoldesc(),
- UlOpId(), m_ptabdesc->MDId());
+ m_pdrgpcrOutput = PdrgpcrCreateMapping(mp, Ptabdesc()->Pdrgpcoldesc(),
+ UlOpId(), Ptabdesc()->MDId());
- if (m_ptabdesc->IsPartitioned())
+ if (Ptabdesc()->IsPartitioned())
{
m_pdrgpdrgpcrPart = PdrgpdrgpcrCreatePartCols(
- mp, m_pdrgpcrOutput, m_ptabdesc->PdrgpulPart());
+ mp, m_pdrgpcrOutput, Ptabdesc()->PdrgpulPart());
}
- m_pcrsDist = CLogical::PcrsDist(mp, m_ptabdesc, m_pdrgpcrOutput);
+ m_pcrsDist = CLogical::PcrsDist(mp, Ptabdesc(), m_pdrgpcrOutput);
}
//---------------------------------------------------------------------------
@@ -94,20 +96,22 @@ CLogicalGet::CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
CColRefArray *pdrgpcrOutput)
: CLogical(mp),
m_pnameAlias(pnameAlias),
- m_ptabdesc(ptabdesc),
+ m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_pdrgpcrOutput(pdrgpcrOutput),
m_pdrgpdrgpcrPart(nullptr)
{
GPOS_ASSERT(nullptr != ptabdesc);
GPOS_ASSERT(nullptr != pnameAlias);
- if (m_ptabdesc->IsPartitioned())
+ m_ptabdesc->Insert(ptabdesc);
+
+ if (Ptabdesc()->IsPartitioned())
{
m_pdrgpdrgpcrPart = PdrgpdrgpcrCreatePartCols(
- mp, m_pdrgpcrOutput, m_ptabdesc->PdrgpulPart());
+ mp, m_pdrgpcrOutput, Ptabdesc()->PdrgpulPart());
}
- m_pcrsDist = CLogical::PcrsDist(mp, m_ptabdesc, m_pdrgpcrOutput);
+ m_pcrsDist = CLogical::PcrsDist(mp, Ptabdesc(), m_pdrgpcrOutput);
}
//---------------------------------------------------------------------------
@@ -141,7 +145,7 @@ ULONG
CLogicalGet::HashValue() const
{
ULONG ulHash = gpos::CombineHashes(COperator::HashValue(),
- m_ptabdesc->MDId()->HashValue());
+ Ptabdesc()->MDId()->HashValue());
ulHash =
gpos::CombineHashes(ulHash, CUtils::UlHashColArray(m_pdrgpcrOutput));
@@ -166,7 +170,7 @@ CLogicalGet::Matches(COperator *pop) const
}
CLogicalGet *popGet = CLogicalGet::PopConvert(pop);
- return m_ptabdesc->MDId()->Equals(popGet->m_ptabdesc->MDId()) &&
+ return Ptabdesc()->MDId()->Equals(popGet->Ptabdesc()->MDId()) &&
m_pdrgpcrOutput->Equals(popGet->PdrgpcrOutput());
}
@@ -195,9 +199,9 @@ CLogicalGet::PopCopyWithRemappedColumns(CMemoryPool *mp,
colref_mapping, must_exist);
}
CName *pnameAlias = GPOS_NEW(mp) CName(mp, *m_pnameAlias);
- m_ptabdesc->AddRef();
+ Ptabdesc()->AddRef();
- return GPOS_NEW(mp) CLogicalGet(mp, pnameAlias, m_ptabdesc, pdrgpcrOutput);
+ return GPOS_NEW(mp) CLogicalGet(mp, pnameAlias, Ptabdesc(), pdrgpcrOutput);
}
//---------------------------------------------------------------------------
@@ -291,7 +295,7 @@ CLogicalGet::DeriveKeyCollection(CMemoryPool *mp,
CExpressionHandle & // exprhdl
) const
{
- const CBitSetArray *pdrgpbs = m_ptabdesc->PdrgpbsKeys();
+ const CBitSetArray *pdrgpbs = Ptabdesc()->PdrgpbsKeys();
return CLogical::PkcKeysBaseTable(mp, pdrgpbs, m_pdrgpcrOutput);
}
@@ -330,7 +334,7 @@ CLogicalGet::PstatsDerive(CMemoryPool *mp, CExpressionHandle &exprhdl,
{
// requesting stats on distribution columns to estimate data skew
IStatistics *pstatsTable =
- PstatsBaseTable(mp, exprhdl, m_ptabdesc, m_pcrsDist);
+ PstatsBaseTable(mp, exprhdl, Ptabdesc(), m_pcrsDist);
CColRefSet *pcrs = GPOS_NEW(mp) CColRefSet(mp, m_pdrgpcrOutput);
CUpperBoundNDVs *upper_bound_NDVs =
@@ -364,13 +368,13 @@ CLogicalGet::OsPrint(IOstream &os) const
// actual name of table in catalog and columns
os << " (";
- m_ptabdesc->Name().OsPrint(os);
+ Ptabdesc()->Name().OsPrint(os);
os << "), Columns: [";
CUtils::OsPrintDrgPcr(os, m_pdrgpcrOutput);
os << "] Key sets: {";
const ULONG ulColumns = m_pdrgpcrOutput->Size();
- const CBitSetArray *pdrgpbsKeys = m_ptabdesc->PdrgpbsKeys();
+ const CBitSetArray *pdrgpbsKeys = Ptabdesc()->PdrgpbsKeys();
for (ULONG ul = 0; ul < pdrgpbsKeys->Size(); ul++)
{
CBitSet *pbs = (*pdrgpbsKeys)[ul];
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp
index 620958b06f..e469f88031 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalNAryJoin.cpp
@@ -194,6 +194,33 @@ CLogicalNAryJoin::DerivePropertyConstraint(CMemoryPool *mp,
return GPOS_NEW(mp) CPropConstraint(mp, equivalenceClasses, pcnstrNew);
}
+CTableDescriptorHashSet *
+CLogicalNAryJoin::DeriveTableDescriptor(CMemoryPool *mp,
+ CExpressionHandle &exprhdl) const
+{
+ CTableDescriptorHashSet *table_descriptor_set =
+ GPOS_NEW(mp) CTableDescriptorHashSet(mp);
+
+ for (ULONG ul = 0; ul < exprhdl.Arity(); ul++)
+ {
+ if (exprhdl.Pop(ul)->FLogical())
+ {
+ CTableDescriptorHashSetIter hsiter(
+ exprhdl.DeriveTableDescriptor(ul));
+ while (hsiter.Advance())
+ {
+ CTableDescriptor *ptabdesc =
+ const_cast<CTableDescriptor *>(hsiter.Get());
+ if (table_descriptor_set->Insert(ptabdesc))
+ {
+ ptabdesc->AddRef();
+ }
+ }
+ }
+ }
+ return table_descriptor_set;
+}
+
//---------------------------------------------------------------------------
// @function:
// CLogicalNAryJoin::PxfsCandidates
diff --git a/src/backend/gporca/libgpopt/src/xforms/CJoinOrderDPv2.cpp b/src/backend/gporca/libgpopt/src/xforms/CJoinOrderDPv2.cpp
index 661dba3886..c6c5a12500 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CJoinOrderDPv2.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CJoinOrderDPv2.cpp
@@ -1475,10 +1475,12 @@ CJoinOrderDPv2::PexprExpand()
// We need the underlying partition and table row information to properly estimate cardinality for
// partition selection. If this is a logical expr that is more complex (eg: cte, nary join), we
// will use a default estimate
- CTableDescriptor *table_desc = pexpr_atom->DeriveTableDescriptor();
+ CTableDescriptorHashSet *table_desc_set =
+ pexpr_atom->DeriveTableDescriptor();
- if (table_desc != nullptr)
+ if (table_desc_set->Size() > 0)
{
+ CTableDescriptor *table_desc = table_desc_set->First();
IMDId *rel_mdid = table_desc->MDId();
rel_mdid->AddRef();
CMDIdRelStats *rel_stats_mdid =
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
index f8410290d3..8f903e984f 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
@@ -2430,8 +2430,10 @@ CXformUtils::PexprBuildBtreeIndexPlan(CMemoryPool *mp, CMDAccessor *md_accessor,
BOOL fDynamicGet = (COperator::EopLogicalDynamicGet == op_id);
- CTableDescriptor *ptabdesc = pexprGet->DeriveTableDescriptor();
- GPOS_ASSERT(nullptr != ptabdesc);
+ CTableDescriptorHashSet *ptabdescset = pexprGet->DeriveTableDescriptor();
+ GPOS_ASSERT(1 == ptabdescset->Size());
+ CTableDescriptor *ptabdesc = ptabdescset->First();
+
CColRefArray *pdrgpcrOutput = nullptr;
CWStringConst *alias = nullptr;
ULONG ulPartIndex = gpos::ulong_max;
@@ -3364,7 +3366,11 @@ CXformUtils::PexprSelect2BitmapBoolOp(CMemoryPool *mp, CExpression *pexpr)
CExpression *pexprScalar = (*pexpr)[1];
CLogical *popGet = CLogical::PopConvert(pexprRelational->Pop());
- CTableDescriptor *ptabdesc = pexprRelational->DeriveTableDescriptor();
+ CTableDescriptorHashSet *ptabdescset =
+ pexprRelational->DeriveTableDescriptor();
+ GPOS_ASSERT(1 == ptabdescset->Size());
+ CTableDescriptor *ptabdesc = ptabdescset->First();
+
GPOS_ASSERT(nullptr != ptabdesc);
const ULONG ulIndices = ptabdesc->IndexCount();
if (0 == ulIndices)
@@ -4255,4 +4261,4 @@ CXformUtils::ComputeOrderSpecForIndexKey(CMemoryPool *mp,
mdid->AddRef();
(*order_spec)->Append(mdid, colref, ent);
}
-// EOF
\ No newline at end of file
+// EOF
diff --git a/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h b/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h
index 19ffbc7699..df5c6fcc01 100644
--- a/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h
+++ b/src/backend/gporca/libgpos/include/gpos/common/CHashSet.h
@@ -236,6 +236,17 @@ public:
return m_size;
}
+ T *
+ First()
+ {
+ if (m_elements->Size() == 0 || m_size == 0)
+ {
+ return nullptr;
+ }
+
+ return (*m_elements)[0];
+ }
+
}; // class CHashSet
} // namespace gpos
diff --git a/src/backend/gporca/libnaucrates/src/statistics/CStatisticsUtils.cpp b/src/backend/gporca/libnaucrates/src/statistics/CStatisticsUtils.cpp
index 8b9d0a8fc2..3947a23aec 100644
--- a/src/backend/gporca/libnaucrates/src/statistics/CStatisticsUtils.cpp
+++ b/src/backend/gporca/libnaucrates/src/statistics/CStatisticsUtils.cpp
@@ -1249,7 +1249,10 @@ CStatisticsUtils::DeriveStatsForBitmapTableGet(CMemoryPool *mp,
expr_handle.Pop()->Eopid() ||
CLogical::EopLogicalDynamicBitmapTableGet ==
expr_handle.Pop()->Eopid());
- CTableDescriptor *table_descriptor = expr_handle.DeriveTableDescriptor();
+
+ CTableDescriptorHashSet *table_descriptor_set =
+ expr_handle.DeriveTableDescriptor();
+ CTableDescriptor *table_descriptor = table_descriptor_set->First();
// the index of the condition
ULONG child_cond_index = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 10/30: Subquery Scan code cleanup (#16891)
Posted by ma...@apache.org.
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 10abbc1ae2a980666ce187ba866e225a9c5d3201
Author: Dev Swaroop Chattopadhyay <10...@users.noreply.github.com>
AuthorDate: Wed Dec 27 16:41:54 2023 +0530
Subquery Scan code cleanup (#16891)
In 7X ORCA, subquery scan is not used. Only the classes for DXL ,parsing of DXL
and translation of DXL to planned statement is present in the code. This came
in with the initial Orca code (back in 2013) and hasn't been touched since.
None of the logic beyond translation was ever implemented. This PR cleans up
the code for subquery scan.
---
.../gpopt/translate/CTranslatorDXLToPlStmt.cpp | 106 --------------
.../data/dxl/parse_tests/q21-SubqueryScan.xml | 77 ----------
.../include/naucrates/dxl/operators/CDXLOperator.h | 1 -
.../naucrates/dxl/operators/CDXLOperatorFactory.h | 4 -
.../dxl/operators/CDXLPhysicalSubqueryScan.h | 85 -----------
.../dxl/parser/CParseHandlerSubqueryScan.h | 68 ---------
.../include/naucrates/dxl/parser/parsehandlers.h | 1 -
.../include/naucrates/dxl/xml/dxltokens.h | 1 -
.../src/operators/CDXLOperatorFactory.cpp | 33 -----
.../src/operators/CDXLPhysicalSubqueryScan.cpp | 157 --------------------
.../gporca/libnaucrates/src/operators/Makefile | 1 -
.../src/parser/CParseHandlerFactory.cpp | 11 --
.../src/parser/CParseHandlerSubqueryScan.cpp | 160 ---------------------
.../gporca/libnaucrates/src/parser/Makefile | 1 -
.../gporca/libnaucrates/src/xml/dxltokens.cpp | 1 -
.../server/src/unittest/dxl/CParseHandlerTest.cpp | 1 -
.../gpopt/translate/CTranslatorDXLToPlStmt.h | 6 -
17 files changed, 714 deletions(-)
diff --git a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
index b4e06c53c3..bf3c79a4ce 100644
--- a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
+++ b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
@@ -81,7 +81,6 @@ extern "C" {
#include "naucrates/dxl/operators/CDXLPhysicalRoutedDistributeMotion.h"
#include "naucrates/dxl/operators/CDXLPhysicalSort.h"
#include "naucrates/dxl/operators/CDXLPhysicalSplit.h"
-#include "naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h"
#include "naucrates/dxl/operators/CDXLPhysicalTVF.h"
#include "naucrates/dxl/operators/CDXLPhysicalTableScan.h"
#include "naucrates/dxl/operators/CDXLPhysicalValuesScan.h"
@@ -420,12 +419,6 @@ CTranslatorDXLToPlStmt::TranslateDXLOperatorToPlan(
ctxt_translation_prev_siblings);
break;
}
- case EdxlopPhysicalSubqueryScan:
- {
- plan = TranslateDXLSubQueryScan(dxlnode, output_context,
- ctxt_translation_prev_siblings);
- break;
- }
case EdxlopPhysicalResult:
{
plan = TranslateDXLResult(dxlnode, output_context,
@@ -3295,105 +3288,6 @@ CTranslatorDXLToPlStmt::TranslateDXLSort(
return (Plan *) sort;
}
-//---------------------------------------------------------------------------
-// @function:
-// CTranslatorDXLToPlStmt::TranslateDXLSubQueryScan
-//
-// @doc:
-// Translate DXL subquery scan node into GPDB SubqueryScan plan node
-//
-//---------------------------------------------------------------------------
-Plan *
-CTranslatorDXLToPlStmt::TranslateDXLSubQueryScan(
- const CDXLNode *subquery_scan_dxlnode, CDXLTranslateContext *output_context,
- CDXLTranslationContextArray *ctxt_translation_prev_siblings)
-{
- // create sort plan node
- SubqueryScan *subquery_scan = MakeNode(SubqueryScan);
-
- Plan *plan = &(subquery_scan->scan.plan);
- plan->plan_node_id = m_dxl_to_plstmt_context->GetNextPlanId();
-
- CDXLPhysicalSubqueryScan *subquery_scan_dxlop =
- CDXLPhysicalSubqueryScan::Cast(subquery_scan_dxlnode->GetOperator());
-
- // translate operator costs
- TranslatePlanCosts(subquery_scan_dxlnode, plan);
-
- // translate subplan
- CDXLNode *child_dxlnode = (*subquery_scan_dxlnode)[EdxlsubqscanIndexChild];
- CDXLNode *project_list_dxlnode =
- (*subquery_scan_dxlnode)[EdxlsubqscanIndexProjList];
- CDXLNode *filter_dxlnode =
- (*subquery_scan_dxlnode)[EdxlsubqscanIndexFilter];
-
- CDXLTranslateContext child_context(m_mp, false,
- output_context->GetColIdToParamIdMap());
-
- Plan *child_plan = TranslateDXLOperatorToPlan(
- child_dxlnode, &child_context, ctxt_translation_prev_siblings);
-
- // create an rtable entry for the subquery scan
- RangeTblEntry *rte = MakeNode(RangeTblEntry);
- rte->rtekind = RTE_SUBQUERY;
-
- Alias *alias = MakeNode(Alias);
- alias->colnames = NIL;
-
- // get table alias
- alias->aliasname = CTranslatorUtils::CreateMultiByteCharStringFromWCString(
- subquery_scan_dxlop->MdName()->GetMDName()->GetBuffer());
-
- // get column names from child project list
- CDXLTranslateContextBaseTable base_table_context(m_mp);
-
- Index index =
- gpdb::ListLength(m_dxl_to_plstmt_context->GetRTableEntriesList()) + 1;
- (subquery_scan->scan).scanrelid = index;
- base_table_context.SetRelIndex(index);
-
- ListCell *lc_tgtentry = nullptr;
-
- CDXLNode *child_proj_list_dxlnode = (*child_dxlnode)[0];
-
- ULONG ul = 0;
-
- ForEach(lc_tgtentry, child_plan->targetlist)
- {
- TargetEntry *target_entry = (TargetEntry *) lfirst(lc_tgtentry);
-
- // non-system attribute
- CHAR *col_name_char_array = PStrDup(target_entry->resname);
- Value *val_colname = gpdb::MakeStringValue(col_name_char_array);
- alias->colnames = gpdb::LAppend(alias->colnames, val_colname);
-
- // get corresponding child project element
- CDXLScalarProjElem *sc_proj_elem_dxlop = CDXLScalarProjElem::Cast(
- (*child_proj_list_dxlnode)[ul]->GetOperator());
-
- // save mapping col id -> index in translate context
- (void) base_table_context.InsertMapping(sc_proj_elem_dxlop->Id(),
- target_entry->resno);
- ul++;
- }
-
- rte->eref = alias;
-
- // add range table entry for the subquery to the list
- m_dxl_to_plstmt_context->AddRTE(rte);
-
- // translate proj list and filter
- TranslateProjListAndFilter(
- project_list_dxlnode, filter_dxlnode,
- &base_table_context, // translate context for the base table
- nullptr, &plan->targetlist, &plan->qual, output_context);
-
- subquery_scan->subplan = child_plan;
-
- SetParamIds(plan);
- return (Plan *) subquery_scan;
-}
-
//------------------------------------------------------------------------------
// If the top level is not a function returning set then we need to check if the
// project element contains any SRF's deep down the tree. If we found any SRF's
diff --git a/src/backend/gporca/data/dxl/parse_tests/q21-SubqueryScan.xml b/src/backend/gporca/data/dxl/parse_tests/q21-SubqueryScan.xml
deleted file mode 100644
index f93df50e6d..0000000000
--- a/src/backend/gporca/data/dxl/parse_tests/q21-SubqueryScan.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
- <dxl:Plan Id="0" SpaceSize="0">
- <dxl:Aggregate AggregationStrategy="Hashed" StreamSafe="false">
- <dxl:Properties>
- <dxl:Cost StartupCost="54.50" TotalCost="67.00" Rows="1000.00" Width="8"/>
- </dxl:Properties>
- <dxl:GroupingColumns>
- <dxl:GroupingColumn ColId="3"/>
- </dxl:GroupingColumns>
- <dxl:ProjList>
- <dxl:ProjElem ColId="3" Alias="a">
- <dxl:Ident ColId="3" ColName="c" TypeMdid="0.20.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="4" Alias="count">
- <dxl:AggFunc AggMdid="0.2803.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
- <dxl:ValuesList ParamType="aggargs"/>
- <dxl:ValuesList ParamType="aggdirectargs"/>
- <dxl:ValuesList ParamType="aggorder"/>
- <dxl:ValuesList ParamType="aggdistinct"/>
- </dxl:AggFunc>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:SubqueryScan Alias="s">
- <dxl:Properties>
- <dxl:Cost StartupCost="22.00" TotalCost="44.50" Rows="2000.00" Width="8"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="3" Alias="c">
- <dxl:Ident ColId="3" ColName="c" TypeMdid="0.20.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:Aggregate AggregationStrategy="Hashed" StreamSafe="false">
- <dxl:Properties>
- <dxl:Cost StartupCost="22.00" TotalCost="34.50" Rows="1000.00" Width="4"/>
- </dxl:Properties>
- <dxl:GroupingColumns>
- <dxl:GroupingColumn ColId="1"/>
- </dxl:GroupingColumns>
- <dxl:ProjList>
- <dxl:ProjElem ColId="1" Alias="a">
- <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="3" Alias="c">
- <dxl:AggFunc AggMdid="0.2803.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
- <dxl:ValuesList ParamType="aggargs"/>
- <dxl:ValuesList ParamType="aggdirectargs"/>
- <dxl:ValuesList ParamType="aggorder"/>
- <dxl:ValuesList ParamType="aggdistinct"/>
- </dxl:AggFunc>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:TableScan>
- <dxl:Properties>
- <dxl:Cost StartupCost="0.00" TotalCost="12.00" Rows="2000.00" Width="4"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="1" Alias="a">
- <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:TableDescriptor Mdid="6.1234.1.1" TableName="m">
- <dxl:Columns>
- <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0"/>
- <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:Columns>
- </dxl:TableDescriptor>
- </dxl:TableScan>
- </dxl:Aggregate>
- </dxl:SubqueryScan>
- </dxl:Aggregate>
- </dxl:Plan>
-</dxl:DXLMessage>
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperator.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperator.h
index 220ad08437..5bfb7f8f60 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperator.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperator.h
@@ -130,7 +130,6 @@ enum Edxlopid
EdxlopPhysicalIndexScan,
EdxlopPhysicalIndexOnlyScan,
EdxlopScalarBitmapIndexProbe,
- EdxlopPhysicalSubqueryScan,
EdxlopPhysicalConstTable,
EdxlopPhysicalNLJoin,
EdxlopPhysicalHashJoin,
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperatorFactory.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperatorFactory.h
index 6ece3ce380..d5e0ac380d 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperatorFactory.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLOperatorFactory.h
@@ -133,10 +133,6 @@ public:
static CDXLPhysical *MakeDXLTblScan(CDXLMemoryManager *dxl_memory_manager,
const Attributes &attrs);
- // create a subquery scan operator
- static CDXLPhysical *MakeDXLSubqScan(CDXLMemoryManager *dxl_memory_manager,
- const Attributes &attrs);
-
// create a result operator
static CDXLPhysical *MakeDXLResult(CDXLMemoryManager *dxl_memory_manager);
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h
deleted file mode 100644
index fef7c3aa96..0000000000
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h
+++ /dev/null
@@ -1,85 +0,0 @@
-//---------------------------------------------------------------------------
-// Greenplum Database
-// Copyright (C) 2011 Greenplum, Inc.
-//
-// @filename:
-// CDXLPhysicalSubqueryScan.h
-//
-// @doc:
-// Class for representing DXL physical subquery scan (projection) operators.
-//---------------------------------------------------------------------------
-
-
-
-#ifndef GPDXL_CDXLPhysicalSubqueryScan_H
-#define GPDXL_CDXLPhysicalSubqueryScan_H
-
-#include "gpos/base.h"
-
-#include "naucrates/dxl/operators/CDXLPhysical.h"
-#include "naucrates/md/CMDName.h"
-
-
-namespace gpdxl
-{
-using namespace gpmd;
-
-// indices of subquery scan elements in the children array
-enum Edxlsubqscan
-{
- EdxlsubqscanIndexProjList = 0,
- EdxlsubqscanIndexFilter,
- EdxlsubqscanIndexChild,
- EdxlsubqscanIndexSentinel
-};
-//---------------------------------------------------------------------------
-// @class:
-// CDXLPhysicalSubqueryScan
-//
-// @doc:
-// Class for representing DXL physical subquery scan (projection) operators
-//
-//---------------------------------------------------------------------------
-class CDXLPhysicalSubqueryScan : public CDXLPhysical
-{
-private:
- // name for the subquery scan node (corresponding to name in GPDB's SubqueryScan)
- CMDName *m_mdname_alias;
-
-public:
- CDXLPhysicalSubqueryScan(CDXLPhysicalSubqueryScan &) = delete;
-
- // ctor/dtor
- CDXLPhysicalSubqueryScan(CMemoryPool *mp, CMDName *mdname);
-
- ~CDXLPhysicalSubqueryScan() override;
-
- // accessors
- Edxlopid GetDXLOperator() const override;
- const CWStringConst *GetOpNameStr() const override;
- const CMDName *MdName();
-
- // serialize operator in DXL format
- void SerializeToDXL(CXMLSerializer *xml_serializer,
- const CDXLNode *dxlnode) const override;
-
- // conversion function
- static CDXLPhysicalSubqueryScan *
- Cast(CDXLOperator *dxl_op)
- {
- GPOS_ASSERT(nullptr != dxl_op);
- GPOS_ASSERT(EdxlopPhysicalSubqueryScan == dxl_op->GetDXLOperator());
-
- return dynamic_cast<CDXLPhysicalSubqueryScan *>(dxl_op);
- }
-
-#ifdef GPOS_DEBUG
- // checks whether the operator has valid structure, i.e. number and
- // types of child nodes
- void AssertValid(const CDXLNode *, BOOL validate_children) const override;
-#endif // GPOS_DEBUG
-};
-} // namespace gpdxl
-#endif // !GPDXL_CDXLPhysicalSubqueryScan_H
-
-// EOF
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerSubqueryScan.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerSubqueryScan.h
deleted file mode 100644
index 9ed3c60fe9..0000000000
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerSubqueryScan.h
+++ /dev/null
@@ -1,68 +0,0 @@
-//---------------------------------------------------------------------------
-// Greenplum Database
-// Copyright (C) 2011 Greenplum, Inc.
-//
-// @filename:
-// CParseHandlerSubqueryScan.h
-//
-// @doc:
-// SAX parse handler class for parsing subquery scan operator nodes.
-//---------------------------------------------------------------------------
-
-#ifndef GPDXL_CParseHandlerSubqueryScan_H
-#define GPDXL_CParseHandlerSubqueryScan_H
-
-#include "gpos/base.h"
-
-#include "naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h"
-#include "naucrates/dxl/parser/CParseHandlerPhysicalOp.h"
-
-
-namespace gpdxl
-{
-using namespace gpos;
-
-XERCES_CPP_NAMESPACE_USE
-
-//---------------------------------------------------------------------------
-// @class:
-// CParseHandlerSubqueryScan
-//
-// @doc:
-// Parse handler for parsing a subquery scan operator
-//
-//---------------------------------------------------------------------------
-class CParseHandlerSubqueryScan : public CParseHandlerPhysicalOp
-{
-private:
- // the subquery scan operator
- CDXLPhysicalSubqueryScan *m_dxl_op;
-
- // process the start of an element
- void StartElement(
- const XMLCh *const element_uri, // URI of element's namespace
- const XMLCh *const element_local_name, // local part of element's name
- const XMLCh *const element_qname, // element's qname
- const Attributes &attr // element's attributes
- ) override;
-
- // process the end of an element
- void EndElement(
- const XMLCh *const element_uri, // URI of element's namespace
- const XMLCh *const element_local_name, // local part of element's name
- const XMLCh *const element_qname // element's qname
- ) override;
-
-public:
- CParseHandlerSubqueryScan(const CParseHandlerSubqueryScan &) = delete;
-
- // ctor/dtor
- CParseHandlerSubqueryScan(CMemoryPool *mp,
- CParseHandlerManager *parse_handler_mgr,
- CParseHandlerBase *parse_handler_root);
-};
-} // namespace gpdxl
-
-#endif // !GPDXL_CParseHandlerSubqueryScan_H
-
-// EOF
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h
index 909bc3cae3..62d8dd5945 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h
@@ -177,7 +177,6 @@
#include "naucrates/dxl/parser/CParseHandlerStatsBound.h"
#include "naucrates/dxl/parser/CParseHandlerStatsDerivedColumn.h"
#include "naucrates/dxl/parser/CParseHandlerStatsDerivedRelation.h"
-#include "naucrates/dxl/parser/CParseHandlerSubqueryScan.h"
#include "naucrates/dxl/parser/CParseHandlerTableDescr.h"
#include "naucrates/dxl/parser/CParseHandlerTableScan.h"
#include "naucrates/dxl/parser/CParseHandlerTraceFlags.h"
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
index e057b03251..9389280c07 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
@@ -102,7 +102,6 @@ enum Edxltoken
EdxltokenPhysicalSort,
EdxltokenPhysicalLimit,
EdxltokenPhysicalResult,
- EdxltokenPhysicalSubqueryScan,
EdxltokenPhysicalAggregate,
EdxltokenPhysicalAppend,
EdxltokenPhysicalMaterialize,
diff --git a/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp b/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp
index 2cde475952..daf8714a86 100644
--- a/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp
+++ b/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp
@@ -41,7 +41,6 @@
#include "naucrates/dxl/operators/CDXLPhysicalResult.h"
#include "naucrates/dxl/operators/CDXLPhysicalRoutedDistributeMotion.h"
#include "naucrates/dxl/operators/CDXLPhysicalSort.h"
-#include "naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h"
#include "naucrates/dxl/operators/CDXLPhysicalTableScan.h"
#include "naucrates/dxl/operators/CDXLScalarAggref.h"
#include "naucrates/dxl/operators/CDXLScalarArray.h"
@@ -100,38 +99,6 @@ CDXLOperatorFactory::MakeDXLTblScan(CDXLMemoryManager *dxl_memory_manager,
return GPOS_NEW(mp) CDXLPhysicalTableScan(mp);
}
-//---------------------------------------------------------------------------
-// @function:
-// CDXLOperatorFactory::MakeDXLSubqScan
-//
-// @doc:
-// Construct a subquery scan operator
-//
-//---------------------------------------------------------------------------
-CDXLPhysical *
-CDXLOperatorFactory::MakeDXLSubqScan(CDXLMemoryManager *dxl_memory_manager,
- const Attributes &attrs)
-{
- // get the memory pool from the memory manager
- CMemoryPool *mp = dxl_memory_manager->Pmp();
-
- // parse subquery name from attributes
- const XMLCh *subquery_name_xml =
- ExtractAttrValue(attrs, EdxltokenAlias, EdxltokenPhysicalSubqueryScan);
-
- CWStringDynamic *subquery_name_str =
- CDXLUtils::CreateDynamicStringFromXMLChArray(dxl_memory_manager,
- subquery_name_xml);
-
-
- // create a copy of the string in the CMDName constructor
- CMDName *subquery_name = GPOS_NEW(mp) CMDName(mp, subquery_name_str);
-
- GPOS_DELETE(subquery_name_str);
-
- return GPOS_NEW(mp) CDXLPhysicalSubqueryScan(mp, subquery_name);
-}
-
//---------------------------------------------------------------------------
// @function:
// CDXLOperatorFactory::MakeDXLResult
diff --git a/src/backend/gporca/libnaucrates/src/operators/CDXLPhysicalSubqueryScan.cpp b/src/backend/gporca/libnaucrates/src/operators/CDXLPhysicalSubqueryScan.cpp
deleted file mode 100644
index 24465fe8ba..0000000000
--- a/src/backend/gporca/libnaucrates/src/operators/CDXLPhysicalSubqueryScan.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-//---------------------------------------------------------------------------
-// Greenplum Database
-// Copyright (C) 2011 Greenplum, Inc.
-//
-// @filename:
-// CDXLPhysicalSubqueryScan.cpp
-//
-// @doc:
-// Implementation of DXL physical subquery scan operators
-//---------------------------------------------------------------------------
-
-
-#include "naucrates/dxl/operators/CDXLPhysicalSubqueryScan.h"
-
-#include "naucrates/dxl/operators/CDXLNode.h"
-#include "naucrates/dxl/xml/CXMLSerializer.h"
-
-using namespace gpos;
-using namespace gpdxl;
-
-//---------------------------------------------------------------------------
-// @function:
-// CDXLPhysicalSubqueryScan::CDXLPhysicalSubqueryScan
-//
-// @doc:
-// Constructor
-//
-//---------------------------------------------------------------------------
-CDXLPhysicalSubqueryScan::CDXLPhysicalSubqueryScan(CMemoryPool *mp,
- CMDName *mdname)
- : CDXLPhysical(mp), m_mdname_alias(mdname)
-{
-}
-
-//---------------------------------------------------------------------------
-// @function:
-// CDXLPhysicalSubqueryScan::~CDXLPhysicalSubqueryScan
-//
-// @doc:
-// Destructor
-//
-//---------------------------------------------------------------------------
-CDXLPhysicalSubqueryScan::~CDXLPhysicalSubqueryScan()
-{
- GPOS_DELETE(m_mdname_alias);
-}
-
-
-//---------------------------------------------------------------------------
-// @function:
-// CDXLPhysicalSubqueryScan::GetDXLOperator
-//
-// @doc:
-// Operator type
-//
-//---------------------------------------------------------------------------
-Edxlopid
-CDXLPhysicalSubqueryScan::GetDXLOperator() const
-{
- return EdxlopPhysicalSubqueryScan;
-}
-
-
-//---------------------------------------------------------------------------
-// @function:
-// CDXLPhysicalSubqueryScan::GetOpNameStr
-//
-// @doc:
-// Operator name
-//
-//---------------------------------------------------------------------------
-const CWStringConst *
-CDXLPhysicalSubqueryScan::GetOpNameStr() const
-{
- return CDXLTokens::GetDXLTokenStr(EdxltokenPhysicalSubqueryScan);
-}
-
-//---------------------------------------------------------------------------
-// @function:
-// CDXLPhysicalSubqueryScan::MdName
-//
-// @doc:
-// Name for the subquery
-//
-//---------------------------------------------------------------------------
-const CMDName *
-CDXLPhysicalSubqueryScan::MdName()
-{
- return m_mdname_alias;
-}
-
-
-//---------------------------------------------------------------------------
-// @function:
-// CDXLPhysicalSubqueryScan::SerializeToDXL
-//
-// @doc:
-// Serialize operator in DXL format
-//
-//---------------------------------------------------------------------------
-void
-CDXLPhysicalSubqueryScan::SerializeToDXL(CXMLSerializer *xml_serializer,
- const CDXLNode *dxlnode) const
-{
- const CWStringConst *element_name = GetOpNameStr();
-
- xml_serializer->OpenElement(
- CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix), element_name);
- xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenAlias),
- m_mdname_alias->GetMDName());
-
- // serialize properties
- dxlnode->SerializePropertiesToDXL(xml_serializer);
-
- // serialize children
- dxlnode->SerializeChildrenToDXL(xml_serializer);
-
- xml_serializer->CloseElement(
- CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix), element_name);
-}
-
-#ifdef GPOS_DEBUG
-//---------------------------------------------------------------------------
-// @function:
-// CDXLPhysicalSubqueryScan::AssertValid
-//
-// @doc:
-// Checks whether operator node is well-structured
-//
-//---------------------------------------------------------------------------
-void
-CDXLPhysicalSubqueryScan::AssertValid(const CDXLNode *dxlnode,
- BOOL validate_children) const
-{
- // assert proj list and filter are valid
- CDXLPhysical::AssertValid(dxlnode, validate_children);
-
- // subquery scan has 3 children
- GPOS_ASSERT(EdxlsubqscanIndexSentinel == dxlnode->Arity());
-
- CDXLNode *child_dxlnode = (*dxlnode)[EdxlsubqscanIndexChild];
- GPOS_ASSERT(EdxloptypePhysical ==
- child_dxlnode->GetOperator()->GetDXLOperatorType());
-
- if (validate_children)
- {
- child_dxlnode->GetOperator()->AssertValid(child_dxlnode,
- validate_children);
- }
-
- // assert validity of table descriptor
- GPOS_ASSERT(nullptr != m_mdname_alias);
- GPOS_ASSERT(m_mdname_alias->GetMDName()->IsValid());
-}
-#endif // GPOS_DEBUG
-
-// EOF
diff --git a/src/backend/gporca/libnaucrates/src/operators/Makefile b/src/backend/gporca/libnaucrates/src/operators/Makefile
index aa89bd295a..3696aba2f7 100644
--- a/src/backend/gporca/libnaucrates/src/operators/Makefile
+++ b/src/backend/gporca/libnaucrates/src/operators/Makefile
@@ -83,7 +83,6 @@ OBJS = CDXLColDescr.o \
CDXLPhysicalSequence.o \
CDXLPhysicalSort.o \
CDXLPhysicalSplit.o \
- CDXLPhysicalSubqueryScan.o \
CDXLPhysicalTVF.o \
CDXLPhysicalTableScan.o \
CDXLPhysicalValuesScan.o \
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp
index 01be8a12a5..9c1cea96ed 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp
@@ -106,7 +106,6 @@ CParseHandlerFactory::Init(CMemoryPool *mp)
{EdxltokenPhysicalRoutedDistributeMotion,
&CreateRoutedMotionParseHandler},
{EdxltokenPhysicalRandomMotion, &CreateRandomMotionParseHandler},
- {EdxltokenPhysicalSubqueryScan, &CreateSubqueryScanParseHandler},
{EdxltokenPhysicalResult, &CreateResultParseHandler},
{EdxltokenPhysicalLimit, &CreateLimitParseHandler},
{EdxltokenPhysicalSort, &CreateSortParseHandler},
@@ -750,16 +749,6 @@ CParseHandlerFactory::CreateForeignScanParseHandler(
CParseHandlerForeignScan(mp, parse_handler_mgr, parse_handler_root);
}
-// creates a parse handler for parsing a subquery scan
-CParseHandlerBase *
-CParseHandlerFactory::CreateSubqueryScanParseHandler(
- CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
- CParseHandlerBase *parse_handler_root)
-{
- return GPOS_NEW(mp)
- CParseHandlerSubqueryScan(mp, parse_handler_mgr, parse_handler_root);
-}
-
// creates a parse handler for parsing a result node
CParseHandlerBase *
CParseHandlerFactory::CreateResultParseHandler(
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerSubqueryScan.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerSubqueryScan.cpp
deleted file mode 100644
index 85e16a1515..0000000000
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerSubqueryScan.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-//---------------------------------------------------------------------------
-// Greenplum Database
-// Copyright (C) 2011 Greenplum, Inc.
-//
-// @filename:
-// CParseHandlerSubqueryScan.cpp
-//
-// @doc:
-// Implementation of the SAX parse handler class for parsing subquery scan operators.
-//---------------------------------------------------------------------------
-
-#include "naucrates/dxl/parser/CParseHandlerSubqueryScan.h"
-
-#include "naucrates/dxl/operators/CDXLOperatorFactory.h"
-#include "naucrates/dxl/parser/CParseHandlerFactory.h"
-#include "naucrates/dxl/parser/CParseHandlerFilter.h"
-#include "naucrates/dxl/parser/CParseHandlerProjList.h"
-#include "naucrates/dxl/parser/CParseHandlerProperties.h"
-#include "naucrates/dxl/parser/CParseHandlerUtils.h"
-
-
-using namespace gpdxl;
-
-
-XERCES_CPP_NAMESPACE_USE
-
-//---------------------------------------------------------------------------
-// @function:
-// CParseHandlerSubqueryScan::CParseHandlerSubqueryScan
-//
-// @doc:
-// Constructor
-//
-//---------------------------------------------------------------------------
-CParseHandlerSubqueryScan::CParseHandlerSubqueryScan(
- CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
- CParseHandlerBase *parse_handler_root)
- : CParseHandlerPhysicalOp(mp, parse_handler_mgr, parse_handler_root),
- m_dxl_op(nullptr)
-{
-}
-
-
-//---------------------------------------------------------------------------
-// @function:
-// CParseHandlerSubqueryScan::StartElement
-//
-// @doc:
-// Invoked by Xerces to process an opening tag
-//
-//---------------------------------------------------------------------------
-void
-CParseHandlerSubqueryScan::StartElement(const XMLCh *const, // element_uri,
- const XMLCh *const element_local_name,
- const XMLCh *const, // element_qname
- const Attributes &attrs)
-{
- if (0 != XMLString::compareString(
- CDXLTokens::XmlstrToken(EdxltokenPhysicalSubqueryScan),
- element_local_name))
- {
- CWStringDynamic *str = CDXLUtils::CreateDynamicStringFromXMLChArray(
- m_parse_handler_mgr->GetDXLMemoryManager(), element_local_name);
- GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag,
- str->GetBuffer());
- }
-
- m_dxl_op =
- (CDXLPhysicalSubqueryScan *) CDXLOperatorFactory::MakeDXLSubqScan(
- m_parse_handler_mgr->GetDXLMemoryManager(), attrs);
-
- // create child node parsers in reverse order of their expected occurrence
-
- // parse handler for child node
- CParseHandlerBase *child_parse_handler =
- CParseHandlerFactory::GetParseHandler(
- m_mp, CDXLTokens::XmlstrToken(EdxltokenPhysical),
- m_parse_handler_mgr, this);
- m_parse_handler_mgr->ActivateParseHandler(child_parse_handler);
-
- // parse handler for the filter
- CParseHandlerBase *filter_parse_handler =
- CParseHandlerFactory::GetParseHandler(
- m_mp, CDXLTokens::XmlstrToken(EdxltokenScalarFilter),
- m_parse_handler_mgr, this);
- m_parse_handler_mgr->ActivateParseHandler(filter_parse_handler);
-
- // parse handler for the proj list
- CParseHandlerBase *proj_list_parse_handler =
- CParseHandlerFactory::GetParseHandler(
- m_mp, CDXLTokens::XmlstrToken(EdxltokenScalarProjList),
- m_parse_handler_mgr, this);
- m_parse_handler_mgr->ActivateParseHandler(proj_list_parse_handler);
-
- //parse handler for the properties of the operator
- CParseHandlerBase *prop_parse_handler =
- CParseHandlerFactory::GetParseHandler(
- m_mp, CDXLTokens::XmlstrToken(EdxltokenProperties),
- m_parse_handler_mgr, this);
- m_parse_handler_mgr->ActivateParseHandler(prop_parse_handler);
-
- // store child parse handlers in array
- this->Append(prop_parse_handler);
- this->Append(proj_list_parse_handler);
- this->Append(filter_parse_handler);
- this->Append(child_parse_handler);
-}
-
-//---------------------------------------------------------------------------
-// @function:
-// CParseHandlerSubqueryScan::EndElement
-//
-// @doc:
-// Invoked by Xerces to process a closing tag
-//
-//---------------------------------------------------------------------------
-void
-CParseHandlerSubqueryScan::EndElement(const XMLCh *const, // element_uri,
- const XMLCh *const element_local_name,
- const XMLCh *const // element_qname
-)
-{
- if (0 != XMLString::compareString(
- CDXLTokens::XmlstrToken(EdxltokenPhysicalSubqueryScan),
- element_local_name))
- {
- CWStringDynamic *str = CDXLUtils::CreateDynamicStringFromXMLChArray(
- m_parse_handler_mgr->GetDXLMemoryManager(), element_local_name);
- GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag,
- str->GetBuffer());
- }
-
- // construct node from the created child nodes
- CParseHandlerProperties *prop_parse_handler =
- dynamic_cast<CParseHandlerProperties *>((*this)[0]);
- CParseHandlerProjList *proj_list_parse_handler =
- dynamic_cast<CParseHandlerProjList *>((*this)[1]);
- CParseHandlerFilter *filter_parse_handler =
- dynamic_cast<CParseHandlerFilter *>((*this)[2]);
- CParseHandlerPhysicalOp *child_parse_handler =
- dynamic_cast<CParseHandlerPhysicalOp *>((*this)[3]);
-
- m_dxl_node = GPOS_NEW(m_mp) CDXLNode(m_mp, m_dxl_op);
- // set statistics and physical properties
- CParseHandlerUtils::SetProperties(m_dxl_node, prop_parse_handler);
-
- // add constructed children
- AddChildFromParseHandler(proj_list_parse_handler);
- AddChildFromParseHandler(filter_parse_handler);
- AddChildFromParseHandler(child_parse_handler);
-
-#ifdef GPOS_DEBUG
- m_dxl_op->AssertValid(m_dxl_node, false /* validate_children */);
-#endif // GPOS_DEBUG
-
- // deactivate handler
- m_parse_handler_mgr->DeactivateHandler();
-}
-
-// EOF
diff --git a/src/backend/gporca/libnaucrates/src/parser/Makefile b/src/backend/gporca/libnaucrates/src/parser/Makefile
index 2a53a251af..ff858c1c7d 100644
--- a/src/backend/gporca/libnaucrates/src/parser/Makefile
+++ b/src/backend/gporca/libnaucrates/src/parser/Makefile
@@ -181,7 +181,6 @@ OBJS = CParseHandlerAgg.o \
CParseHandlerStatsBound.o \
CParseHandlerStatsDerivedColumn.o \
CParseHandlerStatsDerivedRelation.o \
- CParseHandlerSubqueryScan.o \
CParseHandlerTableDescr.o \
CParseHandlerTableScan.o \
CParseHandlerTraceFlags.o \
diff --git a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
index 4ae1762fe5..e96a5b9824 100644
--- a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
+++ b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
@@ -126,7 +126,6 @@ CDXLTokens::Init(CMemoryPool *mp)
{EdxltokenPhysicalLimit, GPOS_WSZ_LIT("Limit")},
{EdxltokenPhysicalSort, GPOS_WSZ_LIT("Sort")},
{EdxltokenPhysicalAggregate, GPOS_WSZ_LIT("Aggregate")},
- {EdxltokenPhysicalSubqueryScan, GPOS_WSZ_LIT("SubqueryScan")},
{EdxltokenPhysicalResult, GPOS_WSZ_LIT("Result")},
{EdxltokenPhysicalValuesScan, GPOS_WSZ_LIT("Values")},
{EdxltokenPhysicalAppend, GPOS_WSZ_LIT("Append")},
diff --git a/src/backend/gporca/server/src/unittest/dxl/CParseHandlerTest.cpp b/src/backend/gporca/server/src/unittest/dxl/CParseHandlerTest.cpp
index 2f9c06391e..251aa9b945 100644
--- a/src/backend/gporca/server/src/unittest/dxl/CParseHandlerTest.cpp
+++ b/src/backend/gporca/server/src/unittest/dxl/CParseHandlerTest.cpp
@@ -55,7 +55,6 @@ const CHAR *CParseHandlerTest::m_rgszPlanDXLFileNames[] = {
"../data/dxl/parse_tests/q18-Sort-TS.xml",
"../data/dxl/parse_tests/q19-DistinctFrom.xml",
"../data/dxl/parse_tests/q20-DistinctFrom-HJ.xml",
- "../data/dxl/parse_tests/q21-SubqueryScan.xml",
"../data/dxl/parse_tests/q22-Result.xml",
"../data/dxl/parse_tests/q23-MJ.xml",
"../data/dxl/parse_tests/q25-AppendPartTable.xml",
diff --git a/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h b/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
index 50a250edca..de4c0d0edc 100644
--- a/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
+++ b/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
@@ -299,12 +299,6 @@ private:
ctxt_translation_prev_siblings // translation contexts of previous siblings
);
- Plan *TranslateDXLSubQueryScan(
- const CDXLNode *subquery_scan_dxlnode,
- CDXLTranslateContext *output_context,
- CDXLTranslationContextArray *
- ctxt_translation_prev_siblings // translation contexts of previous siblings
- );
Plan *TranslateDXLProjectSet(const CDXLNode *result_dxlnode);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 11/30: [ORCA] Fix missing pdshashedEquiv in IndexOnlyScan (#16898)
Posted by ma...@apache.org.
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 ede206b4639003846e0b673db4c870b8df45c580
Author: fishtree1161 <45...@users.noreply.github.com>
AuthorDate: Thu Dec 28 05:36:27 2023 +0800
[ORCA] Fix missing pdshashedEquiv in IndexOnlyScan (#16898)
Under InnerIndexNLJoin it's also a problem of IndexOnlyScan on AO/AOCS tables
that can not generate IndexScan but can generate IndexOnlyScan.
For example:
create table test (a int, b int) with (appendonly='true') distributed by (a);
create index test_a_idx on test(a);
create index test_b_idx on test(b) include (a);
insert into test select i,i from generate_series(1, 10000)i;
analyze test;
explain (costs off) select t1.a from test t1, test t2
where t1.a = t2.a and t1.b < 10;
QUERY PLAN
-------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Index Only Scan using test_b_idx on test
Index Cond: (b < 10)
-> Index Only Scan using test_a_idx on test test_1
Index Cond: (a = test.a)
Optimizer: GPORCA
(9 rows)
This Broadcast Motion is obviously not necessary, but it appeared because
IndexOnlyScan did not generate pdshashedEquiv just like other index or bitmap
index scan. It's an omission from commit 3b72df1810.
TODO: It has also been noticed that the cost of index only scan is similar to
the cost of index scan, which might be improved upon.
---
.../minidump/DynamicIndexOnlyScan-InnerJoin.mdp | 10 ++---
.../dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp | 12 +++---
.../libgpopt/src/operators/CPhysicalScan.cpp | 2 +
src/test/regress/expected/bfv_index.out | 47 +++++++++++++++++++++
src/test/regress/expected/bfv_index_optimizer.out | 49 ++++++++++++++++++++++
.../expected/gp_covering_index_optimizer.out | 10 +++--
src/test/regress/expected/gporca_optimizer.out | 5 +--
src/test/regress/expected/subselect_optimizer.out | 2 +-
src/test/regress/sql/bfv_index.sql | 30 +++++++++++++
9 files changed, 148 insertions(+), 19 deletions(-)
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
index 96e7a33b08..e7f9fc90f1 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
@@ -1298,7 +1298,7 @@
<dxl:Plan Id="0" SpaceSize="54">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000557" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000507" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -1312,7 +1312,7 @@
<dxl:SortingColumnList/>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="true" OuterRefAsParam="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000527" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000477" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -1374,9 +1374,9 @@
</dxl:Columns>
</dxl:TableDescriptor>
</dxl:DynamicIndexOnlyScan>
- <dxl:IndexScan IndexScanDirection="Forward">
+ <dxl:IndexOnlyScan IndexScanDirection="Forward">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000211" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000161" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
@@ -1404,7 +1404,7 @@
<dxl:Column ColId="19" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
</dxl:Columns>
</dxl:TableDescriptor>
- </dxl:IndexScan>
+ </dxl:IndexOnlyScan>
<dxl:NLJIndexParamList>
<dxl:NLJIndexParam ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
</dxl:NLJIndexParamList>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
index aa11b2782c..cec32f0ad4 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
@@ -1296,10 +1296,10 @@
</dxl:LogicalJoin>
</dxl:LogicalSelect>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="45">
+ <dxl:Plan Id="0" SpaceSize="48">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000557" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000507" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -1313,7 +1313,7 @@
<dxl:SortingColumnList/>
<dxl:NestedLoopJoin JoinType="Left" IndexNestedLoopJoin="true" OuterRefAsParam="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000527" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000477" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -1375,9 +1375,9 @@
</dxl:Columns>
</dxl:TableDescriptor>
</dxl:DynamicIndexOnlyScan>
- <dxl:IndexScan IndexScanDirection="Forward">
+ <dxl:IndexOnlyScan IndexScanDirection="Forward">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000211" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000161" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
@@ -1405,7 +1405,7 @@
<dxl:Column ColId="19" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
</dxl:Columns>
</dxl:TableDescriptor>
- </dxl:IndexScan>
+ </dxl:IndexOnlyScan>
<dxl:NLJIndexParamList>
<dxl:NLJIndexParam ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
</dxl:NLJIndexParamList>
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalScan.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalScan.cpp
index 0385a04adc..be8331f03d 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalScan.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalScan.cpp
@@ -156,8 +156,10 @@ CPhysicalScan::PdsDerive(CMemoryPool *mp, CExpressionHandle &exprhdl) const
{
BOOL fIndexOrBitmapScan =
COperator::EopPhysicalIndexScan == Eopid() ||
+ COperator::EopPhysicalIndexOnlyScan == Eopid() ||
COperator::EopPhysicalBitmapTableScan == Eopid() ||
COperator::EopPhysicalDynamicIndexScan == Eopid() ||
+ COperator::EopPhysicalDynamicIndexOnlyScan == Eopid() ||
COperator::EopPhysicalDynamicBitmapTableScan == Eopid();
if (fIndexOrBitmapScan && CDistributionSpec::EdtHashed == m_pds->Edt() &&
exprhdl.HasOuterRefs())
diff --git a/src/test/regress/expected/bfv_index.out b/src/test/regress/expected/bfv_index.out
index ecb58a7abd..49544a9184 100644
--- a/src/test/regress/expected/bfv_index.out
+++ b/src/test/regress/expected/bfv_index.out
@@ -1452,3 +1452,50 @@ explain select * from two_idx_tbl where 'cc' = x or 'dd' = y;
Optimizer: Postgres query optimizer
(9 rows)
+RESET optimizer_enable_indexscan;
+RESET optimizer_enable_indexonlyscan;
+RESET enable_indexonlyscan;
+RESET seq_page_cost;
+-- Test IndexNLJoin on IndexOnlyScan in ORCA (both heap and AOCS table)
+create table index_only_join_test (a int, b int) distributed by (a);
+create table index_only_join_test_aocs (a int, b int) with (appendonly='true') distributed by (a);
+create index index_only_join_test_a_idx on index_only_join_test(a);
+create index index_only_join_test_b_idx on index_only_join_test(b) include (a);
+create index index_only_join_test_aocs_a_idx on index_only_join_test_aocs(a);
+create index index_only_join_test_aocs_b_idx on index_only_join_test_aocs(b) include (a);
+insert into index_only_join_test select i,i from generate_series(1, 100)i;
+insert into index_only_join_test_aocs select i,i from generate_series(1, 100)i;
+analyze index_only_join_test;
+analyze index_only_join_test_aocs;
+set enable_nestloop to on;
+set enable_seqscan to off;
+set optimizer_enable_indexscan to off;
+explain select t1.a from index_only_join_test t1, index_only_join_test t2 where t1.a = t2.a and t1.b < 10;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.31..21.14 rows=13 width=4)
+ -> Nested Loop (cost=0.31..20.96 rows=4 width=4)
+ -> Index Only Scan using index_only_join_test_b_idx on index_only_join_test t1 (cost=0.15..8.41 rows=3 width=4)
+ Index Cond: (b < 10)
+ -> Index Only Scan using index_only_join_test_a_idx on index_only_join_test t2 (cost=0.15..4.17 rows=1 width=4)
+ Index Cond: (a = t1.a)
+ Optimizer: Postgres-based planner
+(7 rows)
+
+reset optimizer_enable_indexscan;
+explain select t1.a from index_only_join_test_aocs t1, index_only_join_test_aocs t2 where t1.a = t2.a and t1.b < 10;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.31..12.48 rows=13 width=4)
+ -> Nested Loop (cost=0.31..12.31 rows=4 width=4)
+ -> Index Only Scan using index_only_join_test_aocs_b_idx on index_only_join_test_aocs t1 (cost=0.15..4.49 rows=3 width=4)
+ Index Cond: (b < 10)
+ -> Index Only Scan using index_only_join_test_aocs_a_idx on index_only_join_test_aocs t2 (cost=0.15..2.59 rows=1 width=4)
+ Index Cond: (a = t1.a)
+ Optimizer: Postgres-based planner
+(7 rows)
+
+reset enable_nestloop;
+reset enable_seqscan;
+drop table index_only_join_test;
+drop table index_only_join_test_aocs;
diff --git a/src/test/regress/expected/bfv_index_optimizer.out b/src/test/regress/expected/bfv_index_optimizer.out
index 2811efcdaf..c838941789 100644
--- a/src/test/regress/expected/bfv_index_optimizer.out
+++ b/src/test/regress/expected/bfv_index_optimizer.out
@@ -1408,3 +1408,52 @@ explain select * from two_idx_tbl where 'cc' = x or 'dd' = y;
Optimizer: Pivotal Optimizer (GPORCA)
(9 rows)
+RESET optimizer_enable_indexscan;
+RESET optimizer_enable_indexonlyscan;
+RESET enable_indexonlyscan;
+RESET seq_page_cost;
+-- Test IndexNLJoin on IndexOnlyScan in ORCA (both heap and AOCS table)
+create table index_only_join_test (a int, b int) distributed by (a);
+create table index_only_join_test_aocs (a int, b int) with (appendonly='true') distributed by (a);
+create index index_only_join_test_a_idx on index_only_join_test(a);
+create index index_only_join_test_b_idx on index_only_join_test(b) include (a);
+create index index_only_join_test_aocs_a_idx on index_only_join_test_aocs(a);
+create index index_only_join_test_aocs_b_idx on index_only_join_test_aocs(b) include (a);
+insert into index_only_join_test select i,i from generate_series(1, 100)i;
+insert into index_only_join_test_aocs select i,i from generate_series(1, 100)i;
+analyze index_only_join_test;
+analyze index_only_join_test_aocs;
+set enable_nestloop to on;
+set enable_seqscan to off;
+set optimizer_enable_indexscan to off;
+explain select t1.a from index_only_join_test t1, index_only_join_test t2 where t1.a = t2.a and t1.b < 10;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..60.55 rows=10 width=4)
+ -> Nested Loop (cost=0.00..60.55 rows=4 width=4)
+ Join Filter: true
+ -> Index Only Scan using index_only_join_test_b_idx on index_only_join_test (cost=0.00..6.00 rows=4 width=4)
+ Index Cond: (b < 10)
+ -> Index Only Scan using index_only_join_test_a_idx on index_only_join_test index_only_join_test_1 (cost=0.00..54.55 rows=1 width=1)
+ Index Cond: (a = index_only_join_test.a)
+ Optimizer: GPORCA
+(8 rows)
+
+reset optimizer_enable_indexscan;
+explain select t1.a from index_only_join_test_aocs t1, index_only_join_test_aocs t2 where t1.a = t2.a and t1.b < 10;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..60.65 rows=10 width=4)
+ -> Nested Loop (cost=0.00..60.65 rows=4 width=4)
+ Join Filter: true
+ -> Index Only Scan using index_only_join_test_aocs_b_idx on index_only_join_test_aocs (cost=0.00..6.05 rows=4 width=4)
+ Index Cond: (b < 10)
+ -> Index Only Scan using index_only_join_test_aocs_a_idx on index_only_join_test_aocs index_only_join_test_aocs_1 (cost=0.00..54.60 rows=1 width=1)
+ Index Cond: (a = index_only_join_test_aocs.a)
+ Optimizer: GPORCA
+(8 rows)
+
+reset enable_nestloop;
+reset enable_seqscan;
+drop table index_only_join_test;
+drop table index_only_join_test_aocs;
diff --git a/src/test/regress/expected/gp_covering_index_optimizer.out b/src/test/regress/expected/gp_covering_index_optimizer.out
index 3a7135ba61..1ddf7ba3d3 100644
--- a/src/test/regress/expected/gp_covering_index_optimizer.out
+++ b/src/test/regress/expected/gp_covering_index_optimizer.out
@@ -488,10 +488,11 @@ SELECT pt.a, pt.b FROM test_cover_index_on_pt AS pt JOIN test_basic_cover_index
Heap Fetches: 0
Number of partitions to scan: 1 (out of 4)
Partitions scanned: Avg 1.0 x 3 workers. Max 1 parts (seg0).
- -> Index Scan using i_test_basic_index on test_basic_cover_index (actual rows=1 loops=1)
+ -> Index Only Scan using i_test_basic_index on test_basic_cover_index (actual rows=1 loops=1)
Index Cond: ((a = test_cover_index_on_pt.a) AND (a < 10))
+ Heap Fetches: 0
Optimizer: GPORCA
-(12 rows)
+(13 rows)
SELECT pt.a, pt.b FROM test_cover_index_on_pt AS pt JOIN test_basic_cover_index AS t ON pt.a=t.a WHERE pt.a<10 and pt.b=2;
a | b
@@ -513,10 +514,11 @@ SELECT pt.a, pt.b FROM test_cover_index_on_pt AS pt LEFT JOIN test_basic_cover_i
Heap Fetches: 0
Number of partitions to scan: 1 (out of 4)
Partitions scanned: Avg 1.0 x 3 workers. Max 1 parts (seg0).
- -> Index Scan using i_test_basic_index on test_basic_cover_index (actual rows=1 loops=1)
+ -> Index Only Scan using i_test_basic_index on test_basic_cover_index (actual rows=1 loops=1)
Index Cond: ((a = test_cover_index_on_pt.a) AND (a < 10))
+ Heap Fetches: 0
Optimizer: GPORCA
-(12 rows)
+(13 rows)
SELECT pt.a, pt.b FROM test_cover_index_on_pt AS pt LEFT JOIN test_basic_cover_index AS t ON pt.a=t.a WHERE pt.a<10 and pt.b=2;
a | b
diff --git a/src/test/regress/expected/gporca_optimizer.out b/src/test/regress/expected/gporca_optimizer.out
index 27a3739fa5..a8196c5ec6 100644
--- a/src/test/regress/expected/gporca_optimizer.out
+++ b/src/test/regress/expected/gporca_optimizer.out
@@ -13304,9 +13304,8 @@ explain (costs off) select * from tpart_dim d join t_ao_btree f on d.a=f.a where
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
Join Filter: true
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on tpart_dim
- Filter: (b = 1)
+ -> Seq Scan on tpart_dim
+ Filter: (b = 1)
-> Index Only Scan using t_ao_btree_ix on t_ao_btree
Index Cond: (a = tpart_dim.a)
Optimizer: Pivotal Optimizer (GPORCA)
diff --git a/src/test/regress/expected/subselect_optimizer.out b/src/test/regress/expected/subselect_optimizer.out
index 797d1d8696..e534d39f4d 100644
--- a/src/test/regress/expected/subselect_optimizer.out
+++ b/src/test/regress/expected/subselect_optimizer.out
@@ -1002,7 +1002,7 @@ where (exists(select 1 from tenk1 k where k.unique1 = t.unique2) or ten < 0)
Hash Key: tenk1.unique2
-> Index Scan using tenk1_thous_tenthous on tenk1
Index Cond: (thousand = 1)
- -> Index Scan using tenk1_unique1 on tenk1 tenk1_1
+ -> Index Only Scan using tenk1_unique1 on tenk1 tenk1_1
Index Cond: (unique1 = tenk1.unique2)
Optimizer: GPORCA
(17 rows)
diff --git a/src/test/regress/sql/bfv_index.sql b/src/test/regress/sql/bfv_index.sql
index 13e17179ed..3369e3c74e 100644
--- a/src/test/regress/sql/bfv_index.sql
+++ b/src/test/regress/sql/bfv_index.sql
@@ -622,3 +622,33 @@ set optimizer_enable_indexscan=off;
-- identical plans
explain select * from two_idx_tbl where x = 'cc' or y = 'dd';
explain select * from two_idx_tbl where 'cc' = x or 'dd' = y;
+
+RESET optimizer_enable_indexscan;
+RESET optimizer_enable_indexonlyscan;
+RESET enable_indexonlyscan;
+RESET seq_page_cost;
+
+-- Test IndexNLJoin on IndexOnlyScan in ORCA (both heap and AOCS table)
+create table index_only_join_test (a int, b int) distributed by (a);
+create table index_only_join_test_aocs (a int, b int) with (appendonly='true') distributed by (a);
+
+create index index_only_join_test_a_idx on index_only_join_test(a);
+create index index_only_join_test_b_idx on index_only_join_test(b) include (a);
+create index index_only_join_test_aocs_a_idx on index_only_join_test_aocs(a);
+create index index_only_join_test_aocs_b_idx on index_only_join_test_aocs(b) include (a);
+insert into index_only_join_test select i,i from generate_series(1, 100)i;
+insert into index_only_join_test_aocs select i,i from generate_series(1, 100)i;
+analyze index_only_join_test;
+analyze index_only_join_test_aocs;
+
+set enable_nestloop to on;
+set enable_seqscan to off;
+set optimizer_enable_indexscan to off;
+explain select t1.a from index_only_join_test t1, index_only_join_test t2 where t1.a = t2.a and t1.b < 10;
+reset optimizer_enable_indexscan;
+explain select t1.a from index_only_join_test_aocs t1, index_only_join_test_aocs t2 where t1.a = t2.a and t1.b < 10;
+reset enable_nestloop;
+reset enable_seqscan;
+
+drop table index_only_join_test;
+drop table index_only_join_test_aocs;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 17/30: Update CDynamicPtrArray::Sort/IsSorted to require CompareFn
Posted by ma...@apache.org.
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 576811061a97deef9f537f3669d2dc3e74f48d0d
Author: David Kimura <dk...@vmware.com>
AuthorDate: Mon Jan 22 14:28:52 2024 -0800
Update CDynamicPtrArray::Sort/IsSorted to require CompareFn
Prior to this commit, the default behavior of Sort/IsSorted used a
comparison function that dereferenced the first sizeof(ULONG). The
problem is that for many cases the default compare function doesn't make
sense; and worse is that it hides that from the user. For example,
```c++
CWStringConst *b_string = GPOS_NEW(mp) CWStringConst(mp, "b_string");
CWStringConst *a_string = GPOS_NEW(mp) CWStringConst(mp, "a_string");
StringPtrArray *array = GPOS_NEW(mp) StringPtrArray(mp);
array->Append(b_string);
array->Append(a_string);
array->Sort();
// FAILS!
GPOS_ASSERT((*array)[0]->Equals(a_string));
// FAILS!
GPOS_ASSERT((*array)[1]->Equals(b_string));
```
In this case, the first sizeof(ULONG) bytes of CWStringConst does not
correctly influence the sort order. In fact, the string data doesn't
even exist on the object itself.
This commit forces the user to specify a CompareFn. It is still possible
to shoot oneself in the foot, but now it's not the default behavior.
---
.../gporca/libgpopt/include/gpopt/search/CGroup.h | 18 ++++++++
.../libgpopt/src/search/CGroupExpression.cpp | 4 +-
.../libgpos/include/gpos/common/CDynamicPtrArray.h | 32 +++++--------
.../libgpos/include/gpos/string/CWStringBase.h | 8 ++++
.../unittest/gpos/common/CDynamicPtrArrayTest.h | 1 +
.../unittest/gpos/common/CDynamicPtrArrayTest.cpp | 52 ++++++++++++++++++++--
.../src/unittest/gpos/common/CHashMapIterTest.cpp | 4 +-
.../src/unittest/gpos/common/CHashSetIterTest.cpp | 2 +-
.../libnaucrates/include/naucrates/md/IMDId.h | 19 ++++++++
.../src/statistics/CJoinStatsProcessor.cpp | 2 +-
10 files changed, 110 insertions(+), 32 deletions(-)
diff --git a/src/backend/gporca/libgpopt/include/gpopt/search/CGroup.h b/src/backend/gporca/libgpopt/include/gpopt/search/CGroup.h
index ee81fbe992..0b94e9df7e 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/search/CGroup.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/search/CGroup.h
@@ -614,6 +614,24 @@ public:
void DbgPrintWithProperties();
#endif
+ // Compare function used by CDynamicPtrArray::Sort
+ static INT
+ Compare(const void *left, const void *right)
+ {
+ if ((*((CGroup **) left))->Id() < (*((CGroup **) right))->Id())
+ {
+ return -1;
+ }
+ else if ((*((CGroup **) left))->Id() > ((*(CGroup **) right))->Id())
+ {
+ return 1;
+ }
+
+ GPOS_ASSERT((*((CGroup **) left))->Id() ==
+ ((*(CGroup **) right))->Id());
+ return 0;
+ }
+
}; // class CGroup
} // namespace gpopt
diff --git a/src/backend/gporca/libgpopt/src/search/CGroupExpression.cpp b/src/backend/gporca/libgpopt/src/search/CGroupExpression.cpp
index 04312360ef..0ff250dd0a 100644
--- a/src/backend/gporca/libgpopt/src/search/CGroupExpression.cpp
+++ b/src/backend/gporca/libgpopt/src/search/CGroupExpression.cpp
@@ -71,9 +71,9 @@ CGroupExpression::CGroupExpression(CMemoryPool *mp, COperator *pop,
{
m_pdrgpgroupSorted = GPOS_NEW(mp) CGroupArray(mp, pdrgpgroup->Size());
m_pdrgpgroupSorted->AppendArray(pdrgpgroup);
- m_pdrgpgroupSorted->Sort();
+ m_pdrgpgroupSorted->Sort(CGroup::Compare);
- GPOS_ASSERT(m_pdrgpgroupSorted->IsSorted());
+ GPOS_ASSERT(m_pdrgpgroupSorted->IsSorted(CGroup::Compare));
}
m_ppartialplancostmap = GPOS_NEW(mp) PartialPlanToCostMap(mp);
diff --git a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
index d187b71364..4417cc998b 100644
--- a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
+++ b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
@@ -57,6 +57,14 @@ CleanupRelease(T *elem)
(dynamic_cast<CRefCount *>(elem))->Release();
}
+// Compare function used by CDynamicPtrArray::Sort
+inline INT
+CompareUlongPtr(const void *right, const void *left)
+{
+ return *((ULONG *) right) - *((ULONG *) left);
+}
+
+
// commonly used array types
// arrays of unsigned integers
@@ -103,26 +111,6 @@ private:
// actual array
T **m_elems;
- // comparison function for pointers
- static INT
- PtrCmp(const void *p1, const void *p2)
- {
- ULONG_PTR ulp1 = *(ULONG_PTR *) p1;
- ULONG_PTR ulp2 = *(ULONG_PTR *) p2;
-
- if (ulp1 < ulp2)
- {
- return -1;
- }
-
- if (ulp1 > ulp2)
- {
- return 1;
- }
-
- return 0;
- }
-
// resize function
void
Resize(ULONG new_size)
@@ -240,7 +228,7 @@ public:
// sort array
void
- Sort(CompareFn compare_func = PtrCmp)
+ Sort(CompareFn compare_func)
{
clib::Qsort(m_elems, m_size, sizeof(T *), compare_func);
}
@@ -308,7 +296,7 @@ public:
#ifdef GPOS_DEBUG
// check if array is sorted
BOOL
- IsSorted(CompareFn compare_func = PtrCmp) const
+ IsSorted(CompareFn compare_func) const
{
for (ULONG i = 1; i < m_size; i++)
{
diff --git a/src/backend/gporca/libgpos/include/gpos/string/CWStringBase.h b/src/backend/gporca/libgpos/include/gpos/string/CWStringBase.h
index 199e3be039..54ae2d0c9b 100644
--- a/src/backend/gporca/libgpos/include/gpos/string/CWStringBase.h
+++ b/src/backend/gporca/libgpos/include/gpos/string/CWStringBase.h
@@ -98,6 +98,14 @@ public:
// count how many times the character appears in string
ULONG CountOccurrencesOf(const WCHAR wc) const;
+
+ static INT
+ Compare(const void *left, const void *right)
+ {
+ CWStringBase *leftstr = *(CWStringBase **) left;
+ CWStringBase *rightstr = *(CWStringBase **) right;
+ return wcscmp(leftstr->GetBuffer(), rightstr->GetBuffer());
+ }
};
} // namespace gpos
diff --git a/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h b/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h
index 702edbd7ba..0b8bbcdf5d 100644
--- a/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h
+++ b/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h
@@ -34,6 +34,7 @@ public:
static GPOS_RESULT EresUnittest_ArrayAppendExactFit();
static GPOS_RESULT EresUnittest_PdrgpulSubsequenceIndexes();
static GPOS_RESULT EresUnittest_Equals();
+ static GPOS_RESULT EresUnittest_Sort();
// destructor function for char's
static void DestroyChar(char *);
diff --git a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp
index 7726ebe439..73b4060a00 100644
--- a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp
+++ b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp
@@ -41,6 +41,7 @@ CDynamicPtrArrayTest::EresUnittest()
GPOS_UNITTEST_FUNC(
CDynamicPtrArrayTest::EresUnittest_PdrgpulSubsequenceIndexes),
GPOS_UNITTEST_FUNC(CDynamicPtrArrayTest::EresUnittest_Equals),
+ GPOS_UNITTEST_FUNC(CDynamicPtrArrayTest::EresUnittest_Sort),
};
return CUnittest::EresExecute(rgut, GPOS_ARRAY_SIZE(rgut));
@@ -77,6 +78,10 @@ CDynamicPtrArrayTest::EresUnittest_Basic()
pdrg->Append(rgsz[i]);
GPOS_ASSERT(i + 1 == pdrg->Size());
GPOS_ASSERT(rgsz[i] == (*pdrg)[i]);
+
+ // Using CompareUlongPtr as comparison function for Sort/IsSorted
+ // requires that the data fits into the size of ULONG.
+ GPOS_ASSERT((sizeof(CHAR) * strlen(rgsz[i])) <= sizeof(ULONG));
}
// lookup tests
@@ -98,7 +103,7 @@ CDynamicPtrArrayTest::EresUnittest_Basic()
pdrg->IndexOf(szMissingElem);
GPOS_ASSERT(gpos::ulong_max == ulPosMissing);
// all elements were inserted in ascending order
- GPOS_ASSERT(pdrg->IsSorted());
+ GPOS_ASSERT(pdrg->IsSorted(CompareUlongPtr));
pdrg->Release();
@@ -119,10 +124,10 @@ CDynamicPtrArrayTest::EresUnittest_Basic()
GPOS_ASSERT(c == pdrgULONG->Size());
// all elements were inserted in descending order
- GPOS_ASSERT(!pdrgULONG->IsSorted());
+ GPOS_ASSERT(!pdrgULONG->IsSorted(CompareUlongPtr));
- pdrgULONG->Sort();
- GPOS_ASSERT(pdrgULONG->IsSorted());
+ pdrgULONG->Sort(CompareUlongPtr);
+ GPOS_ASSERT(pdrgULONG->IsSorted(CompareUlongPtr));
// test that all positions got copied and sorted properly
for (ULONG_PTR ulpJ = 0; ulpJ < c; ulpJ++)
@@ -393,4 +398,43 @@ CDynamicPtrArrayTest::EresUnittest_Equals()
return GPOS_OK;
}
+
+//---------------------------------------------------------------------------
+// @function:
+// CDynamicPtrArrayTest::EresUnittest_Sort
+//
+// @doc:
+// Testing whether an array can be sorted
+//
+//---------------------------------------------------------------------------
+GPOS_RESULT
+CDynamicPtrArrayTest::EresUnittest_Sort()
+{
+ CAutoMemoryPool amp;
+ CMemoryPool *mp = amp.Pmp();
+
+ StringPtrArray *unsortedStringArray = GPOS_NEW(mp) StringPtrArray(mp);
+ unsortedStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "c_string"));
+ unsortedStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "a_string"));
+ unsortedStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "b_string"));
+
+ unsortedStringArray->Sort(CWStringBase::Compare);
+
+ StringPtrArray *sortedStringArray = GPOS_NEW(mp) StringPtrArray(mp);
+ sortedStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "a_string"));
+ sortedStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "b_string"));
+ sortedStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "c_string"));
+
+ for (ULONG ul = 0; ul < unsortedStringArray->Size(); ul++)
+ {
+ GPOS_ASSERT(
+ (*unsortedStringArray)[ul]->Equals((*sortedStringArray)[ul]));
+ }
+
+ unsortedStringArray->Release();
+ sortedStringArray->Release();
+
+ return GPOS_OK;
+}
+
// EOF
diff --git a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashMapIterTest.cpp b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashMapIterTest.cpp
index d5ebd3bce7..d214c05bb6 100644
--- a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashMapIterTest.cpp
+++ b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashMapIterTest.cpp
@@ -97,8 +97,8 @@ CHashMapIterTest::EresUnittest_Basic()
pdrgpulIterValues->Append(mi.Value());
}
- pdrgpulIterKeys->Sort();
- pdrgpulIterValues->Sort();
+ pdrgpulIterKeys->Sort(CompareUlongPtr);
+ pdrgpulIterValues->Sort(CompareUlongPtr);
GPOS_ASSERT(pdrgpulKeys->Equals(pdrgpulIterKeys.Value()));
GPOS_ASSERT(pdrgpulValues->Equals(pdrgpulIterValues.Value()));
diff --git a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashSetIterTest.cpp b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashSetIterTest.cpp
index ca8e841fe2..7cf438577d 100644
--- a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashSetIterTest.cpp
+++ b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CHashSetIterTest.cpp
@@ -71,7 +71,7 @@ CHashSetIterTest::EresUnittest_Basic()
pdrgpulIterValues->Append(si.Get());
}
- pdrgpulIterValues->Sort();
+ pdrgpulIterValues->Sort(CompareUlongPtr);
GPOS_ASSERT(pdrgpulValues->Equals(pdrgpulIterValues.Value()));
}
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/md/IMDId.h b/src/backend/gporca/libnaucrates/include/naucrates/md/IMDId.h
index a9e15adc97..358b40b1f7 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/md/IMDId.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/md/IMDId.h
@@ -152,6 +152,25 @@ public:
return left_mdid->Equals(right_mdid);
}
+ // Compare function used by CDynamicPtrArray::Sort
+ static INT
+ CompareHashVal(const void *left, const void *right)
+ {
+ if ((*((IMDId **) left))->HashValue() <
+ (*((IMDId **) right))->HashValue())
+ {
+ return -1;
+ }
+ else if ((*((IMDId **) left))->HashValue() >
+ ((*(IMDId **) right))->HashValue())
+ {
+ return 1;
+ }
+
+ GPOS_ASSERT((*((IMDId **) left))->HashValue() ==
+ ((*(IMDId **) right))->HashValue());
+ return 0;
+ }
// is the mdid valid
virtual BOOL IsValid() const = 0;
diff --git a/src/backend/gporca/libnaucrates/src/statistics/CJoinStatsProcessor.cpp b/src/backend/gporca/libnaucrates/src/statistics/CJoinStatsProcessor.cpp
index 983168eba2..be314a66f2 100644
--- a/src/backend/gporca/libnaucrates/src/statistics/CJoinStatsProcessor.cpp
+++ b/src/backend/gporca/libnaucrates/src/statistics/CJoinStatsProcessor.cpp
@@ -407,7 +407,7 @@ CJoinStatsProcessor::SetResultingJoinStats(
mdid_inner->AddRef();
mdid_pair->Append(mdid_outer);
mdid_pair->Append(mdid_inner);
- mdid_pair->Sort();
+ mdid_pair->Sort(IMDId::CompareHashVal);
if (colref_outer->IsDistCol() && colref_inner->IsDistCol())
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 06/30: Derive dynamic table scan cardinality from leaf parts
Posted by ma...@apache.org.
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 4f68dcf01a03be24477e5c2ab0023de3c8660161
Author: Jingyu Wang <wj...@vmware.com>
AuthorDate: Tue Nov 21 11:56:21 2023 -0800
Derive dynamic table scan cardinality from leaf parts
**Motivation**
Currently, ORCA lacks support for deriving stats for predicates that involve
dates and other time-related data types. This limitation arises from the
internal representation of these data types -- date as long int whereas other
time-related types as doubles. This design choice was made for implementation
convenience. Integers provide sufficient granularity for date types, and doubles
are necessary for other time-related types to accommodate precision down to
microseconds. However, this choice prevents the stats derivation for predicates
involving different data types. Direct comparison is impossible when the column
is represented by int and the value by double. As of now, ORCA detects such
predicates and uses default parameters to calculate stats. This often results in
inaccurate stats and poor plan performance. This PR alters the internal
representation of date types to doubles as well, and enables stats derivation in
predicates involving different time-related data types.
**Implementation**
Converting the date type to double is a straightforward transition. ORCA already
supports stats derivation for data types represented by doubles. The complexity
arises from ORCA's use of the constraint framework, where predicates are
converted to constraints. Previously, when the date was represented by int,
individual dates were isolated points with no reference to specific time. An
equality predicate of the date type translated into a singleton constraint. Now,
with the date type represented by double, the same equality predicate is no
longer a singleton but a range constraint. It compasses a lower and upper bound
presenting the start and end of the day.
This internal data type transition may introduce discrepancies in stats
derivation through bucket sampling. Similar to constraints, histogram buckets
have lower and upper bounds. Whereas a singleton constraint can fall into one
bucket only, a range constraint will likely span across multiple. This kind of
inconsistency may results in inaccurate stats and should be mitigated. One
notable example is the computation of tuples to be scanned in static partition
elimination. This is currently achieved by comparing the predicate constraints
on the partition key to the histogram buckets. The comparison dervies a scale
factor, which is then used to calculate the filtered tuple count. To address the
aforementioned issue, this PR adopts a more robust approach by directly summing
the tuple count from the leaf partitions slated for scanning. This is
facilitated in this version of Greenplum through the storage of leaf partition
stats in the metadata.
**Discussions**
In addition to routine CI tests, this PR has undergone testing in both explain
and workload pipelines. Given that the code update focuses on stats tuning,
there is less concern about it leading to incorrect query results. The primary
focus was on identifying factors that could impact plan performance.
We observed variations in plans involving hash vs. group-by aggregations. This
is expected, considering this PR's purpose is to derive more accurate
cardinality, which often influences the optimal choice of aggregation
operations. We also noticed changes in join orders involving multiple partition
tables. This can be attributed to how ORCA estimates cardinality in dynamic
partition elimination. In a join where both tables can act as the partition
selector for the other, the cost model may favor a specific join order if the
partition selector can sufficiently reduce the outer cardinality to offset the
higher cost of hashing a larger inner table. It's essentially a trade-off
between which side is more suitable for hashing versus being the selector side
of DPE.
It is crucial to verify that the cardinality of (dynamic) table scans involving
single-type predicates remains mostly consistent compared to the previous state.
However, in the upcoming tasks, we should limit the above mentioned discount
effect by DPE if static pruning already eliminates a majority of the partitions.
---
.../AllowIndexOnlyScanOnMixedPartitionedTable.mdp | 2 +-
.../dxl/minidump/BitmapIndexProbeMergeFilters.mdp | 843 -
.../dxl/minidump/DynamicBitmapTableScan-UUID.mdp | 4 +-
.../minidump/DynamicIndexOnlyScan-Homogenous.mdp | 2 +-
.../minidump/DynamicIndexOnlyScan-InnerJoin.mdp | 969 +-
.../dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp | 1097 +-
.../DynamicIndexScan-DefaultPartition-2.mdp | 2 +-
.../DynamicIndexScan-Heterogenous-NoDTS.mdp | 2 +-
.../DynamicIndexScan-Heterogenous-Overlapping.mdp | 2 +-
.../data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp | 11295 -------------
.../data/dxl/minidump/ExtractPredicateFromDisj.mdp | 15932 -------------------
.../dxl/minidump/HJN-DPE-Bitmap-Outer-Child.mdp | 6 +-
.../gporca/data/dxl/minidump/JoinBelowUnionAll.mdp | 2158 ++-
.../gporca/data/dxl/minidump/JoinOrderDPE.mdp | 3552 ++---
.../data/dxl/minidump/LargeMultiColumnInList.mdp | 4 +-
.../dxl/minidump/NLJ-Broadcast-DPE-Outer-Child.mdp | 8 +-
.../data/dxl/minidump/PartForeignMixedSPE.mdp | 8 +-
.../data/dxl/minidump/PartForeignUniformSPE.mdp | 4 +-
.../data/dxl/minidump/PartSelectorOnJoinSide2.mdp | 8 +-
.../data/dxl/minidump/PartTbl-DPE-GroupBy.mdp | 6 +-
.../data/dxl/minidump/PartTbl-JoinOverGbAgg-2.mdp | 16 +-
.../gporca/data/dxl/minidump/PartTbl-LASJ.mdp | 10 +-
.../dxl/minidump/PartTbl-MultiWayJoinWithDPE-2.mdp | 14 +-
.../dxl/minidump/PartTbl-MultiWayJoinWithDPE.mdp | 5631 -------
.../PartTbl-SPE-DynamicTableScan-List-Cost1.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost2.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost3.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost4.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost5.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost1.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost2.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp | 4 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost5.mdp | 4 +-
.../data/dxl/minidump/PartTbl-SubqueryOuterRef.mdp | 6 +-
...ionedTableContainingAppendOnlyVersion6Child.mdp | 4 +-
...ionedTableContainingAppendOnlyVersion6Child.mdp | 4 +-
.../data/dxl/minidump/Select-Over-PartTbl.mdp | 4 +-
.../gporca/data/dxl/minidump/SemiJoinDPE.mdp | 6 +-
.../src/base/CDistributionSpecReplicated.cpp | 3 +-
.../libgpopt/src/operators/CLogicalDynamicGet.cpp | 49 +-
.../naucrates/statistics/CFilterStatsProcessor.h | 3 +-
.../src/statistics/CFilterStatsProcessor.cpp | 16 +-
src/backend/gporca/server/CMakeLists.txt | 6 +-
.../src/unittest/gpopt/minidump/CBitmapTest.cpp | 1 -
src/test/regress/expected/bfv_statistic.out | 169 +
.../regress/expected/bfv_statistic_optimizer.out | 171 +
src/test/regress/sql/bfv_statistic.sql | 63 +
47 files changed, 4605 insertions(+), 37511 deletions(-)
diff --git a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp
index 83720a42bf..a5f1c66637 100644
--- a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp
@@ -800,7 +800,7 @@
<dxl:Plan Id="0" SpaceSize="3">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000255" Rows="1.006711" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000255" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexProbeMergeFilters.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexProbeMergeFilters.mdp
deleted file mode 100644
index 8a798f6146..0000000000
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexProbeMergeFilters.mdp
+++ /dev/null
@@ -1,843 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/*
- * this repro has to be a partition table because we derive the wrong stats
- * only when we use a partition table: the logical bitmap table get would be
- * placed in the same memo group with the original select otherwise
- */
-
-CREATE TABLE table_with_two_indices_ao (a int, b int, c int) WITH (appendonly=true) DISTRIBUTED BY (a) PARTITION BY range(b) (START(14) END(18) EVERY (2));
-INSERT INTO table_with_two_indices_ao SELECT generate_series(1, 4), generate_series(14, 17), generate_series(1, 10001);
-CREATE INDEX idx_b on table_with_two_indices_ao(b);
-CREATE INDEX idx_c on table_with_two_indices_ao(c);
-ANALYZE table_with_two_indices_ao;
-
-EXPLAIN SELECT * FROM table_with_two_indices_ao WHERE b = 15 AND c BETWEEN 10000 AND 10000;
--->
-<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
- <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="7000" Rank="7001"/>
- <dxl:CostModelConfig CostModelType="1" SegmentsForCosting="3">
- <dxl:CostParams>
- <dxl:CostParam Name="NLJFactor" Value="1.000000" LowerBound="0.500000" UpperBound="1.500000"/>
- </dxl:CostParams>
- </dxl:CostModelConfig>
- <dxl:Hint JoinArityForAssociativityCommutativity="7" ArrayExpansionThreshold="25" JoinOrderDynamicProgThreshold="10" BroadcastThreshold="10000000" EnforceConstraintsOnDML="true"/>
- <dxl:TraceFlags Value="102001,102002,102003,102120,102144,103001,103014,103015,103022,103023,103027,103033,104003,104004,104005,105000"/>
- </dxl:OptimizerConfig>
- <dxl:Metadata SystemIds="0.GPDB">
- <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true">
- <dxl:LeftType Mdid="0.23.1.0"/>
- <dxl:RightType Mdid="0.23.1.0"/>
- <dxl:ResultType Mdid="0.16.1.0"/>
- <dxl:OpFunc Mdid="0.149.1.0"/>
- <dxl:Commutator Mdid="0.525.1.0"/>
- <dxl:InverseOp Mdid="0.521.1.0"/>
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1978.1.0"/>
- <dxl:Opfamily Mdid="0.3027.1.0"/>
- </dxl:Opfamilies>
- </dxl:GPDBScalarOp>
- <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true">
- <dxl:LeftType Mdid="0.23.1.0"/>
- <dxl:RightType Mdid="0.23.1.0"/>
- <dxl:ResultType Mdid="0.16.1.0"/>
- <dxl:OpFunc Mdid="0.150.1.0"/>
- <dxl:Commutator Mdid="0.523.1.0"/>
- <dxl:InverseOp Mdid="0.97.1.0"/>
- <dxl: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"/>
- <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" IsFixedLength="true" Length="4" PassByValue="true">
- <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" IsFixedLength="true" Length="4" PassByValue="true">
- <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.2118.1.0"/>
- <dxl:MaxAgg Mdid="0.2134.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="false" IsMergeJoinable="false" IsComposite="false" IsFixedLength="true" Length="6" PassByValue="false">
- <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:RelationStatistics Mdid="2.44841.1.0" Name="table_with_two_indices_ao" Rows="40004.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.44841.1.0" Name="table_with_two_indices_ao" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,5,3" PartitionColumns="1" PartitionTypes="r">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="0.45040.1.0" IsPartial="false"/>
- <dxl:IndexInfo Mdid="0.44979.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.44841001.1.0"/>
- <dxl:Partition Mdid="6.44841002.1.0"/>
- </dxl:Partitions>
- </dxl:Relation>
- <dxl:Relation Mdid="6.44841001.1.0" Name="table_with_two_indices_ao_prt_1" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,5,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="0.45040001.1.0" IsPartial="false"/>
- <dxl:IndexInfo Mdid="0.44979001.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="14"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="16"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.44841002.1.0" Name="table_with_two_indices_ao_prt_2" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,5,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="0.45040002.1.0" IsPartial="false"/>
- <dxl:IndexInfo Mdid="0.44979002.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="16"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="18"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Index Mdid="0.44979.1.0" Name="idx_b_1_prt_1" IsClustered="false" IndexType="Bitmap" IndexItemType="0.2283.1.0" KeyColumns="1" IncludedColumns="" ReturnableColumns="">
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1978.1.0"/>
- </dxl:Opfamilies>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.44979001.1.0"/>
- <dxl:Partition Mdid="6.44979002.1.0"/>
- </dxl:Partitions>
- </dxl:Index>
- <dxl:ColumnStatistics Mdid="1.44841.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
- <dxl:StatsBucket Frequency="0.249031" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.248283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.249937" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.251749" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.44841.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
- <dxl:StatsBucket Frequency="0.249031" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.248283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.249937" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.251749" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <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"/>
- <dxl:ResultType Mdid="0.16.1.0"/>
- <dxl:OpFunc Mdid="0.65.1.0"/>
- <dxl:Commutator Mdid="0.96.1.0"/>
- <dxl:InverseOp Mdid="0.518.1.0"/>
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1978.1.0"/>
- <dxl:Opfamily Mdid="0.1979.1.0"/>
- <dxl:Opfamily Mdid="0.3027.1.0"/>
- </dxl:Opfamilies>
- </dxl:GPDBScalarOp>
- <dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true">
- <dxl:LeftType Mdid="0.23.1.0"/>
- <dxl:RightType Mdid="0.23.1.0"/>
- <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:ColumnStatistics Mdid="1.44841.1.0.2" Name="c" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="193"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="193"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="200"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="200"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="370"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="370"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="500"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="500"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="600"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="600"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="800"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="800"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="900"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1100"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1197"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1197"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1300"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1300"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1385"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1385"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1484"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1484"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1593"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1593"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1800"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1800"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1900"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2100"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2191"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2191"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2292"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2292"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2392"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2392"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2490"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2490"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2590"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2590"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2683"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2683"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2777"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2777"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2868"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2868"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2976"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2976"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3075"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3075"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3169"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3169"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3260"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3260"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3353"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3353"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3466"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3466"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3569"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3569"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3650"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3650"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3749"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3749"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3844"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3844"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3932"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3932"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4037"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4037"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4130"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4130"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4233"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4233"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4330"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4330"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4431"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4431"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4526"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4526"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4629"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4629"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4741"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4741"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4841"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4841"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4932"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4932"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5026"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5026"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5129"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5129"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5300"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5300"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5400"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5400"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5500"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5500"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5600"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5600"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5800"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5800"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5900"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6100"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6200"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6200"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6300"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6300"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6400"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6400"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6500"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6500"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6600"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6600"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6800"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6800"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6900"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7100"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7200"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7200"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7300"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7300"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7400"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7400"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7500"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7500"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7600"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7600"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7799"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7799"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7893"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7893"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7995"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7995"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8090"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8090"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8190"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8190"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8283"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8283"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8387"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8387"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8475"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8475"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8565"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8565"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8662"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8662"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8764"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8764"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8869"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8869"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8972"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8972"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9061"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9061"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9159"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9159"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9245"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9245"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9339"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9339"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9435"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9435"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9533"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9533"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9621"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9621"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9725"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9725"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9810"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9810"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9901"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010000" DistinctValues="99.980000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9901"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="10001"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:Index Mdid="0.45040.1.0" Name="idx_c_1_prt_1" IsClustered="false" IndexType="Bitmap" IndexItemType="0.2283.1.0" KeyColumns="2" IncludedColumns="" ReturnableColumns="">
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1978.1.0"/>
- </dxl:Opfamilies>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.45040001.1.0"/>
- <dxl:Partition Mdid="6.45040002.1.0"/>
- </dxl:Partitions>
- </dxl:Index>
- </dxl:Metadata>
- <dxl:Query>
- <dxl:OutputColumns>
- <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:Ident ColId="3" ColName="c" TypeMdid="0.23.1.0"/>
- </dxl:OutputColumns>
- <dxl:CTEList/>
- <dxl:LogicalSelect>
- <dxl:And>
- <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="15"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="3" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<=" OperatorMdid="0.523.1.0">
- <dxl:Ident ColId="3" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- </dxl:And>
- <dxl:LogicalGet>
- <dxl:TableDescriptor Mdid="6.44841.1.0" TableName="table_with_two_indices_ao">
- <dxl:Columns>
- <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
- <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
- <dxl:Column ColId="3" Attno="3" ColName="c" TypeMdid="0.23.1.0" ColWidth="4"/>
- <dxl:Column ColId="4" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
- <dxl:Column ColId="5" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
- <dxl:Column ColId="6" Attno="-8" 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="2">
- <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.061296" Rows="1.766098" Width="12"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="0" Alias="a">
- <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="1" Alias="b">
- <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="2" Alias="c">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:SortingColumnList/>
- <dxl:DynamicBitmapTableScan SelectorIds="">
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.061218" Rows="1.766098" Width="12"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="0" Alias="a">
- <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="1" Alias="b">
- <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- <dxl:ProjElem ColId="2" Alias="c">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter>
- <dxl:And>
- <dxl:And>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<=" OperatorMdid="0.523.1.0">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- </dxl:And>
- <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
- <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="15"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:Filter>
- <dxl:RecheckCond>
- <dxl:And>
- <dxl:And>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<=" OperatorMdid="0.523.1.0">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- </dxl:And>
- <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
- <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="15"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:RecheckCond>
- <dxl:BitmapAnd TypeMdid="0.2283.1.0">
- <dxl:BitmapIndexProbe>
- <dxl:IndexCondList>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<=" OperatorMdid="0.523.1.0">
- <dxl:Ident ColId="2" ColName="c" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- </dxl:IndexCondList>
- <dxl:IndexDescriptor Mdid="0.45040.1.0" IndexName="idx_c_1_prt_1"/>
- </dxl:BitmapIndexProbe>
- <dxl:BitmapIndexProbe>
- <dxl:IndexCondList>
- <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
- <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="15"/>
- </dxl:Comparison>
- </dxl:IndexCondList>
- <dxl:IndexDescriptor Mdid="0.44979.1.0" IndexName="idx_b_1_prt_1"/>
- </dxl:BitmapIndexProbe>
- </dxl:BitmapAnd>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.44841001.1.0"/>
- </dxl:Partitions>
- <dxl:TableDescriptor Mdid="6.44841.1.0" TableName="table_with_two_indices_ao">
- <dxl:Columns>
- <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
- <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
- <dxl:Column ColId="2" Attno="3" ColName="c" TypeMdid="0.23.1.0" ColWidth="4"/>
- <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
- <dxl:Column ColId="4" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
- <dxl:Column ColId="5" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
- </dxl:Columns>
- </dxl:TableDescriptor>
- </dxl:DynamicBitmapTableScan>
- </dxl:GatherMotion>
- </dxl:Plan>
- </dxl:Thread>
-</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp
index d0c83bd5e2..e9d7bd2d1b 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp
@@ -384,7 +384,7 @@
<dxl:Plan Id="0" SpaceSize="2">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="432.104863" Rows="3996.000000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000884" Rows="3.196800" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -398,7 +398,7 @@
<dxl:SortingColumnList/>
<dxl:DynamicTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.747460" Rows="3996.000000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000598" Rows="3.196800" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp
index 08264a77b1..c69b17226f 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp
@@ -478,7 +478,7 @@
<dxl:Plan Id="0" SpaceSize="3">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.029170" Rows="160.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.026555" Rows="9.600000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="part_key">
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
index 6ffb32a9ba..fa956907c0 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
@@ -33,9 +33,14 @@
</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,102162,102163,103001,103014,103015,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ <dxl:TraceFlags Value="101013,102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,106000"/>
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
+ <dxl:Index Mdid="7.17727.1.0" Name="i_test_basic_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
<dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
<dxl:LeftType Mdid="0.23.1.0"/>
<dxl:RightType Mdid="0.23.1.0"/>
@@ -49,6 +54,28 @@
<dxl:Opfamily Mdid="0.10009.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
+ <dxl:RelationStatistics Mdid="2.17724.1.0" Name="test_basic_cover_index" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.17724.1.0" Name="test_basic_cover_index" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17727.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
<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"/>
@@ -67,6 +94,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
+ <dxl:RelationExtendedStatistics Mdid="10.17728.1.0" Name="test_cover_index_on_pt"/>
<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"/>
@@ -153,324 +181,450 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:RelationExtendedStatistics Mdid="10.114813.1.0" Name="test_basic_cover_index"/>
- <dxl:Index Mdid="7.114832.1.0" Name="i_test_cover_index_scan_on_partition_table" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1">
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1976.1.0"/>
- </dxl:Opfamilies>
- <dxl:Partitions>
- <dxl:Partition Mdid="0.114833.1.0"/>
- <dxl:Partition Mdid="0.114834.1.0"/>
- <dxl:Partition Mdid="0.114835.1.0"/>
- <dxl:Partition Mdid="0.114836.1.0"/>
- </dxl:Partitions>
- </dxl:Index>
- <dxl:Relation Mdid="6.114823.1.0" Name="test_cover_index_on_pt_1_prt_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114834.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.114820.1.0" Name="test_cover_index_on_pt_1_prt_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114833.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="0"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:RelationStatistics Mdid="2.114817.1.0" Name="test_cover_index_on_pt" Rows="10.000000" RelPages="6" RelAllVisible="6" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.114817.1.0" Name="test_cover_index_on_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114832.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.114820.1.0"/>
- <dxl:Partition Mdid="6.114823.1.0"/>
- <dxl:Partition Mdid="6.114826.1.0"/>
- <dxl:Partition Mdid="6.114829.1.0"/>
- </dxl:Partitions>
- </dxl:Relation>
- <dxl:Relation Mdid="6.114829.1.0" Name="test_cover_index_on_pt_1_prt_4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114836.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="4"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:ColumnStatistics Mdid="1.114817.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:ColumnStatistics Mdid="1.17728.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.199998" DistinctValues="1.000000">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
<dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.199998" DistinctValues="1.000000">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:ColumnStatistics Mdid="1.17728.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <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" CoercePathType="0"/>
+ <dxl:ColumnStatistics Mdid="1.17724.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="102"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="102"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="104"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="104"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="106"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="106"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="108"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="108"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="110"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="110"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="112"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="112"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="114"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="114"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="116"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="116"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="118"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.199998" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="118"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="120"/>
</dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.114817.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="120"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="122"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="122"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="124"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="124"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="126"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="126"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="128"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="128"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="130"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="130"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="132"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="132"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="134"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="134"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="136"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="136"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="138"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="138"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="140"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="140"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="142"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="142"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="144"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="144"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="146"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="146"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="148"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="148"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="150"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="150"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="152"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="152"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="156"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="156"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="158"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="158"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="160"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="160"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="162"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="162"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="164"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="164"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="166"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="166"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="168"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="168"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="170"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="170"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="172"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="172"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="174"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="174"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="176"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="176"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="178"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="178"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="180"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="180"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="182"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="182"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="184"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="184"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="186"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="186"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="188"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="188"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="190"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="190"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="192"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="192"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="194"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="194"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="196"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="196"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="198"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="198"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="200"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
- <dxl:Relation Mdid="6.114826.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114835.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Index Mdid="7.114816.1.0" Name="i_test_basic_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1">
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1976.1.0"/>
- </dxl:Opfamilies>
- </dxl:Index>
- <dxl:RelationStatistics Mdid="2.114813.1.0" Name="test_basic_cover_index" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.114813.1.0" Name="test_basic_cover_index" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114816.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- </dxl:Relation>
- <dxl:RelationExtendedStatistics Mdid="10.114817.1.0" Name="test_cover_index_on_pt"/>
- <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" CoercePathType="0"/>
- <dxl:ColumnStatistics Mdid="1.114813.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:ColumnStatistics Mdid="1.17724.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
<dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
@@ -898,6 +1052,191 @@
<dxl:Opfamily Mdid="0.10009.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
+ <dxl:RelationExtendedStatistics Mdid="10.17724.1.0" Name="test_basic_cover_index"/>
+ <dxl:Relation Mdid="6.17731.1.0" Name="test_cover_index_on_pt_1_prt_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17744.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="0"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:RelationStatistics Mdid="2.17728.1.0" Name="test_cover_index_on_pt" Rows="10.000000" RelPages="6" RelAllVisible="6" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.17728.1.0" Name="test_cover_index_on_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17743.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:Partitions>
+ <dxl:Partition Mdid="6.17731.1.0"/>
+ <dxl:Partition Mdid="6.17734.1.0"/>
+ <dxl:Partition Mdid="6.17737.1.0"/>
+ <dxl:Partition Mdid="6.17740.1.0"/>
+ </dxl:Partitions>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.17743.1.0" Name="i_test_cover_index_scan_on_partition_table" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ <dxl:Partitions>
+ <dxl:Partition Mdid="0.17744.1.0"/>
+ <dxl:Partition Mdid="0.17745.1.0"/>
+ <dxl:Partition Mdid="0.17746.1.0"/>
+ <dxl:Partition Mdid="0.17747.1.0"/>
+ </dxl:Partitions>
+ </dxl:Index>
+ <dxl:Relation Mdid="6.17734.1.0" Name="test_cover_index_on_pt_1_prt_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17745.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:RelationStatistics Mdid="2.17737.1.0" Name="test_cover_index_on_pt_1_prt_3" Rows="3.000000" RelPages="2" RelAllVisible="2" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.17737.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17746.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.17740.1.0" Name="test_cover_index_on_pt_1_prt_4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17747.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
</dxl:Metadata>
<dxl:Query>
<dxl:OutputColumns>
@@ -918,7 +1257,7 @@
</dxl:And>
<dxl:LogicalJoin JoinType="Inner">
<dxl:LogicalGet>
- <dxl:TableDescriptor Mdid="6.114817.1.0" TableName="test_cover_index_on_pt" LockMode="1">
+ <dxl:TableDescriptor Mdid="6.17728.1.0" TableName="pt" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
@@ -934,7 +1273,7 @@
</dxl:TableDescriptor>
</dxl:LogicalGet>
<dxl:LogicalGet>
- <dxl:TableDescriptor Mdid="6.114813.1.0" TableName="test_basic_cover_index" LockMode="1">
+ <dxl:TableDescriptor Mdid="6.17724.1.0" TableName="t" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="11" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="12" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
@@ -959,7 +1298,7 @@
<dxl:Plan Id="0" SpaceSize="54">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000457" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000557" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -973,7 +1312,7 @@
<dxl:SortingColumnList/>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="true" OuterRefAsParam="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000427" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000527" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -1018,10 +1357,10 @@
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions>
- <dxl:Partition Mdid="6.114826.1.0"/>
+ <dxl:Partition Mdid="6.17737.1.0"/>
</dxl:Partitions>
- <dxl:IndexDescriptor Mdid="7.114832.1.0" IndexName="i_test_cover_index_scan_on_partition_table"/>
- <dxl:TableDescriptor Mdid="6.114817.1.0" TableName="test_cover_index_on_pt" LockMode="1">
+ <dxl:IndexDescriptor Mdid="7.17743.1.0" IndexName="i_test_cover_index_scan_on_partition_table"/>
+ <dxl:TableDescriptor Mdid="6.17728.1.0" TableName="pt" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
@@ -1037,7 +1376,7 @@
</dxl:DynamicIndexOnlyScan>
<dxl:IndexScan IndexScanDirection="Forward">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000111" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000211" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
@@ -1052,8 +1391,8 @@
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions/>
- <dxl:IndexDescriptor Mdid="7.114816.1.0" IndexName="i_test_basic_index"/>
- <dxl:TableDescriptor Mdid="6.114813.1.0" TableName="test_basic_cover_index" LockMode="1">
+ <dxl:IndexDescriptor Mdid="7.17727.1.0" IndexName="i_test_basic_index"/>
+ <dxl:TableDescriptor Mdid="6.17724.1.0" TableName="t" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="13" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
index c749d47e67..a49edc1e8f 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
@@ -19,7 +19,7 @@
VACUUM ANALYZE test_cover_index_on_pt;
EXPLAIN (ANALYZE, COSTS OFF, TIMING OFF, SUMMARY OFF)
- SELECT pt.a, pt.b FROM test_cover_index_on_pt AS pt JOIN test_basic_cover_index AS t ON pt.a=t.a WHERE pt.a<10 and pt.b=2;
+ SELECT pt.a, pt.b FROM test_cover_index_on_pt AS pt LEFT JOIN test_basic_cover_index AS t ON pt.a=t.a WHERE pt.a<10 and pt.b=2;
]]>
</dxl:Comment>
<dxl:Thread Id="0">
@@ -34,9 +34,11 @@
</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,102162,102163,103001,103014,103015,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ <dxl:TraceFlags Value="101001,101013,102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,106000"/>
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
+ <dxl:RelationExtendedStatistics Mdid="10.17749.1.0" Name="test_basic_cover_index"/>
+ <dxl:RelationExtendedStatistics Mdid="10.17753.1.0" Name="test_cover_index_on_pt"/>
<dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
<dxl:LeftType Mdid="0.23.1.0"/>
<dxl:RightType Mdid="0.23.1.0"/>
@@ -86,392 +88,405 @@
<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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:RelationExtendedStatistics Mdid="10.114813.1.0" Name="test_basic_cover_index"/>
- <dxl:Index Mdid="7.114832.1.0" Name="i_test_cover_index_scan_on_partition_table" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1">
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1976.1.0"/>
- </dxl:Opfamilies>
- <dxl:Partitions>
- <dxl:Partition Mdid="0.114833.1.0"/>
- <dxl:Partition Mdid="0.114834.1.0"/>
- <dxl:Partition Mdid="0.114835.1.0"/>
- <dxl:Partition Mdid="0.114836.1.0"/>
- </dxl:Partitions>
- </dxl:Index>
- <dxl:Relation Mdid="6.114823.1.0" Name="test_cover_index_on_pt_1_prt_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114834.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.114820.1.0" Name="test_cover_index_on_pt_1_prt_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114833.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="0"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:RelationStatistics Mdid="2.114817.1.0" Name="test_cover_index_on_pt" Rows="10.000000" RelPages="6" RelAllVisible="6" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.114817.1.0" Name="test_cover_index_on_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114832.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.114820.1.0"/>
- <dxl:Partition Mdid="6.114823.1.0"/>
- <dxl:Partition Mdid="6.114826.1.0"/>
- <dxl:Partition Mdid="6.114829.1.0"/>
- </dxl:Partitions>
- </dxl:Relation>
- <dxl:Relation Mdid="6.114829.1.0" Name="test_cover_index_on_pt_1_prt_4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114836.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="4"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:ColumnStatistics Mdid="1.114817.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
- <dxl:StatsBucket Frequency="0.199998" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
+ <dxl:ColumnStatistics Mdid="1.17749.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.199998" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
</dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.114817.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
<dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
<dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
<dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
<dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
<dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
</dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="102"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="102"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="104"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="104"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="106"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="106"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="108"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="108"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="110"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="110"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="112"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="112"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="114"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="114"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="116"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="116"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="118"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="118"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="120"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="120"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="122"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="122"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="124"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="124"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="126"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="126"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="128"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="128"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="130"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="130"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="132"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="132"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="134"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="134"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="136"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="136"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="138"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="138"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="140"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="140"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="142"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="142"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="144"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="144"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="146"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="146"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="148"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="148"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="150"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="150"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="152"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="152"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="156"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="156"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="158"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="158"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="160"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="160"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="162"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="162"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="164"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="164"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="166"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="166"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="168"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="168"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="170"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="170"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="172"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="172"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="174"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="174"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="176"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="176"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="178"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="178"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="180"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="180"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="182"/>
</dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:Relation Mdid="6.114826.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114835.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Index Mdid="7.114816.1.0" Name="i_test_basic_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1">
- <dxl:Opfamilies>
- <dxl:Opfamily Mdid="0.1976.1.0"/>
- </dxl:Opfamilies>
- </dxl:Index>
- <dxl:RelationStatistics Mdid="2.114813.1.0" Name="test_basic_cover_index" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.114813.1.0" Name="test_basic_cover_index" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList>
- <dxl:IndexInfo Mdid="7.114816.1.0" IsPartial="false"/>
- </dxl:IndexInfoList>
- <dxl:CheckConstraints/>
- <dxl:DistrOpfamilies>
- <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
- </dxl:DistrOpfamilies>
- </dxl:Relation>
- <dxl:RelationExtendedStatistics Mdid="10.114817.1.0" Name="test_cover_index_on_pt"/>
- <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" CoercePathType="0"/>
- <dxl:ColumnStatistics Mdid="1.114813.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="182"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="184"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="184"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="186"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="186"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="188"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="188"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="190"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="190"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="192"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="192"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="194"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="194"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="196"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="196"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="198"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="198"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="200"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:ColumnStatistics Mdid="1.17749.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
<dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
<dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
@@ -869,6 +884,159 @@
<dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
+ <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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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.17762.1.0" Name="test_cover_index_on_pt_1_prt_3" Rows="3.000000" RelPages="2" RelAllVisible="2" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.17762.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17771.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.17768.1.0" Name="i_test_cover_index_scan_on_partition_table" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ <dxl:Partitions>
+ <dxl:Partition Mdid="0.17769.1.0"/>
+ <dxl:Partition Mdid="0.17770.1.0"/>
+ <dxl:Partition Mdid="0.17771.1.0"/>
+ <dxl:Partition Mdid="0.17772.1.0"/>
+ </dxl:Partitions>
+ </dxl:Index>
+ <dxl:Relation Mdid="6.17765.1.0" Name="test_cover_index_on_pt_1_prt_4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17772.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <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" CoercePathType="0"/>
<dxl:GPDBScalarOp Mdid="0.97.1.0" Name="<" ComparisonType="LT" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
<dxl:LeftType Mdid="0.23.1.0"/>
<dxl:RightType Mdid="0.23.1.0"/>
@@ -899,6 +1067,177 @@
<dxl:Opfamily Mdid="0.10009.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
+ <dxl:Index Mdid="7.17752.1.0" Name="i_test_basic_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="1" ReturnableColumns="0,1" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:RelationStatistics Mdid="2.17749.1.0" Name="test_basic_cover_index" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.17749.1.0" Name="test_basic_cover_index" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17752.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:RelationStatistics Mdid="2.17753.1.0" Name="test_cover_index_on_pt" Rows="10.000000" RelPages="6" RelAllVisible="6" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.17753.1.0" Name="test_cover_index_on_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17768.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:Partitions>
+ <dxl:Partition Mdid="6.17756.1.0"/>
+ <dxl:Partition Mdid="6.17759.1.0"/>
+ <dxl:Partition Mdid="6.17762.1.0"/>
+ <dxl:Partition Mdid="6.17765.1.0"/>
+ </dxl:Partitions>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.17759.1.0" Name="test_cover_index_on_pt_1_prt_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17770.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.17756.1.0" Name="test_cover_index_on_pt_1_prt_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="c" Attno="3" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.17769.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ <dxl:PartConstraint>
+ <dxl:And>
+ <dxl:IsNotNull>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:IsNotNull>
+ <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="0"/>
+ </dxl:Comparison>
+ <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:Comparison>
+ </dxl:And>
+ </dxl:PartConstraint>
+ </dxl:Relation>
+ <dxl:ColumnStatistics Mdid="1.17753.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.199998" DistinctValues="1.000000">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.299997" DistinctValues="1.000000">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.199998" DistinctValues="1.000000">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <dxl:ColumnStatistics Mdid="1.17753.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.166667" DistinctValues="1.666667">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
</dxl:Metadata>
<dxl:Query>
<dxl:OutputColumns>
@@ -919,7 +1258,7 @@
</dxl:And>
<dxl:LogicalJoin JoinType="Left">
<dxl:LogicalGet>
- <dxl:TableDescriptor Mdid="6.114817.1.0" TableName="test_cover_index_on_pt" LockMode="1">
+ <dxl:TableDescriptor Mdid="6.17753.1.0" TableName="pt" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
@@ -935,7 +1274,7 @@
</dxl:TableDescriptor>
</dxl:LogicalGet>
<dxl:LogicalGet>
- <dxl:TableDescriptor Mdid="6.114813.1.0" TableName="test_basic_cover_index" LockMode="1">
+ <dxl:TableDescriptor Mdid="6.17749.1.0" TableName="t" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="11" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="12" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
@@ -960,7 +1299,7 @@
<dxl:Plan Id="0" SpaceSize="45">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000457" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000557" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -974,7 +1313,7 @@
<dxl:SortingColumnList/>
<dxl:NestedLoopJoin JoinType="Left" IndexNestedLoopJoin="true" OuterRefAsParam="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="12.000427" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="12.000527" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -1019,10 +1358,10 @@
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions>
- <dxl:Partition Mdid="6.114826.1.0"/>
+ <dxl:Partition Mdid="6.17762.1.0"/>
</dxl:Partitions>
- <dxl:IndexDescriptor Mdid="7.114832.1.0" IndexName="i_test_cover_index_scan_on_partition_table"/>
- <dxl:TableDescriptor Mdid="6.114817.1.0" TableName="test_cover_index_on_pt" LockMode="1">
+ <dxl:IndexDescriptor Mdid="7.17768.1.0" IndexName="i_test_cover_index_scan_on_partition_table"/>
+ <dxl:TableDescriptor Mdid="6.17753.1.0" TableName="pt" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
@@ -1038,7 +1377,7 @@
</dxl:DynamicIndexOnlyScan>
<dxl:IndexScan IndexScanDirection="Forward">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000111" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000211" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
@@ -1053,8 +1392,8 @@
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions/>
- <dxl:IndexDescriptor Mdid="7.114816.1.0" IndexName="i_test_basic_index"/>
- <dxl:TableDescriptor Mdid="6.114813.1.0" TableName="test_basic_cover_index" LockMode="1">
+ <dxl:IndexDescriptor Mdid="7.17752.1.0" IndexName="i_test_basic_index"/>
+ <dxl:TableDescriptor Mdid="6.17749.1.0" TableName="t" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="13" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp
index d1ca5590be..5a8b4aa139 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp
@@ -797,7 +797,7 @@
<dxl:Plan Id="1" SpaceSize="3">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.006540" Rows="19.607843" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.005330" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-NoDTS.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-NoDTS.mdp
index 2a74b749fc..9f37780060 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-NoDTS.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-NoDTS.mdp
@@ -475,7 +475,7 @@
<dxl:Plan Id="1" SpaceSize="3">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000650" Rows="1.280000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000817" Rows="3.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Overlapping.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Overlapping.mdp
index 8aae410794..9b42da633d 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Overlapping.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Overlapping.mdp
@@ -475,7 +475,7 @@
<dxl:Plan Id="1" SpaceSize="3">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000650" Rows="1.280000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000817" Rows="3.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp b/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp
deleted file mode 100644
index 8c05995100..0000000000
--- a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp
+++ /dev/null
@@ -1,11295 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
- <dxl:Thread Id="0">
- <dxl:OptimizerConfig>
- <dxl:EnumeratorConfig Id="0" PlanSamples="0" CostThreshold="0"/>
- <dxl:StatisticsConfig DampingFactorFilter="0.750000" DampingFactorJoin="0.010000" DampingFactorGroupBy="0.750000" MaxStatsBuckets="100"/>
- <dxl:CTEConfig CTEInliningCutoff="0"/>
- <dxl:WindowOids RowNumber="7000" Rank="7001"/>
- <dxl:TraceFlags Value="101013,102001,102002,102003,102024,102025,102115,102117,102144,103001,103027,103033"/>
- </dxl:OptimizerConfig>
- <dxl:Metadata SystemIds="0.GPDB">
- <dxl:GPDBScalarOp Mdid="0.523.1.0" Name="<=" ComparisonType="LEq" ReturnsNullOnNullInput="true">
- <dxl:LeftType Mdid="0.23.1.0"/>
- <dxl:RightType Mdid="0.23.1.0"/>
- <dxl:ResultType Mdid="0.16.1.0"/>
- <dxl:OpFunc Mdid="0.149.1.0"/>
- <dxl:Commutator Mdid="0.525.1.0"/>
- <dxl:InverseOp Mdid="0.521.1.0"/>
- </dxl:GPDBScalarOp>
- <dxl:GPDBScalarOp Mdid="0.525.1.0" Name=">=" ComparisonType="GEq" ReturnsNullOnNullInput="true">
- <dxl:LeftType Mdid="0.23.1.0"/>
- <dxl:RightType Mdid="0.23.1.0"/>
- <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:ColumnStatistics Mdid="1.1962503.1.1.33" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.32" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.25" Name="d_current_month" Width="2.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.999697" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000303" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.24" Name="d_current_week" Width="2.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="1.000000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.17" Name="d_weekend" Width="2.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.718583" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.281417" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.16" Name="d_holiday" Width="2.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.990258" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008743" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.9" Name="d_dom" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.034325" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032165" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032279" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033037" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006944" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032241" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033074" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033112" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034135" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033984" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006944" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032696" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006944" DistinctValues="1.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032733" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.031900" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032544" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032696" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033453" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033681" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032847" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033264" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033226" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033226" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032771" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032809" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032961" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033794" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033453" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006944" DistinctValues="1.000000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006944" DistinctValues="1.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.1" Name="d_date_id" Width="17.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQUFBQUZDQUE=" LintValue="429663230"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQUtFS0ZDQUE=" LintValue="951853948"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQUtFS0ZDQUE=" LintValue="951853948"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQkVJS0ZDQUE=" LintValue="412885996"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQkVJS0ZDQUE=" LintValue="412885996"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQk9LQUZDQUE=" LintValue="965485422"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQk9LQUZDQUE=" LintValue="965485422"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQ0lGTkZDQUE=" LintValue="431760252"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBQ0lGTkZDQUE=" LintValue="431760252"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRENMRkZDQUE=" LintValue="967582700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRENMRkZDQUE=" LintValue="967582700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRE5CSkZDQUE=" LintValue="463217534"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRE5CSkZDQUE=" LintValue="463217534"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRUhMT0VDQUE=" LintValue="984359790"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRUhMT0VDQUE=" LintValue="984359790"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRkJJSkZDQUE=" LintValue="429663214"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRkJJSkZDQUE=" LintValue="429663214"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRkxNTkVDQUE=" LintValue="1002185582"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBRkxNTkVDQUE=" LintValue="1002185582"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBR0dCQUZDQUE=" LintValue="1000088572"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBR0dCQUZDQUE=" LintValue="1000088572"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSEFEQkZDQUE=" LintValue="1001137150"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSEFEQkZDQUE=" LintValue="1001137150"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSEtCSkZDQUE=" LintValue="463217532"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSEtCSkZDQUE=" LintValue="463217532"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSUVOTkVDQUE=" LintValue="1002185708"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSUVOTkVDQUE=" LintValue="1002185708"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSU9OT0VDQUE=" LintValue="448537452"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSU9OT0VDQUE=" LintValue="448537452"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSkpHSUZDQUE=" LintValue="967582588"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBSkpHSUZDQUE=" LintValue="967582588"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBS0RFUEVDQUE=" LintValue="314319870"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBS0RFUEVDQUE=" LintValue="314319870"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBS05JSkZDQUE=" LintValue="1000088428"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBS05JSkZDQUE=" LintValue="1000088428"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTEhOSEZDQUE=" LintValue="448537454"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTEhOSEZDQUE=" LintValue="448537454"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTUJMQUZDQUE=" LintValue="967582700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTUJMQUZDQUE=" LintValue="967582700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTU1DTEZDQUE=" LintValue="982262654"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTU1DTEZDQUE=" LintValue="982262654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTkdJREZDQUE=" LintValue="446440428"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBTkdJREZDQUE=" LintValue="446440428"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBT0FHUEVDQUE=" LintValue="850142204"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBT0FHUEVDQUE=" LintValue="850142204"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBT0xCRkZDQUE=" LintValue="429663100"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBT0xCRkZDQUE=" LintValue="429663100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBUEZIR0ZDQUE=" LintValue="143401966"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBUEZIR0ZDQUE=" LintValue="143401966"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBUFBNUEVDQUE=" LintValue="582231022"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBUFBNUEVDQUE=" LintValue="582231022"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAAFEFBQUFBQUFBUFBQUEVDQUE=" LintValue="570696702"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.8" Name="d_moy" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.083311" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.078235" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.084940" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080318" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.085092" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.083842" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.083008" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.085016" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.081872" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.086304" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.084827" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.083235" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.0" Name="d_date_sk" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2415023"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2417954"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2417954"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2420869"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2420869"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2423819"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2423819"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2426671"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2426671"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2429545"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2429545"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2432428"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2432428"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2435372"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2435372"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2438333"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2438333"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2441147"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2441147"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2444227"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2444227"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2447229"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2447229"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2450166"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2450166"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2453088"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2453088"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2455932"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2455932"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2459015"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2459015"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2461861"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2461861"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2464892"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2464892"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467642"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467642"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2470529"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2470529"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2473419"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2473419"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2476221"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2476221"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2479064"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2479064"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2481907"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2481907"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2484700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2484700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2487952"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2487952"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2488069"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <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"/>
- <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.1042.1.0" Name="bpchar" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="true" IsFixedLength="false" Length="-1" PassByValue="false">
- <dxl:EqualityOp Mdid="0.1054.1.0"/>
- <dxl:InequalityOp Mdid="0.1057.1.0"/>
- <dxl:LessThanOp Mdid="0.1058.1.0"/>
- <dxl:LessThanEqualsOp Mdid="0.1059.1.0"/>
- <dxl:GreaterThanOp Mdid="0.1060.1.0"/>
- <dxl:GreaterThanEqualsOp Mdid="0.1061.1.0"/>
- <dxl:ComparisonOp Mdid="0.1078.1.0"/>
- <dxl:ArrayType Mdid="0.1014.1.0"/>
- <dxl:MinAgg Mdid="0.2245.1.0"/>
- <dxl:MaxAgg Mdid="0.2244.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.20.1.0" Name="Int8" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="8" PassByValue="true">
- <dxl:EqualityOp Mdid="0.410.1.0"/>
- <dxl:InequalityOp Mdid="0.411.1.0"/>
- <dxl:LessThanOp Mdid="0.412.1.0"/>
- <dxl:LessThanEqualsOp Mdid="0.414.1.0"/>
- <dxl:GreaterThanOp Mdid="0.413.1.0"/>
- <dxl:GreaterThanEqualsOp Mdid="0.415.1.0"/>
- <dxl:ComparisonOp Mdid="0.351.1.0"/>
- <dxl:ArrayType Mdid="0.1016.1.0"/>
- <dxl:MinAgg Mdid="0.2131.1.0"/>
- <dxl:MaxAgg Mdid="0.2115.1.0"/>
- <dxl:AvgAgg Mdid="0.2100.1.0"/>
- <dxl:SumAgg Mdid="0.2107.1.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" IsFixedLength="true" Length="4" PassByValue="true">
- <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: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"/>
- <dxl:ResultType Mdid="0.16.1.0"/>
- <dxl:OpFunc Mdid="0.467.1.0"/>
- <dxl:Commutator Mdid="0.410.1.0"/>
- <dxl:InverseOp Mdid="0.411.1.0"/>
- </dxl:GPDBScalarOp>
- <dxl:Type Mdid="0.26.1.0" Name="oid" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
- <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.2118.1.0"/>
- <dxl:MaxAgg Mdid="0.2134.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="false" IsMergeJoinable="false" IsComposite="false" IsFixedLength="true" Length="6" PassByValue="false">
- <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:ColumnStatistics Mdid="1.1974810.1.1.21" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.20" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.13" Name="sr_return_amt_inc_tax" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.009760" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005789" DistinctValues="483.406509">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAFQL" DoubleValue="1.290000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAFQL" DoubleValue="1.290000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAFQL" DoubleValue="1.290000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001750" DistinctValues="146.146154">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAFQL" DoubleValue="1.290000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAJAa" DoubleValue="1.680000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000210" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAJAa" DoubleValue="1.680000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAJAa" DoubleValue="1.680000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005475" DistinctValues="457.175148">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAJAa" DoubleValue="1.680000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACACgj" DoubleValue="2.900000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACACgj" DoubleValue="2.900000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACACgj" DoubleValue="2.900000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010232" DistinctValues="854.392899">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACACgj" DoubleValue="2.900000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAAgH" DoubleValue="5.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAAgH" DoubleValue="5.180000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAAgH" DoubleValue="5.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004488" DistinctValues="374.733728">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAAgH" DoubleValue="5.180000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGAAgH" DoubleValue="6.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGAAgH" DoubleValue="6.180000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGAAgH" DoubleValue="6.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000808" DistinctValues="67.452071">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGAAgH" DoubleValue="6.180000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGABAO" DoubleValue="6.360000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000210" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGABAO" DoubleValue="6.360000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGABAO" DoubleValue="6.360000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003321" DistinctValues="277.302959">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGABAO" DoubleValue="6.360000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOgD" DoubleValue="7.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000210" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOgD" DoubleValue="7.100000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOgD" DoubleValue="7.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003052" DistinctValues="254.818935">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOgD" DoubleValue="7.100000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAHge" DoubleValue="7.780000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000210" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAHge" DoubleValue="7.780000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAHge" DoubleValue="7.780000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001705" DistinctValues="142.398817">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAHge" DoubleValue="7.780000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAEAG" DoubleValue="8.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAEAG" DoubleValue="8.160000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAEAG" DoubleValue="8.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001301" DistinctValues="108.672781">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAEAG" DoubleValue="8.160000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAJQR" DoubleValue="8.450000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000256" DistinctValues="21.376687">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAJQR" DoubleValue="8.450000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIABgV" DoubleValue="8.540000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIABgV" DoubleValue="8.540000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIABgV" DoubleValue="8.540000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005287" DistinctValues="441.784858">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIABgV" DoubleValue="8.540000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAKAP" DoubleValue="10.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAKAP" DoubleValue="10.400000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAKAP" DoubleValue="10.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003212" DistinctValues="268.396177">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAKAP" DoubleValue="10.400000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgALALQU" DoubleValue="11.530000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgALALQU" DoubleValue="11.530000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgALALQU" DoubleValue="11.530000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003383" DistinctValues="282.647301">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgALALQU" DoubleValue="11.530000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMACAc" DoubleValue="12.720000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMACAc" DoubleValue="12.720000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMACAc" DoubleValue="12.720000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006822" DistinctValues="570.044978">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMACAc" DoubleValue="12.720000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000210" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004633" DistinctValues="387.155547">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEwd" DoubleValue="16.750000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEwd" DoubleValue="16.750000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEwd" DoubleValue="16.750000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001080" DistinctValues="90.257121">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEwd" DoubleValue="16.750000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgARABQF" DoubleValue="17.130000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000210" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgARABQF" DoubleValue="17.130000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgARABQF" DoubleValue="17.130000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003326" DistinctValues="277.896927">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgARABQF" DoubleValue="17.130000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgASALgL" DoubleValue="18.300000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgASALgL" DoubleValue="18.300000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgASALgL" DoubleValue="18.300000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009921" DistinctValues="828.940405">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgASALgL" DoubleValue="18.300000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVANwe" DoubleValue="21.790000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006954" DistinctValues="582.131266">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVANwe" DoubleValue="21.790000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAYAEQW" DoubleValue="24.570000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAYAEQW" DoubleValue="24.570000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAYAEQW" DoubleValue="24.570000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012832" DistinctValues="1074.220646">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAYAEQW" DoubleValue="24.570000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAdAFgb" DoubleValue="29.700000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAdAFgb" DoubleValue="29.700000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAdAFgb" DoubleValue="29.700000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018135" DistinctValues="1518.148087">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAdAFgb" DoubleValue="29.700000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAkABwl" DoubleValue="36.950000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015484" DistinctValues="1296.269275">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAkABwl" DoubleValue="36.950000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAsAOgD" DoubleValue="44.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAsAOgD" DoubleValue="44.100000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAsAOgD" DoubleValue="44.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.021787" DistinctValues="1823.841805">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAsAOgD" DoubleValue="44.100000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AEAG" DoubleValue="54.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AEAG" DoubleValue="54.160000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AEAG" DoubleValue="54.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000650" DistinctValues="54.388921">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AEAG" DoubleValue="54.160000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2APgR" DoubleValue="54.460000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2APgR" DoubleValue="54.460000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAOQM" DoubleValue="76.330000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012509" DistinctValues="1047.535458">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAOQM" DoubleValue="76.330000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBUANQX" DoubleValue="84.610000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBUANQX" DoubleValue="84.610000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBUANQX" DoubleValue="84.610000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.025411" DistinctValues="2127.964542">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBUANQX" DoubleValue="84.610000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBlAMwQ" DoubleValue="101.430000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001898" DistinctValues="158.926841">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBlAMwQ" DoubleValue="101.430000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgBnAA==" DoubleValue="103.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000245" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgBnAA==" DoubleValue="103.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgBnAA==" DoubleValue="103.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036023" DistinctValues="3016.573159">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgBnAA==" DoubleValue="103.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCEAEAf" DoubleValue="132.800000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003811" DistinctValues="319.136868">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCEAEAf" DoubleValue="132.800000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCIAGgQ" DoubleValue="136.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCIAGgQ" DoubleValue="136.420000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCIAGgQ" DoubleValue="136.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034110" DistinctValues="2856.363132">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCIAGgQ" DoubleValue="136.420000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCoAAgg" DoubleValue="168.820000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCoAAgg" DoubleValue="168.820000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDRAHQO" DoubleValue="209.370000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDRAHQO" DoubleValue="209.370000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAbgk" DoubleValue="257.940000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABAbgk" DoubleValue="257.940000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA6ARgV" DoubleValue="314.540000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA6ARgV" DoubleValue="314.540000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB6Aawm" DoubleValue="378.990000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB6Aawm" DoubleValue="378.990000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDGAYAl" DoubleValue="454.960000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDGAYAl" DoubleValue="454.960000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAjAggg" DoubleValue="547.820000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAjAggg" DoubleValue="547.820000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCRAlgC" DoubleValue="657.060000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCRAlgC" DoubleValue="657.060000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAOA2wg" DoubleValue="782.830000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAOA2wg" DoubleValue="782.830000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCsA8QJ" DoubleValue="940.250000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCsA8QJ" DoubleValue="940.250000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBiBIgT" DoubleValue="1122.500000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBiBIgT" DoubleValue="1122.500000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3BdwF" DoubleValue="1335.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3BdwF" DoubleValue="1335.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBOBhgV" DoubleValue="1614.540000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBOBhgV" DoubleValue="1614.540000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDNB2AJ" DoubleValue="1997.240000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDNB2AJ" DoubleValue="1997.240000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDaCeQl" DoubleValue="2522.970000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDaCeQl" DoubleValue="2522.970000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDaDEQW" DoubleValue="3290.570000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDaDEQW" DoubleValue="3290.570000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHEkgm" DoubleValue="4615.980000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHEkgm" DoubleValue="4615.980000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADgEAAgABADQNkBo=" DoubleValue="13380.680000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037921" DistinctValues="3176.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADgEAAgABADQNkBo=" DoubleValue="13380.680000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADgEAAgABAKkdQB8=" DoubleValue="17593.800000"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.12" Name="sr_return_tax" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.111239" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003995" DistinctValues="56.398148">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000979" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003995" DistinctValues="56.398148">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000979" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007990" DistinctValues="112.796296">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCQAQ==" DoubleValue="0.040000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001154" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCQAQ==" DoubleValue="0.040000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCQAQ==" DoubleValue="0.040000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003995" DistinctValues="56.398148">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCQAQ==" DoubleValue="0.040000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001084" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003995" DistinctValues="56.398148">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001084" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011985" DistinctValues="169.194444">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCEAw==" DoubleValue="0.090000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001224" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCEAw==" DoubleValue="0.090000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCEAw==" DoubleValue="0.090000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCEAw==" DoubleValue="0.090000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001259" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001084" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003196" DistinctValues="44.051852">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001154" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBABg==" DoubleValue="0.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001084" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBABg==" DoubleValue="0.160000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBABg==" DoubleValue="0.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBABg==" DoubleValue="0.160000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCkBg==" DoubleValue="0.170000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001049" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCkBg==" DoubleValue="0.170000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCkBg==" DoubleValue="0.170000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCkBg==" DoubleValue="0.170000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAIBw==" DoubleValue="0.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001224" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAIBw==" DoubleValue="0.180000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAIBw==" DoubleValue="0.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002397" DistinctValues="33.038889">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAIBw==" DoubleValue="0.180000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgA0CA==" DoubleValue="0.210000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001049" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgA0CA==" DoubleValue="0.210000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgA0CA==" DoubleValue="0.210000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgA0CA==" DoubleValue="0.210000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCYCA==" DoubleValue="0.220000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001224" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCYCA==" DoubleValue="0.220000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCYCA==" DoubleValue="0.220000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCYCA==" DoubleValue="0.220000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD8CA==" DoubleValue="0.230000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001084" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD8CA==" DoubleValue="0.230000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD8CA==" DoubleValue="0.230000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000799" DistinctValues="11.012963">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD8CA==" DoubleValue="0.230000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBgCQ==" DoubleValue="0.240000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000979" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBgCQ==" DoubleValue="0.240000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBgCQ==" DoubleValue="0.240000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003196" DistinctValues="44.051852">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBgCQ==" DoubleValue="0.240000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDwCg==" DoubleValue="0.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001014" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDwCg==" DoubleValue="0.280000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDwCg==" DoubleValue="0.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002397" DistinctValues="33.038889">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDwCg==" DoubleValue="0.280000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAcDA==" DoubleValue="0.310000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001049" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAcDA==" DoubleValue="0.310000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAcDA==" DoubleValue="0.310000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001598" DistinctValues="22.025926">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAcDA==" DoubleValue="0.310000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDkDA==" DoubleValue="0.330000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001014" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDkDA==" DoubleValue="0.330000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDkDA==" DoubleValue="0.330000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002397" DistinctValues="33.038889">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDkDA==" DoubleValue="0.330000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAQDg==" DoubleValue="0.360000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001049" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAQDg==" DoubleValue="0.360000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAQDg==" DoubleValue="0.360000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001598" DistinctValues="22.025926">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAQDg==" DoubleValue="0.360000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDYDg==" DoubleValue="0.380000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000979" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDYDg==" DoubleValue="0.380000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDYDg==" DoubleValue="0.380000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003196" DistinctValues="44.051852">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDYDg==" DoubleValue="0.380000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBoEA==" DoubleValue="0.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001084" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBoEA==" DoubleValue="0.420000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBoEA==" DoubleValue="0.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003196" DistinctValues="44.051852">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBoEA==" DoubleValue="0.420000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD4EQ==" DoubleValue="0.460000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000979" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD4EQ==" DoubleValue="0.460000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD4EQ==" DoubleValue="0.460000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006392" DistinctValues="88.103704">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD4EQ==" DoubleValue="0.460000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAYFQ==" DoubleValue="0.540000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008059" DistinctValues="114.889368">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAYFQ==" DoubleValue="0.540000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsGg==" DoubleValue="0.670000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000979" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsGg==" DoubleValue="0.670000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsGg==" DoubleValue="0.670000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.027896" DistinctValues="397.693966">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsGg==" DoubleValue="0.670000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABALAE" DoubleValue="1.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABALAE" DoubleValue="1.120000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABADQh" DoubleValue="1.850000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABADQh" DoubleValue="1.850000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACACAc" DoubleValue="2.720000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACACAc" DoubleValue="2.720000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADAEAf" DoubleValue="3.800000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADAEAf" DoubleValue="3.800000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFABQF" DoubleValue="5.130000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFABQF" DoubleValue="5.130000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGANwe" DoubleValue="6.790000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGANwe" DoubleValue="6.790000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAPQa" DoubleValue="8.690000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAPQa" DoubleValue="8.690000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKABwl" DoubleValue="10.950000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKABwl" DoubleValue="10.950000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgANAAAZ" DoubleValue="13.640000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgANAAAZ" DoubleValue="13.640000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgARAIQD" DoubleValue="17.090000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgARAIQD" DoubleValue="17.090000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVAAgH" DoubleValue="21.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVAAgH" DoubleValue="21.180000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAaAMgA" DoubleValue="26.020000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAaAMgA" DoubleValue="26.020000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAgAKAP" DoubleValue="32.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAgAKAP" DoubleValue="32.400000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAoAFQL" DoubleValue="40.290000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAoAFQL" DoubleValue="40.290000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAyALgL" DoubleValue="50.300000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAyALgL" DoubleValue="50.300000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAAFgC" DoubleValue="64.060000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAAFgC" DoubleValue="64.060000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBSAPAK" DoubleValue="82.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBSAPAK" DoubleValue="82.280000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBrAEwE" DoubleValue="107.110000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBrAEwE" DoubleValue="107.110000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCVACgj" DoubleValue="149.900000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCVACgj" DoubleValue="149.900000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgDmAA==" DoubleValue="230.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgDmAA==" DoubleValue="230.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB5A/Qa" DoubleValue="889.690000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035955" DistinctValues="513.583333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB5A/Qa" DoubleValue="889.690000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDfBJAB" DoubleValue="1247.040000"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.5" Name="sr_hdemo_sk" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.000408" DistinctValues="2.938599">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013872" DistinctValues="99.912363">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="106"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="106"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="106"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023800" DistinctValues="171.418269">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="106"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="281"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="281"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="561"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020084" DistinctValues="145.176238">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="561"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000455" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="715"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017997" DistinctValues="130.092993">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="715"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="853"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002622" DistinctValues="18.949693">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="853"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="872"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="872"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="872"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035459" DistinctValues="256.319537">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="872"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1129"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012297" DistinctValues="88.566106">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1129"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1222"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1222"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1222"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000793" DistinctValues="5.713942">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1222"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1228"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1228"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1228"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024991" DistinctValues="179.989183">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1228"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1417"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1417"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1696"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1696"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1988"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036362" DistinctValues="262.843884">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1988"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2263"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000420" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2263"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2263"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001719" DistinctValues="12.425347">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2263"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2276"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2276"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2585"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028432" DistinctValues="204.775338">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2585"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2806"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000455" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2806"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2806"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008491" DistinctValues="61.154626">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2806"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2872"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2872"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2872"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001158" DistinctValues="8.339267">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2872"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2881"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2881"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3159"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023424" DistinctValues="169.323685">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3159"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3338"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3338"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3338"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014657" DistinctValues="105.945546">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3338"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3450"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010762" DistinctValues="77.228261">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3450"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3528"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3528"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3528"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002759" DistinctValues="19.802118">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3528"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3548"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3548"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3548"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011866" DistinctValues="85.149108">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3548"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3634"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3634"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3634"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012694" DistinctValues="91.089744">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3634"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3726"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023424" DistinctValues="169.320282">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3897"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3897"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3897"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014657" DistinctValues="105.948949">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3897"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4004"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008913" DistinctValues="64.424714">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4004"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4070"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4070"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4070"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029168" DistinctValues="210.844517">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="4070"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4286"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014155" DistinctValues="102.320471">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4286"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4399"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000420" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4399"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4399"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023926" DistinctValues="172.948760">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="4399"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4590"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009393" DistinctValues="67.653077">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4590"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4664"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4664"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4664"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023610" DistinctValues="170.046923">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="4664"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4850"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4850"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4850"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005077" DistinctValues="36.569231">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="4850"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4890"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032935" DistinctValues="238.070686">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4890"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5146"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5146"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5146"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005146" DistinctValues="37.198545">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5146"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5186"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029559" DistinctValues="213.670522">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5186"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5408"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000455" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5408"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5408"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008522" DistinctValues="61.598709">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5408"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5472"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028141" DistinctValues="203.415865">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5472"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5673"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5673"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5673"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009940" DistinctValues="71.853365">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5673"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5744"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008590" DistinctValues="62.090804">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5744"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5804"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5804"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5804"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029491" DistinctValues="213.178427">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5804"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6010"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6010"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6302"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015156" DistinctValues="109.555313">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6302"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6421"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000455" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6421"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6421"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022925" DistinctValues="165.713918">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="6421"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6601"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6601"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6905"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013647" DistinctValues="98.287608">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6905"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7010"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7010"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7010"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.021835" DistinctValues="157.260173">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7010"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7178"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7178"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7178"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002599" DistinctValues="18.721449">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7178"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7198"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038081" DistinctValues="276.269231">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7198"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7200"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.4" Name="sr_cdemo_sk" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.032166" DistinctValues="7985.144301">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64116"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64116"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="64116"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006226" DistinctValues="1545.548007">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="64116"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76509"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76509"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="149452"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="149452"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="227646"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="227646"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="302645"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008727" DistinctValues="2166.395011">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="302645"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="321226"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="321226"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="321226"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029665" DistinctValues="7364.297297">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="321226"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="384389"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010508" DistinctValues="2608.601074">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="384389"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="405556"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="405556"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="405556"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.027884" DistinctValues="6922.091233">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="405556"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="461724"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029447" DistinctValues="7310.104048">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="461724"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="517378"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="517378"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="517378"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008945" DistinctValues="2220.588260">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="517378"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="534284"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018489" DistinctValues="4589.458654">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="534284"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="571926"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="571926"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="571926"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018571" DistinctValues="4609.698018">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="571926"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="609734"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="609734"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="609734"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001332" DistinctValues="330.535636">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="609734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="612445"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012225" DistinctValues="3034.336870">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="612445"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="636802"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="636802"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="636802"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001547" DistinctValues="383.948197">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="636802"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="639884"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="639884"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="639884"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012050" DistinctValues="2990.734706">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="639884"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="663891"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="663891"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="663891"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012569" DistinctValues="3119.672534">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="663891"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="688933"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="688933"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="765401"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009936" DistinctValues="2466.073550">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="765401"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="786145"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="786145"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="786145"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011886" DistinctValues="2950.158176">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="786145"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="810961"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="810961"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="810961"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015562" DistinctValues="3862.572103">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="810961"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="843452"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000105" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="843452"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="843452"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001007" DistinctValues="249.888479">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="843452"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="845554"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="845554"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="920275"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="920275"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="999785"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001013" DistinctValues="251.432435">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="999785"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1001816"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1001816"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1001816"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023860" DistinctValues="5921.475254">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1001816"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1049648"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1049648"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1049648"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000322" DistinctValues="79.973094">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1049648"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1050294"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1050294"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1050294"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012810" DistinctValues="3178.992370">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1050294"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1075973"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1075973"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1075973"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000386" DistinctValues="95.819156">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1075973"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1076747"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1076747"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1154054"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034046" DistinctValues="8451.936972">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1154054"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1222531"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1222531"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1222531"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004345" DistinctValues="1078.755336">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1222531"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1231271"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012583" DistinctValues="3123.096644">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1231271"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1256467"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000105" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1256467"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1256467"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011568" DistinctValues="2871.226014">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1256467"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1279631"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1279631"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1279631"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002033" DistinctValues="504.484971">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1279631"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1283701"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1283701"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1283701"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012208" DistinctValues="3029.884678">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1283701"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1308145"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1308145"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1383730"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003907" DistinctValues="970.031460">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1383730"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1391376"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1391376"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1391376"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034484" DistinctValues="8560.660847">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1391376"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1458853"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1458853"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1535560"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1535560"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1617090"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010763" DistinctValues="2671.732503">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1617090"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1638441"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1638441"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1638441"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026941" DistinctValues="6687.402389">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1638441"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1691883"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1691883"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1691883"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000687" DistinctValues="170.557417">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1691883"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1693246"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019785" DistinctValues="4911.572651">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1693246"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1733435"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1733435"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1733435"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018607" DistinctValues="4619.119657">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1733435"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1771231"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1771231"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1843641"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032348" DistinctValues="8030.344034">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1843641"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1908008"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000070" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1908008"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1908008"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006044" DistinctValues="1500.348274">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1908008"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1920034"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038392" DistinctValues="9531.692308">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1920034"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1920722"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:GPDBScalarOp Mdid="0.413.1.0" Name=">" ComparisonType="GT" ReturnsNullOnNullInput="true">
- <dxl:LeftType Mdid="0.20.1.0"/>
- <dxl:RightType Mdid="0.20.1.0"/>
- <dxl:ResultType Mdid="0.16.1.0"/>
- <dxl:OpFunc Mdid="0.470.1.0"/>
- <dxl:Commutator Mdid="0.412.1.0"/>
- <dxl:InverseOp Mdid="0.414.1.0"/>
- </dxl:GPDBScalarOp>
- <dxl:Type Mdid="0.29.1.0" Name="cid" IsRedistributable="false" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
- <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="false" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
- <dxl:EqualityOp Mdid="0.352.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.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:Type Mdid="0.1700.1.0" Name="numeric" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="false" Length="-1" PassByValue="false">
- <dxl:EqualityOp Mdid="0.1752.1.0"/>
- <dxl:InequalityOp Mdid="0.1753.1.0"/>
- <dxl:LessThanOp Mdid="0.1754.1.0"/>
- <dxl:LessThanEqualsOp Mdid="0.1755.1.0"/>
- <dxl:GreaterThanOp Mdid="0.1756.1.0"/>
- <dxl:GreaterThanEqualsOp Mdid="0.1757.1.0"/>
- <dxl:ComparisonOp Mdid="0.1769.1.0"/>
- <dxl:ArrayType Mdid="0.1231.1.0"/>
- <dxl:MinAgg Mdid="0.2146.1.0"/>
- <dxl:MaxAgg Mdid="0.2130.1.0"/>
- <dxl:AvgAgg Mdid="0.2103.1.0"/>
- <dxl:SumAgg Mdid="0.2114.1.0"/>
- <dxl:CountAgg Mdid="0.2147.1.0"/>
- </dxl:Type>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.34" Name="gp_segment_id" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.27" Name="d_current_year" Width="2.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.993854" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005147" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.26" Name="d_current_quarter" Width="2.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.997941" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001060" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.19" Name="d_first_dom" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2415021"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2417942"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2417942"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2420864"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002329" DistinctValues="5.565865">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2420864"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2421046"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2421046"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2421046"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005463" DistinctValues="13.058376">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2421046"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2421473"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2421473"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2421473"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029991" DistinctValues="71.683451">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2421473"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2423817"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2423817"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2426647"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003581" DistinctValues="8.464306">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2426647"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2426921"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2426921"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2426921"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013513" DistinctValues="31.941942">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2426921"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2427955"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2427955"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2427955"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007175" DistinctValues="16.959503">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2427955"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2428504"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2428504"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2428504"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013513" DistinctValues="31.941942">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2428504"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2429538"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028142" DistinctValues="67.265184">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2429538"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2431669"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000644" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2431669"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2431669"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004411" DistinctValues="10.542737">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2431669"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2432003"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2432003"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2432003"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005230" DistinctValues="12.499771">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2432003"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2432399"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2432399"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2435352"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2435352"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2438304"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2438304"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2441134"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2441134"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2444209"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017556" DistinctValues="41.961755">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2444209"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2445609"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2445609"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2445609"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004213" DistinctValues="10.070821">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2445609"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2445945"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2445945"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2445945"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016013" DistinctValues="38.275116">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2445945"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2447222"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2447222"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2450144"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2450144"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2453066"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000805" DistinctValues="1.903483">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2453066"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2453127"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2453127"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2453127"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006838" DistinctValues="16.164006">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2453127"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2453645"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2453645"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2453645"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026905" DistinctValues="63.595065">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2453645"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2455683"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2455683"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2455683"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003234" DistinctValues="7.645138">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2455683"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2455928"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035165" DistinctValues="84.980907">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2455928"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2458789"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2458789"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2458789"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002618" DistinctValues="6.326785">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2458789"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2459002"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.030880" DistinctValues="73.809785">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2459002"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2461315"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2461315"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2461315"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004059" DistinctValues="9.700897">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2461315"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2461619"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2461619"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2461619"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002844" DistinctValues="6.797010">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2461619"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2461832"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2461832"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2464876"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015954" DistinctValues="37.711314">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2464876"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2466033"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2466033"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2466033"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016368" DistinctValues="38.689135">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2466033"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467220"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467220"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2467220"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004619" DistinctValues="10.919006">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2467220"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467555"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467555"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2467555"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000841" DistinctValues="1.988237">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2467555"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467616"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467616"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2467616"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="91.307692">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2467616"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2470507"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036176" DistinctValues="87.424274">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2470507"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2473276"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2473276"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2473276"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001607" DistinctValues="3.883418">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2473276"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2473399"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034097" DistinctValues="82.402012">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2473399"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2475925"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2475925"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2475925"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003685" DistinctValues="8.905681">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2475925"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2476198"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028551" DistinctValues="68.243702">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2476198"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2478360"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2478360"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2478360"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007646" DistinctValues="18.276181">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2478360"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2478939"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2478939"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2478939"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001585" DistinctValues="3.787810">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2478939"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2479059"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2479059"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2481892"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018061" DistinctValues="43.169594">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2481892"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2483230"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2483230"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2483230"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014794" DistinctValues="35.361640">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2483230"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2484326"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000833" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2484326"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2484326"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004927" DistinctValues="11.776459">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2484326"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2484691"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2484691"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2487948"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2487948"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2488039"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.18" Name="d_following_holiday" Width="2.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.989425" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABU4=" LintValue="160809516"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009576" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1042.1.0" Value="AAAABVk=" LintValue="160899628"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.11" Name="d_fy_year" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.008595" DistinctValues="1.750000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1902"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005456" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1902"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1902"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.025786" DistinctValues="5.250000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1902"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1908"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1908"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1912"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005645" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1912"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1912"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1912"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1916"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1916"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1920"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005493" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1920"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1920"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1920"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1924"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004912" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1924"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1925"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005418" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1925"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1925"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029469" DistinctValues="6.000000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1925"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1931"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1931"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1939"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014735" DistinctValues="2.571429">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1939"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1942"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005531" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1942"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1942"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019646" DistinctValues="3.428571">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1942"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1946"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005683" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1946"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1946"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1947"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1951"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005531" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1951"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1951"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1951"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1955"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1955"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1963"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014735" DistinctValues="2.571429">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1963"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1966"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005607" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1966"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1966"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005645" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1967"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1967"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019646" DistinctValues="3.428571">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1967"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1971"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1971"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1979"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1979"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1988"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1988"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1992"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005645" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1992"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1992"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="3.500000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1992"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1996"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1996"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2004"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="7.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2004"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2011"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005683" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2011"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2011"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2012"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2020"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009823" DistinctValues="1.714286">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2020"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2022"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005493" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2022"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2022"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024558" DistinctValues="4.285714">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2022"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2027"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005493" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2027"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2027"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2028"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2036"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="6.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2036"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2042"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005683" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2042"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2042"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005797" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2043"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2043"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2044"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2051"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005797" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2051"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2051"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="7.000000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2051"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2059"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004912" DistinctValues="0.714286">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2059"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2060"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005531" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2060"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2060"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009823" DistinctValues="1.428571">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2060"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2062"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005456" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2062"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2062"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019646" DistinctValues="2.857143">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2062"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2066"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005834" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2066"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2066"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014735" DistinctValues="2.571429">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2067"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2070"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005456" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2070"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2070"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019646" DistinctValues="3.428571">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2070"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2074"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005607" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2074"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2074"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012893" DistinctValues="2.625000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2075"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2078"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005607" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2078"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2078"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.021488" DistinctValues="4.375000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2078"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2083"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005797" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2083"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2083"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="2.500000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2083"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2086"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005645" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2086"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2086"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017190" DistinctValues="2.500000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2086"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2089"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005948" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2089"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2089"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034381" DistinctValues="8.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2090"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2099"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.10" Name="d_qoy" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.248759" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.249138" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.250047" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.252055" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.3" Name="d_month_seq" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="192"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002337" DistinctValues="5.586043">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="192"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="198"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="198"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="198"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005453" DistinctValues="13.034100">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="198"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="212"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="212"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="212"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029992" DistinctValues="71.687550">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="212"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="289"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="289"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="382"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003579" DistinctValues="8.460729">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="382"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="391"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="391"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="391"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013522" DistinctValues="31.962753">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="391"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="425"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="425"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="425"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007159" DistinctValues="16.921457">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="425"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="443"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="443"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="443"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013522" DistinctValues="31.962753">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="443"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="477"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032557" DistinctValues="78.680033">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="477"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="558"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="558"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="558"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005225" DistinctValues="12.627660">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="558"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="571"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="571"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="668"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="668"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="765"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="765"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="858"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="858"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="959"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017556" DistinctValues="41.961150">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="959"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1005"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1005"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1005"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004198" DistinctValues="10.034188">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1005"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1016"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1016"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1016"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016029" DistinctValues="38.312354">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1016"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1058"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1058"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015743" DistinctValues="38.044872">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1154"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1194"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000644" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1194"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1194"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022040" DistinctValues="53.262821">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1194"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1250"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000804" DistinctValues="1.900164">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1250"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1252"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1252"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1252"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006833" DistinctValues="16.151391">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1252"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1269"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1269"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1269"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026930" DistinctValues="63.655483">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1269"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1336"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1336"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1336"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003216" DistinctValues="7.600655">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1336"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1344"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035164" DistinctValues="84.979436">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1344"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1438"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1438"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1438"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002619" DistinctValues="6.328256">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1438"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1445"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.030876" DistinctValues="73.799835">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1445"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1521"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1521"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1521"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004063" DistinctValues="9.710505">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1521"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1531"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1531"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1531"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002844" DistinctValues="6.797353">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1531"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1538"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1538"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1638"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015953" DistinctValues="37.707692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1638"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1676"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1676"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1676"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016372" DistinctValues="38.700000">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1676"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1715"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004618" DistinctValues="10.915385">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1715"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1726"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1726"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1726"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000840" DistinctValues="1.984615">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1728"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1728"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1728"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="91.307692">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1728"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1823"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036192" DistinctValues="87.463158">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1823"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1914"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1914"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1914"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="3.844534">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1914"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1918"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034086" DistinctValues="82.375418">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1918"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2001"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2001"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2001"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003696" DistinctValues="8.932274">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2001"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2010"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028538" DistinctValues="68.211129">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2010"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2081"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2081"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2081"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007637" DistinctValues="18.253682">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2081"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2100"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2100"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2100"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001608" DistinctValues="3.842881">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2104"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2104"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2197"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018070" DistinctValues="43.190635">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2197"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2241"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2241"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2241"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014784" DistinctValues="35.337793">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2241"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2277"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000833" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2277"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2277"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004928" DistinctValues="11.779264">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2277"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2289"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2289"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2396"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2396"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2399"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.2" Name="d_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VnH//w==" DoubleValue="-3155500800000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yXz//w==" DoubleValue="-2902262400000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yXz//w==" DoubleValue="-2902262400000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LIj//w==" DoubleValue="-2650406400000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LIj//w==" DoubleValue="-2650406400000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="spP//w==" DoubleValue="-2395526400000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="spP//w==" DoubleValue="-2395526400000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1p7//w==" DoubleValue="-2149113600000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1p7//w==" DoubleValue="-2149113600000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EKr//w==" DoubleValue="-1900800000000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EKr//w==" DoubleValue="-1900800000000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="U7X//w==" DoubleValue="-1651708800000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="U7X//w==" DoubleValue="-1651708800000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="08D//w==" DoubleValue="-1397347200000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="08D//w==" DoubleValue="-1397347200000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZMz//w==" DoubleValue="-1141516800000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZMz//w==" DoubleValue="-1141516800000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ytf//w==" DoubleValue="-898387200000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ytf//w==" DoubleValue="-898387200000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="auP//w==" DoubleValue="-632275200000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="auP//w==" DoubleValue="-632275200000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JO///w==" DoubleValue="-372902400000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JO///w==" DoubleValue="-372902400000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfr//w==" DoubleValue="-119145600000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfr//w==" DoubleValue="-119145600000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BwYAAA==" DoubleValue="133315200000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BwYAAA==" DoubleValue="133315200000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IxEAAA==" DoubleValue="379036800000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IxEAAA==" DoubleValue="379036800000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lh0AAA==" DoubleValue="645408000000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lh0AAA==" DoubleValue="645408000000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TCgAAA==" DoubleValue="891302400000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TCgAAA==" DoubleValue="891302400000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IzQAAA==" DoubleValue="1153180800000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IzQAAA==" DoubleValue="1153180800000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4T4AAA==" DoubleValue="1390780800000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4T4AAA==" DoubleValue="1390780800000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KEoAAA==" DoubleValue="1640217600000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KEoAAA==" DoubleValue="1640217600000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="clUAAA==" DoubleValue="1889913600000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="clUAAA==" DoubleValue="1889913600000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZGAAAA==" DoubleValue="2132006400000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZGAAAA==" DoubleValue="2132006400000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f2sAAA==" DoubleValue="2377641600000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f2sAAA==" DoubleValue="2377641600000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mnYAAA==" DoubleValue="2623276800000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mnYAAA==" DoubleValue="2623276800000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g4EAAA==" DoubleValue="2864592000000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g4EAAA==" DoubleValue="2864592000000000.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N44AAA==" DoubleValue="3145564800000000.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N44AAA==" DoubleValue="3145564800000000.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rI4AAA==" DoubleValue="3155673600000000.000000"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:Type Mdid="0.1082.1.0" Name="date" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
- <dxl:EqualityOp Mdid="0.1093.1.0"/>
- <dxl:InequalityOp Mdid="0.1094.1.0"/>
- <dxl:LessThanOp Mdid="0.1095.1.0"/>
- <dxl:LessThanEqualsOp Mdid="0.1096.1.0"/>
- <dxl:GreaterThanOp Mdid="0.1097.1.0"/>
- <dxl:GreaterThanEqualsOp Mdid="0.1098.1.0"/>
- <dxl:ComparisonOp Mdid="0.1092.1.0"/>
- <dxl:ArrayType Mdid="0.1182.1.0"/>
- <dxl:MinAgg Mdid="0.2138.1.0"/>
- <dxl:MaxAgg Mdid="0.2122.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:ColumnStatistics Mdid="1.1974810.1.1.23" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.22" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.15" Name="sr_return_ship_cost" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.020709" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017670" DistinctValues="692.036364">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABALgL" DoubleValue="1.300000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABALgL" DoubleValue="1.300000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABALgL" DoubleValue="1.300000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019709" DistinctValues="771.886713">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgABALgL" DoubleValue="1.300000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACAEwd" DoubleValue="2.750000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004918" DistinctValues="191.963563">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgACAEwd" DoubleValue="2.750000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADAHAX" DoubleValue="3.600000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADAHAX" DoubleValue="3.600000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADAHAX" DoubleValue="3.600000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009374" DistinctValues="365.859967">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADAHAX" DoubleValue="3.600000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAJgI" DoubleValue="5.220000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAJgI" DoubleValue="5.220000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAJgI" DoubleValue="5.220000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004513" DistinctValues="176.154799">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAFAJgI" DoubleValue="5.220000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgAGAA==" DoubleValue="6.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgAGAA==" DoubleValue="6.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgAGAA==" DoubleValue="6.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000694" DistinctValues="27.100738">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgAGAA==" DoubleValue="6.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALAE" DoubleValue="6.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALAE" DoubleValue="6.120000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALAE" DoubleValue="6.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001042" DistinctValues="40.651107">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALAE" DoubleValue="6.120000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALgL" DoubleValue="6.300000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALgL" DoubleValue="6.300000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALgL" DoubleValue="6.300000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007291" DistinctValues="284.557752">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAGALgL" DoubleValue="6.300000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOAV" DoubleValue="7.560000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOAV" DoubleValue="7.560000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOAV" DoubleValue="7.560000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004861" DistinctValues="189.705168">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAHAOAV" DoubleValue="7.560000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAKAP" DoubleValue="8.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAKAP" DoubleValue="8.400000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAKAP" DoubleValue="8.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004687" DistinctValues="182.929983">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIAKAP" DoubleValue="8.400000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAJADQI" DoubleValue="9.210000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001983" DistinctValues="77.571429">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAJADQI" DoubleValue="9.210000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAJAHAX" DoubleValue="9.600000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAJAHAX" DoubleValue="9.600000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAJAHAX" DoubleValue="9.600000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015257" DistinctValues="596.703297">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAJAHAX" DoubleValue="9.600000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMAHAX" DoubleValue="12.600000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMAHAX" DoubleValue="12.600000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMAHAX" DoubleValue="12.600000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008544" DistinctValues="334.153846">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMAHAX" DoubleValue="12.600000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAOAPAK" DoubleValue="14.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000420" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAOAPAK" DoubleValue="14.280000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAOAPAK" DoubleValue="14.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004272" DistinctValues="167.076923">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAOAPAK" DoubleValue="14.280000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007323" DistinctValues="286.417582">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAPALAE" DoubleValue="15.120000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAOAV" DoubleValue="16.560000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000993" DistinctValues="38.855098">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAOAV" DoubleValue="16.560000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEAf" DoubleValue="16.800000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEAf" DoubleValue="16.800000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEAf" DoubleValue="16.800000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009935" DistinctValues="388.550984">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAEAf" DoubleValue="16.800000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgATANAH" DoubleValue="19.200000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgATANAH" DoubleValue="19.200000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgATANAH" DoubleValue="19.200000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008445" DistinctValues="330.268336">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgATANAH" DoubleValue="19.200000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVAGAJ" DoubleValue="21.240000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVAGAJ" DoubleValue="21.240000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVAGAJ" DoubleValue="21.240000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005961" DistinctValues="233.130590">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAVAGAJ" DoubleValue="21.240000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAWAJAa" DoubleValue="22.680000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAWAJAa" DoubleValue="22.680000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAWAJAa" DoubleValue="22.680000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012046" DistinctValues="471.118068">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAWAJAa" DoubleValue="22.680000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAZAAwX" DoubleValue="25.590000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000539" DistinctValues="21.093992">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAZAAwX" DoubleValue="25.590000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAZAOgc" DoubleValue="25.740000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAZAOgc" DoubleValue="25.740000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAZAOgc" DoubleValue="25.740000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034256" DistinctValues="1341.577921">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAZAOgc" DoubleValue="25.740000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAjAPAK" DoubleValue="35.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAjAPAK" DoubleValue="35.280000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAjAPAK" DoubleValue="35.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002585" DistinctValues="101.251164">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAjAPAK" DoubleValue="35.280000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgAkAA==" DoubleValue="36.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023201" DistinctValues="909.262599">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgAkAA==" DoubleValue="36.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgArANAH" DoubleValue="43.200000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgArANAH" DoubleValue="43.200000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgArANAH" DoubleValue="43.200000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014179" DistinctValues="555.660477">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgArANAH" DoubleValue="43.200000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAvAHAX" DoubleValue="47.600000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007651" DistinctValues="299.428700">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAvAHAX" DoubleValue="47.600000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAyAKAP" DoubleValue="50.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAyAKAP" DoubleValue="50.400000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAyAKAP" DoubleValue="50.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009837" DistinctValues="384.979757">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAyAKAP" DoubleValue="50.400000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgA2AA==" DoubleValue="54.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgA2AA==" DoubleValue="54.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgA2AA==" DoubleValue="54.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003935" DistinctValues="153.991903">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgA2AA==" DoubleValue="54.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3ADAR" DoubleValue="55.440000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3ADAR" DoubleValue="55.440000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3ADAR" DoubleValue="55.440000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015957" DistinctValues="624.522717">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3ADAR" DoubleValue="55.440000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA9APAK" DoubleValue="61.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028670" DistinctValues="1123.581777">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA9APAK" DoubleValue="61.280000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBJAPAj" DoubleValue="73.920000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBJAPAj" DoubleValue="73.920000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBJAPAj" DoubleValue="73.920000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008710" DistinctValues="341.341299">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBJAPAj" DoubleValue="73.920000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBNALAd" DoubleValue="77.760000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBNALAd" DoubleValue="77.760000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBhAGQZ" DoubleValue="97.650000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBhAGQZ" DoubleValue="97.650000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB5ALAE" DoubleValue="121.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB5ALAE" DoubleValue="121.120000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCUAIAM" DoubleValue="148.320000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCUAIAM" DoubleValue="148.320000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgC0AEAf" DoubleValue="180.800000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024498" DistinctValues="960.062581">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgC0AEAf" DoubleValue="180.800000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgDMAA==" DoubleValue="204.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000280" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgDMAA==" DoubleValue="204.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgDMAA==" DoubleValue="204.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012882" DistinctValues="504.860495">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACgAAAgDMAA==" DoubleValue="204.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDYANAH" DoubleValue="216.200000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgDYANAH" DoubleValue="216.200000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADASwa" DoubleValue="259.670000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgADASwa" DoubleValue="259.670000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AWAi" DoubleValue="308.880000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AWAi" DoubleValue="308.880000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBsAQgg" DoubleValue="364.820000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBsAQgg" DoubleValue="364.820000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgC0ATAR" DoubleValue="436.440000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgC0ATAR" DoubleValue="436.440000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgATAlQk" DoubleValue="531.930000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgATAlQk" DoubleValue="531.930000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCBAjQh" DoubleValue="641.850000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCBAjQh" DoubleValue="641.850000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAyAc" DoubleValue="778.720000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAyAc" DoubleValue="778.720000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgC1A4gT" DoubleValue="949.500000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgC1A4gT" DoubleValue="949.500000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCkBDAR" DoubleValue="1188.440000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgCkBDAR" DoubleValue="1188.440000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgD8BcgA" DoubleValue="1532.020000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgD8BcgA" DoubleValue="1532.020000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBzCNwF" DoubleValue="2163.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBzCNwF" DoubleValue="2163.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB3GEAG" DoubleValue="6263.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037380" DistinctValues="1465.923077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgB3GEAG" DoubleValue="6263.160000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgByHg==" DoubleValue="7794.000000"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.14" Name="sr_fee" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCIEw==" DoubleValue="0.500000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAEACwa" DoubleValue="4.670000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAEACwa" DoubleValue="4.670000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIADQh" DoubleValue="8.850000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014972" DistinctValues="148.712212">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAIADQh" DoubleValue="8.850000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAGgQ" DoubleValue="10.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAGgQ" DoubleValue="10.420000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAGgQ" DoubleValue="10.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023172" DistinctValues="230.172404">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAKAGgQ" DoubleValue="10.420000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMADQh" DoubleValue="12.850000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAMADQh" DoubleValue="12.850000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAIQc" DoubleValue="16.730000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000290" DistinctValues="2.877605">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQAIQc" DoubleValue="16.730000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQALAd" DoubleValue="16.760000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQALAd" DoubleValue="16.760000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQALAd" DoubleValue="16.760000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037854" DistinctValues="376.007011">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAQALAd" DoubleValue="16.760000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAUAJAa" DoubleValue="20.680000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAUAJAa" DoubleValue="20.680000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAUAJAa" DoubleValue="20.680000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032526" DistinctValues="322.227191">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAUAJAa" DoubleValue="20.680000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAXAEgm" DoubleValue="23.980000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAXAEgm" DoubleValue="23.980000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAXAEgm" DoubleValue="23.980000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005618" DistinctValues="55.657424">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAXAEgm" DoubleValue="23.980000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAYAHwV" DoubleValue="24.550000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.031149" DistinctValues="309.406996">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAYAHwV" DoubleValue="24.550000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAbAMQi" DoubleValue="27.890000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAbAMQi" DoubleValue="27.890000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAbAMQi" DoubleValue="27.890000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006995" DistinctValues="69.477619">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAbAMQi" DoubleValue="27.890000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAcAAAZ" DoubleValue="28.640000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAcAAAZ" DoubleValue="28.640000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAgAHQO" DoubleValue="32.370000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAgAHQO" DoubleValue="32.370000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAkAPAK" DoubleValue="36.280000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAkAPAK" DoubleValue="36.280000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAoAEAG" DoubleValue="40.160000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009322" DistinctValues="92.595243">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAoAEAG" DoubleValue="40.160000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgApAHgF" DoubleValue="41.140000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgApAHgF" DoubleValue="41.140000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgApAHgF" DoubleValue="41.140000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028822" DistinctValues="286.289373">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgApAHgF" DoubleValue="41.140000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAsAKQG" DoubleValue="44.170000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028044" DistinctValues="278.562982">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAsAKQG" DoubleValue="44.170000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAvACwB" DoubleValue="47.030000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAvACwB" DoubleValue="47.030000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAvACwB" DoubleValue="47.030000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010100" DistinctValues="100.321633">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAvACwB" DoubleValue="47.030000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAwAFgC" DoubleValue="48.060000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002414" DistinctValues="23.980039">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAwAFgC" DoubleValue="48.060000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAwABwM" DoubleValue="48.310000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAwABwM" DoubleValue="48.310000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAwABwM" DoubleValue="48.310000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035730" DistinctValues="354.904576">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgAwABwM" DoubleValue="48.310000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AGQA" DoubleValue="52.010000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003805" DistinctValues="37.592072">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AGQA" DoubleValue="52.010000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AKAP" DoubleValue="52.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AKAP" DoubleValue="52.400000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AKAP" DoubleValue="52.400000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019706" DistinctValues="194.707653">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA0AKAP" DoubleValue="52.400000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGgQ" DoubleValue="54.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGgQ" DoubleValue="54.420000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGgQ" DoubleValue="54.420000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004000" DistinctValues="39.519870">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGgQ" DoubleValue="54.420000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGwg" DoubleValue="54.830000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGwg" DoubleValue="54.830000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGwg" DoubleValue="54.830000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010633" DistinctValues="105.065021">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA2AGwg" DoubleValue="54.830000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3APAj" DoubleValue="55.920000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003878" DistinctValues="38.413803">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA3APAj" DoubleValue="55.920000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA4AKwN" DoubleValue="56.350000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA4AKwN" DoubleValue="56.350000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA4AKwN" DoubleValue="56.350000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010009" DistinctValues="99.161211">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA4AKwN" DoubleValue="56.350000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA5APgR" DoubleValue="57.460000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA5APgR" DoubleValue="57.460000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA5APgR" DoubleValue="57.460000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024257" DistinctValues="240.309602">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA5APgR" DoubleValue="57.460000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA8ANwF" DoubleValue="60.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgA8ANwF" DoubleValue="60.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAANwF" DoubleValue="64.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003147" DistinctValues="31.092981">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAANwF" DoubleValue="64.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAAMAS" DoubleValue="64.480000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAAMAS" DoubleValue="64.480000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAAMAS" DoubleValue="64.480000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013160" DistinctValues="130.025192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBAAMAS" DoubleValue="64.480000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBBAJgh" DoubleValue="65.860000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBBAJgh" DoubleValue="65.860000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBBAJgh" DoubleValue="65.860000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009155" DistinctValues="90.452308">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBBAJgh" DoubleValue="65.860000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBCAAgg" DoubleValue="66.820000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBCAAgg" DoubleValue="66.820000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBCAAgg" DoubleValue="66.820000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012683" DistinctValues="125.314135">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBCAAgg" DoubleValue="66.820000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBEANwF" DoubleValue="68.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBEANwF" DoubleValue="68.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBIAEgN" DoubleValue="72.340000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016877" DistinctValues="167.197029">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBIAEgN" DoubleValue="72.340000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBKALwC" DoubleValue="74.070000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBKALwC" DoubleValue="74.070000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBKALwC" DoubleValue="74.070000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.021072" DistinctValues="208.754672">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBKALwC" DoubleValue="74.070000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAPwI" DoubleValue="76.230000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAPwI" DoubleValue="76.230000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAPwI" DoubleValue="76.230000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000195" DistinctValues="1.932914">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAPwI" DoubleValue="76.230000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAMQJ" DoubleValue="76.250000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBMAMQJ" DoubleValue="76.250000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBQADQI" DoubleValue="80.210000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015653" DistinctValues="155.075290">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBQADQI" DoubleValue="80.210000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBRABwl" DoubleValue="81.950000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBRABwl" DoubleValue="81.950000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBRABwl" DoubleValue="81.950000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002069" DistinctValues="20.498458">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBRABwl" DoubleValue="81.950000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBSAAgH" DoubleValue="82.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBSAAgH" DoubleValue="82.180000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBSAAgH" DoubleValue="82.180000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020421" DistinctValues="202.310867">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBSAAgH" DoubleValue="82.180000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBUAJQR" DoubleValue="84.450000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011473" DistinctValues="113.656812">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBUAJQR" DoubleValue="84.450000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBVADgY" DoubleValue="85.620000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBVADgY" DoubleValue="85.620000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBVADgY" DoubleValue="85.620000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014316" DistinctValues="141.828159">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBVADgY" DoubleValue="85.620000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBXACAD" DoubleValue="87.080000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBXACAD" DoubleValue="87.080000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBXACAD" DoubleValue="87.080000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012355" DistinctValues="122.399644">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBXACAD" DoubleValue="87.080000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBYAEgN" DoubleValue="88.340000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003905" DistinctValues="38.578740">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBYAEgN" DoubleValue="88.340000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBYAIQc" DoubleValue="88.730000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000315" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBYAIQc" DoubleValue="88.730000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBYAIQc" DoubleValue="88.730000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004906" DistinctValues="48.470725">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBYAIQc" DoubleValue="88.730000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBZAJgI" DoubleValue="89.220000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000385" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBZAJgI" DoubleValue="89.220000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBZAJgI" DoubleValue="89.220000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012514" DistinctValues="123.649808">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBZAJgI" DoubleValue="89.220000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBaAFwS" DoubleValue="90.470000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000350" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBaAFwS" DoubleValue="90.470000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBaAFwS" DoubleValue="90.470000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016819" DistinctValues="166.185342">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBaAFwS" DoubleValue="90.470000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBcANwF" DoubleValue="92.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBcANwF" DoubleValue="92.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBgAEwE" DoubleValue="96.110000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBgAEwE" DoubleValue="96.110000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBjABwl" DoubleValue="99.950000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038144" DistinctValues="379.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAADAAAAgBjABwl" DoubleValue="99.950000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACgAAAgBkAA==" DoubleValue="100.000000"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.7" Name="sr_store_sk" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.165565" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.166789" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.165740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.167244" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.168783" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.165880" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.6" Name="sr_addr_sk" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.033633" DistinctValues="1484.791804">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1810"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1810"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1810"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004667" DistinctValues="206.015889">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1810"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2061"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2061"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3995"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3995"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5982"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5982"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8004"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017755" DistinctValues="783.835008">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8004"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8927"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8927"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8927"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020545" DistinctValues="906.972685">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="8927"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9995"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9995"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11926"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005883" DistinctValues="259.573715">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11926"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12228"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12228"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="12228"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024975" DistinctValues="1101.899014">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="12228"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13510"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13510"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="13510"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007442" DistinctValues="328.334964">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="13510"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13892"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029344" DistinctValues="1294.657793">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13892"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15445"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15445"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="15445"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001757" DistinctValues="77.529411">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="15445"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15538"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15538"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="15538"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007199" DistinctValues="317.620489">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="15538"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15919"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006520" DistinctValues="287.852230">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15919"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16252"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16252"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="16252"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.031780" DistinctValues="1402.955462">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="16252"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17875"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.030170" DistinctValues="1331.913942">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17875"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19404"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19404"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="19404"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008130" DistinctValues="358.893750">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="19404"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19816"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.021656" DistinctValues="956.013380">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19816"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20918"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20918"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="20918"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016645" DistinctValues="734.794313">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="20918"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21765"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007801" DistinctValues="343.999878">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21765"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22151"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22151"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="22151"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011682" DistinctValues="515.108626">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="22151"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22729"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22729"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="22729"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016270" DistinctValues="717.409072">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="22729"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23534"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23534"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="23534"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002547" DistinctValues="112.290116">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="23534"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23660"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024093" DistinctValues="1063.624724">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23660"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24976"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24976"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="24976"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014207" DistinctValues="627.182968">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="24976"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25752"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009743" DistinctValues="430.125188">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25752"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26259"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26259"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="26259"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028557" DistinctValues="1260.682504">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="26259"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27745"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27745"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29782"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009905" DistinctValues="437.263707">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29782"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30315"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30315"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="30315"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028395" DistinctValues="1253.543985">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="30315"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31843"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31843"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33925"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015632" DistinctValues="690.073621">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33925"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34738"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34738"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="34738"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022669" DistinctValues="1000.734071">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="34738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35917"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028329" DistinctValues="1250.628048">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35917"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37366"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37366"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="37366"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009971" DistinctValues="440.179644">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="37366"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37876"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017620" DistinctValues="777.397534">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37876"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38780"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38780"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="38780"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018224" DistinctValues="804.056078">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="38780"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39715"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="39715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002456" DistinctValues="108.354081">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="39715"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39841"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39841"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41847"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011203" DistinctValues="494.557236">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41847"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42463"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000210" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42463"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="42463"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.027097" DistinctValues="1196.250457">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="42463"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43953"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020708" DistinctValues="914.201064">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43953"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45036"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45036"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="45036"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017592" DistinctValues="776.606629">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="45036"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45956"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008718" DistinctValues="384.408912">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45956"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46401"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46401"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="46401"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003409" DistinctValues="150.308204">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="46401"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46575"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46575"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="46575"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001038" DistinctValues="45.783533">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="46575"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46628"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46628"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="46628"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.025135" DistinctValues="1108.307043">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="46628"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47911"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022357" DistinctValues="986.990469">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47911"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49110"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000175" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49110"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="49110"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015943" DistinctValues="703.817223">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="49110"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49965"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038300" DistinctValues="1691.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49965"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="49995"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:GPDBAgg Mdid="0.2108.1.0" Name="sum" IsSplittable="true">
- <dxl:ResultType Mdid="0.20.1.0"/>
- <dxl:IntermediateResultType Mdid="0.20.1.0"/>
- </dxl:GPDBAgg>
- <dxl:RelationStatistics Mdid="2.1962503.1.1" Name="date_dim" Rows="73049.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1962503.1.0" Name="date_dim" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28" PartitionColumns="6" PartitionTypes="r">
- <dxl:Columns>
- <dxl:Column Name="d_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_date_id" Attno="2" Mdid="0.1042.1.0" Nullable="false" ColWidth="16">
- </dxl:Column>
- <dxl:Column Name="d_date" Attno="3" Mdid="0.1082.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_month_seq" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_week_seq" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_quarter_seq" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_year" Attno="7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dow" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_moy" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dom" Attno="10" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_qoy" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_year" Attno="12" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_quarter_seq" Attno="13" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_week_seq" Attno="14" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_day_name" Attno="15" Mdid="0.1042.1.0" Nullable="true" ColWidth="9">
- </dxl:Column>
- <dxl:Column Name="d_quarter_name" Attno="16" Mdid="0.1042.1.0" Nullable="true" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="d_holiday" Attno="17" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_weekend" Attno="18" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_following_holiday" Attno="19" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_first_dom" Attno="20" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_last_dom" Attno="21" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_ly" Attno="22" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_lq" Attno="23" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_current_day" Attno="24" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_week" Attno="25" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_month" Attno="26" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_quarter" Attno="27" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_year" Attno="28" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.1962503001.1.0"/>
- <dxl:Partition Mdid="6.1962503002.1.0"/>
- </dxl:Partitions>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1962503001.1.0" Name="date_dim_prt_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28">
- <dxl:Columns>
- <dxl:Column Name="d_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_date_id" Attno="2" Mdid="0.1042.1.0" Nullable="false" ColWidth="16">
- </dxl:Column>
- <dxl:Column Name="d_date" Attno="3" Mdid="0.1082.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_month_seq" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_week_seq" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_quarter_seq" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_year" Attno="7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dow" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_moy" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dom" Attno="10" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_qoy" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_year" Attno="12" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_quarter_seq" Attno="13" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_week_seq" Attno="14" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_day_name" Attno="15" Mdid="0.1042.1.0" Nullable="true" ColWidth="9">
- </dxl:Column>
- <dxl:Column Name="d_quarter_name" Attno="16" Mdid="0.1042.1.0" Nullable="true" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="d_holiday" Attno="17" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_weekend" Attno="18" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_following_holiday" Attno="19" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_first_dom" Attno="20" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_last_dom" Attno="21" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_ly" Attno="22" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_lq" Attno="23" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_current_day" Attno="24" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_week" Attno="25" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_month" Attno="26" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_quarter" Attno="27" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_year" Attno="28" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2000"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2001"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1962503002.1.0" Name="date_dim_prt_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28">
- <dxl:Columns>
- <dxl:Column Name="d_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_date_id" Attno="2" Mdid="0.1042.1.0" Nullable="false" ColWidth="16">
- </dxl:Column>
- <dxl:Column Name="d_date" Attno="3" Mdid="0.1082.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_month_seq" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_week_seq" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_quarter_seq" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_year" Attno="7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dow" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_moy" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dom" Attno="10" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_qoy" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_year" Attno="12" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_quarter_seq" Attno="13" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_week_seq" Attno="14" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_day_name" Attno="15" Mdid="0.1042.1.0" Nullable="true" ColWidth="9">
- </dxl:Column>
- <dxl:Column Name="d_quarter_name" Attno="16" Mdid="0.1042.1.0" Nullable="true" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="d_holiday" Attno="17" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_weekend" Attno="18" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_following_holiday" Attno="19" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_first_dom" Attno="20" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_last_dom" Attno="21" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_ly" Attno="22" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_lq" Attno="23" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_current_day" Attno="24" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_week" Attno="25" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_month" Attno="26" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_quarter" Attno="27" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_year" Attno="28" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2001"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2002"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1962503.1.1" Name="date_dim" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28" PartitionColumns="6" PartitionTypes="r">
- <dxl:Columns>
- <dxl:Column Name="d_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_date_id" Attno="2" Mdid="0.1042.1.0" Nullable="false" ColWidth="16">
- </dxl:Column>
- <dxl:Column Name="d_date" Attno="3" Mdid="0.1082.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_month_seq" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_week_seq" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_quarter_seq" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_year" Attno="7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dow" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_moy" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dom" Attno="10" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_qoy" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_year" Attno="12" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_quarter_seq" Attno="13" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_week_seq" Attno="14" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_day_name" Attno="15" Mdid="0.1042.1.0" Nullable="true" ColWidth="9">
- </dxl:Column>
- <dxl:Column Name="d_quarter_name" Attno="16" Mdid="0.1042.1.0" Nullable="true" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="d_holiday" Attno="17" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_weekend" Attno="18" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_following_holiday" Attno="19" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_first_dom" Attno="20" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_last_dom" Attno="21" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_ly" Attno="22" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_lq" Attno="23" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_current_day" Attno="24" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_week" Attno="25" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_month" Attno="26" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_quarter" Attno="27" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_year" Attno="28" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.1962503001.1.1"/>
- <dxl:Partition Mdid="6.1962503002.1.1"/>
- </dxl:Partitions>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1962503001.1.1" Name="date_dim_prt_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28">
- <dxl:Columns>
- <dxl:Column Name="d_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_date_id" Attno="2" Mdid="0.1042.1.0" Nullable="false" ColWidth="16">
- </dxl:Column>
- <dxl:Column Name="d_date" Attno="3" Mdid="0.1082.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_month_seq" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_week_seq" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_quarter_seq" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_year" Attno="7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dow" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_moy" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dom" Attno="10" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_qoy" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_year" Attno="12" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_quarter_seq" Attno="13" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_week_seq" Attno="14" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_day_name" Attno="15" Mdid="0.1042.1.0" Nullable="true" ColWidth="9">
- </dxl:Column>
- <dxl:Column Name="d_quarter_name" Attno="16" Mdid="0.1042.1.0" Nullable="true" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="d_holiday" Attno="17" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_weekend" Attno="18" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_following_holiday" Attno="19" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_first_dom" Attno="20" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_last_dom" Attno="21" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_ly" Attno="22" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_lq" Attno="23" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_current_day" Attno="24" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_week" Attno="25" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_month" Attno="26" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_quarter" Attno="27" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_year" Attno="28" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2000"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2001"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1962503002.1.1" Name="date_dim_prt_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28">
- <dxl:Columns>
- <dxl:Column Name="d_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_date_id" Attno="2" Mdid="0.1042.1.0" Nullable="false" ColWidth="16">
- </dxl:Column>
- <dxl:Column Name="d_date" Attno="3" Mdid="0.1082.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_month_seq" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_week_seq" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_quarter_seq" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_year" Attno="7" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dow" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_moy" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_dom" Attno="10" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_qoy" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_year" Attno="12" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_quarter_seq" Attno="13" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_fy_week_seq" Attno="14" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_day_name" Attno="15" Mdid="0.1042.1.0" Nullable="true" ColWidth="9">
- </dxl:Column>
- <dxl:Column Name="d_quarter_name" Attno="16" Mdid="0.1042.1.0" Nullable="true" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="d_holiday" Attno="17" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_weekend" Attno="18" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_following_holiday" Attno="19" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_first_dom" Attno="20" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_last_dom" Attno="21" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_ly" Attno="22" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_same_day_lq" Attno="23" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="d_current_day" Attno="24" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_week" Attno="25" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_month" Attno="26" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_quarter" Attno="27" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="d_current_year" Attno="28" Mdid="0.1042.1.0" Nullable="true" ColWidth="1">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2001"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="7" ColName="d_year" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2002"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:GPDBFunc Mdid="0.6083.1.0" Name="gp_partition_propagation" ReturnsSet="false" Stability="Volatile" IsStrict="true">
- <dxl:ResultType Mdid="0.2278.1.0"/>
- </dxl:GPDBFunc>
- <dxl:GPDBFunc Mdid="0.6084.1.0" Name="gp_partition_selection" ReturnsSet="false" Stability="Stable" IsStrict="true">
- <dxl:ResultType Mdid="0.26.1.0"/>
- </dxl:GPDBFunc>
- <dxl:GPDBFunc Mdid="0.6085.1.0" Name="gp_partition_expansion" ReturnsSet="true" Stability="Stable" IsStrict="true">
- <dxl:ResultType Mdid="0.26.1.0"/>
- </dxl:GPDBFunc>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.29" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.28" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.21" Name="d_same_day_ly" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2414658"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2417589"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019855" DistinctValues="1448.501597">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2417589"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2419096"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2419096"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2419096"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018550" DistinctValues="1353.344557">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2419096"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2420504"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2420504"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2423454"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034405" DistinctValues="2510.069047">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2423454"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2426009"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2426009"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2426009"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003999" DistinctValues="291.777106">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2426009"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2426306"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020793" DistinctValues="1516.935496">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2426306"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2427862"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2427862"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2427862"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017612" DistinctValues="1284.910658">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2427862"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2429180"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037406" DistinctValues="2728.957336">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2429180"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2431988"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2431988"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2431988"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000999" DistinctValues="72.888818">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2431988"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2432063"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002374" DistinctValues="173.211957">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2432063"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2432245"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2432245"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2432245"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036031" DistinctValues="2628.634197">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2432245"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2435007"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2435007"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2437968"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001651" DistinctValues="120.391395">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2437968"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2438089"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2438089"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2438089"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008926" DistinctValues="650.710513">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2438089"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2438743"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2438743"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2438743"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010195" DistinctValues="743.242742">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2438743"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2439490"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2439490"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2439490"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017633" DistinctValues="1285.501503">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2439490"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2440782"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2440782"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2443862"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019605" DistinctValues="1430.332658">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2443862"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2445394"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2445394"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2445394"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018799" DistinctValues="1371.513496">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2445394"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2446863"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024779" DistinctValues="1807.151332">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2446863"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2448758"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2448758"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2448758"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000052" DistinctValues="3.814567">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2448758"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2448762"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2448762"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2448762"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013573" DistinctValues="989.880255">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2448762"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2449800"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038102" DistinctValues="2779.791923">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2449800"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2452699"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2452699"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2452699"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000302" DistinctValues="22.054231">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2452699"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2452722"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003712" DistinctValues="270.828714">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2452722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2452997"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2452997"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2452997"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034692" DistinctValues="2531.017440">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2452997"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2455567"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2455567"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2458649"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005195" DistinctValues="379.026974">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2458649"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2459034"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2459034"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2459034"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033209" DistinctValues="2422.819179">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2459034"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2461495"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036643" DistinctValues="2673.355024">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2461495"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2464387"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2464387"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2464387"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001761" DistinctValues="128.491130">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2464387"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2464526"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018455" DistinctValues="1346.434248">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2464526"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2465848"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2465848"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2465848"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019949" DistinctValues="1455.411906">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2465848"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467277"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467277"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2470164"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000890" DistinctValues="64.886745">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2470164"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2470231"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2470231"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2470231"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001475" DistinctValues="107.498935">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2470231"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2470342"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2470342"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2470342"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016545" DistinctValues="1205.731302">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2470342"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2471587"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2471587"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2471587"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001395" DistinctValues="101.688182">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2471587"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2471692"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2471692"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2471692"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018099" DistinctValues="1319.040990">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2471692"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2473054"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001357" DistinctValues="98.923901">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2473054"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2473153"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2473153"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2473153"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020025" DistinctValues="1459.876956">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2473153"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2474614"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2474614"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2474614"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003728" DistinctValues="271.790919">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2474614"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2474886"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000038" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2474886"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2474886"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013295" DistinctValues="969.254379">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2474886"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2475856"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002958" DistinctValues="215.829866">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2475856"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2476075"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2476075"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2476075"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035446" DistinctValues="2586.016288">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2476075"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2478699"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023761" DistinctValues="1733.537596">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2478699"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2480458"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000076" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2480458"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2480458"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014643" DistinctValues="1068.308558">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2480458"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2481542"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2481542"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2484335"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2484335"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2487587"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038405" DistinctValues="2802.846154">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2487587"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2487704"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.20" Name="d_last_dom" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.012570" DistinctValues="30.377027">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2415020"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2416052"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000644" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2416052"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2416052"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.025213" DistinctValues="60.930665">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2416052"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2418122"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2418122"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2421044"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002366" DistinctValues="5.655821">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2421044"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2421227"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2421227"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2421227"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006310" DistinctValues="15.082188">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2421227"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2421715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2421715"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2421715"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.029106" DistinctValues="69.569684">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2421715"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2423966"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2423966"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2426828"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004025" DistinctValues="9.514092">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2426828"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2427133"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2427133"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2427133"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012827" DistinctValues="30.320320">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2427133"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2428105"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2428105"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2428105"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009673" DistinctValues="22.865015">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2428105"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2428838"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2428838"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2428838"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011257" DistinctValues="26.608265">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2428838"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2429691"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032921" DistinctValues="79.559010">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2429691"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2432183"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2432183"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2432183"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004862" DistinctValues="11.748682">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2432183"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2432551"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2432551"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2435532"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2435532"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2438457"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2438457"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2441314"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2441314"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2444360"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019265" DistinctValues="46.046933">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2444360"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2445881"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2445881"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2445881"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003888" DistinctValues="9.294154">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2445881"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2446188"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2446188"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2446188"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014629" DistinctValues="34.966606">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2446188"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2447343"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2447343"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2450326"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2450326"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2453247"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2453247"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2453247"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008848" DistinctValues="20.914419">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2453247"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2453917"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2453917"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2453917"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024893" DistinctValues="58.841314">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2453917"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2455802"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2455802"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2455802"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004041" DistinctValues="9.551959">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2455802"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2456108"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037026" DistinctValues="89.478540">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2456108"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2459092"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2459092"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2459092"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000757" DistinctValues="1.829152">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2459092"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2459153"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032155" DistinctValues="76.856267">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2459153"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2461587"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2461587"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2461587"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003210" DistinctValues="7.672996">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2461587"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2461830"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2461830"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2461830"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002418" DistinctValues="5.778429">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2461830"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2462013"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2462013"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2465057"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016795" DistinctValues="39.699551">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2465057"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2466275"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2466275"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2466275"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017623" DistinctValues="41.655194">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2466275"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467553"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467553"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2467553"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000855" DistinctValues="2.020831">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2467553"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467615"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467615"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2467615"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002510" DistinctValues="5.932117">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2467615"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467797"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000789" DistinctValues="1.906802">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467797"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2467858"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2467858"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2467858"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036993" DistinctValues="89.400890">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2467858"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2470718"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036158" DistinctValues="87.382196">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2470718"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2473456"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2473456"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2473456"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001624" DistinctValues="3.925497">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2473456"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2473579"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035339" DistinctValues="85.403193">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2473579"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2476197"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000758" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2476197"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2476197"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002443" DistinctValues="5.904499">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2476197"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2476378"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028738" DistinctValues="68.689262">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2476378"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2478510"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2478510"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2478510"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005769" DistinctValues="13.789401">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2478510"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2478938"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000682" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2478938"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2478938"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003275" DistinctValues="7.829029">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2478938"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2479181"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2479181"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2482040"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019700" DistinctValues="47.086250">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2482040"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2483502"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000720" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2483502"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2483502"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014768" DistinctValues="35.298584">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2483502"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2484598"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000833" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2484598"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2484598"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003315" DistinctValues="7.922857">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2484598"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2484844"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2484844"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2488190"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037783" DistinctValues="92.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2488190"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2488372"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.13" Name="d_fy_week_seq" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.013994" DistinctValues="146.467795">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024238" DistinctValues="253.686051">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="419"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009077" DistinctValues="94.525733">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="419"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="518"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="518"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="518"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001100" DistinctValues="11.457665">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="518"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="530"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="530"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="530"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010269" DistinctValues="106.938203">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="530"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="642"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="642"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="642"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017787" DistinctValues="185.232245">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="642"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="836"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022522" DistinctValues="235.131007">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="836"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1084"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1084"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1084"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006357" DistinctValues="66.367623">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1084"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1154"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009354" DistinctValues="97.655217">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1154"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1257"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1257"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1665"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1665"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2075"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024313" DistinctValues="254.466766">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2075"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2337"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2337"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2337"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013920" DistinctValues="145.687080">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2337"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2487"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017890" DistinctValues="187.245386">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2487"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2684"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2684"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2684"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020342" DistinctValues="212.908460">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2684"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2908"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002621" DistinctValues="27.365157">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2908"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2937"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2937"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2937"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.027929" DistinctValues="291.580469">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2937"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3246"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3246"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3246"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007683" DistinctValues="80.208220">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3246"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3331"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000380" DistinctValues="3.981630">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3331"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3335"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3335"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3335"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037852" DistinctValues="396.172216">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3335"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3733"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3733"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4173"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4173"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4602"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4602"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5021"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003293" DistinctValues="34.376886">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5021"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5057"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5057"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5057"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.031647" DistinctValues="330.400074">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5057"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5403"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5403"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5403"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003293" DistinctValues="34.376886">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5403"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5439"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015255" DistinctValues="159.667298">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5439"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5601"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5601"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5601"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022977" DistinctValues="240.486548">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5601"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5845"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5845"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6285"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024894" DistinctValues="260.542431">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6285"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6550"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6550"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6550"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013339" DistinctValues="139.611416">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="6550"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6692"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6692"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6692"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035231" DistinctValues="367.811512">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="6692"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7091"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7091"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7091"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003002" DistinctValues="31.342334">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7091"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7125"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7125"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7518"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002320" DistinctValues="24.159821">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7518"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7543"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7543"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7543"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015497" DistinctValues="161.387603">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7543"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7710"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7710"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7710"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019859" DistinctValues="206.808066">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7710"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7924"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7924"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7924"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000557" DistinctValues="5.798357">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7924"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7930"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7930"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8343"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001434" DistinctValues="15.005769">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8343"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8358"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8358"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8358"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036799" DistinctValues="385.148077">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="8358"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8743"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016856" DistinctValues="175.981622">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8743"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8922"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8922"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8922"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012054" DistinctValues="125.841607">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="8922"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9050"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9050"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9050"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009323" DistinctValues="97.330618">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="9050"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9149"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9149"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9556"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003737" DistinctValues="39.015038">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9556"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9595"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9595"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9595"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014373" DistinctValues="150.057837">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="9595"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9745"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9745"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9745"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020123" DistinctValues="210.080972">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="9745"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9955"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9955"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10419"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10419"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="10436"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.12" Name="d_fy_quarter_seq" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008323" DistinctValues="6.279156">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001705" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010701" DistinctValues="8.073201">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017835" DistinctValues="13.455335">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002304" DistinctValues="1.800481">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001667" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005759" DistinctValues="4.501202">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028796" DistinctValues="22.506010">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015457" DistinctValues="12.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="110"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="110"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="110"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.021402" DistinctValues="17.307692">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="110"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="128"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004607" DistinctValues="3.475962">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="128"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="132"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="132"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="132"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019581" DistinctValues="14.772837">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="132"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="149"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001819" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="149"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="149"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005759" DistinctValues="4.344952">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="149"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006911" DistinctValues="5.213942">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="160"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="160"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="191"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="191"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="224"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="224"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="256"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010701" DistinctValues="8.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="256"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="265"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="265"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="265"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026158" DistinctValues="21.153846">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="265"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="287"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="29.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="287"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="320"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001743" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="320"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="320"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="321"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="354"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="354"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="386"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010367" DistinctValues="8.102163">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="386"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="395"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="395"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="395"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014974" DistinctValues="11.703125">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="395"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="408"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="408"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="408"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011518" DistinctValues="9.002404">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="408"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="418"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="418"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="418"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007134" DistinctValues="5.382134">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="418"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="424"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="424"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="424"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026158" DistinctValues="19.734491">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="424"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="446"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001781" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="446"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="446"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003567" DistinctValues="2.691067">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="446"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="449"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="449"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="483"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023780" DistinctValues="19.230769">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="483"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="503"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="503"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="503"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013079" DistinctValues="10.576923">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="503"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="514"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="514"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="514"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="29.807692">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="514"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="547"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.031944" DistinctValues="25.833333">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="547"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="573"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001894" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="573"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="573"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004914" DistinctValues="3.974359">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="573"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="577"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="577"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="609"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003567" DistinctValues="2.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="609"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="612"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001705" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="612"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="612"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033292" DistinctValues="26.923077">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="612"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="640"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032103" DistinctValues="25.961538">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="640"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="667"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001667" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="667"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="667"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004756" DistinctValues="3.846154">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="667"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="671"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014268" DistinctValues="11.151365">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="671"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="683"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="683"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="683"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020213" DistinctValues="15.797767">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="683"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001743" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="700"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002378" DistinctValues="1.858561">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="702"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026158" DistinctValues="21.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="702"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="724"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="724"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="724"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010701" DistinctValues="8.653846">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="724"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="733"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032103" DistinctValues="25.961538">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="733"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="760"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001819" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="760"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="760"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004756" DistinctValues="3.846154">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="760"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="764"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="764"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="800"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="800"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="801"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.5" Name="d_quarter_seq" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.008323" DistinctValues="6.279156">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001705" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010701" DistinctValues="8.073201">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017835" DistinctValues="13.455335">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002304" DistinctValues="1.800481">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001667" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005759" DistinctValues="4.501202">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.028796" DistinctValues="22.506010">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015457" DistinctValues="12.500000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="110"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="110"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="110"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.021402" DistinctValues="17.307692">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="110"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="128"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004607" DistinctValues="3.475962">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="128"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="132"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="132"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="132"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019581" DistinctValues="14.772837">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="132"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="149"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001819" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="149"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="149"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.005759" DistinctValues="4.344952">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="149"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006911" DistinctValues="5.213942">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="154"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="160"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="160"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="191"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="191"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="224"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="224"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="256"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010701" DistinctValues="8.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="256"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="265"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="265"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="265"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026158" DistinctValues="21.153846">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="265"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="287"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="29.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="287"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="320"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001743" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="320"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="320"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="321"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="354"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="354"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="386"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010367" DistinctValues="8.102163">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="386"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="395"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="395"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="395"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014974" DistinctValues="11.703125">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="395"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="408"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="408"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="408"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.011518" DistinctValues="9.002404">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="408"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="418"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="418"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="418"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007134" DistinctValues="5.382134">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="418"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="424"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="424"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="424"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026158" DistinctValues="19.734491">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="424"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="446"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001781" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="446"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="446"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003567" DistinctValues="2.691067">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="446"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="449"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="449"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="483"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.023780" DistinctValues="19.230769">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="483"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="503"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="503"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="503"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013079" DistinctValues="10.576923">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="503"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="514"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="514"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="514"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="29.807692">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="514"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="547"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.031944" DistinctValues="25.833333">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="547"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="573"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001894" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="573"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="573"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004914" DistinctValues="3.974359">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="573"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="577"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="577"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="609"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003567" DistinctValues="2.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="609"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="612"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001705" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="612"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="612"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.033292" DistinctValues="26.923077">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="612"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="640"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032103" DistinctValues="25.961538">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="640"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="667"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001667" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="667"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="667"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004756" DistinctValues="3.846154">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="667"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="671"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014268" DistinctValues="11.151365">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="671"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="683"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="683"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="683"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020213" DistinctValues="15.797767">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="683"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001743" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="700"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="700"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002378" DistinctValues="1.858561">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="700"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="702"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.026158" DistinctValues="21.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="702"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="724"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001591" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="724"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="724"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010701" DistinctValues="8.653846">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="724"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="733"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.032103" DistinctValues="25.961538">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="733"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="760"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001819" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="760"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="760"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.004756" DistinctValues="3.846154">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="760"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="764"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="764"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="800"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036859" DistinctValues="30.807692">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="800"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="801"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <dxl:ColumnStatistics Mdid="1.1962503.1.1.4" Name="d_week_seq" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="419"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009077" DistinctValues="94.525733">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="419"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="518"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="518"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="518"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001100" DistinctValues="11.457665">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="518"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="530"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="530"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="530"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.010269" DistinctValues="106.938203">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="530"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="642"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="642"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="642"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017787" DistinctValues="185.232245">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="642"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="836"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022522" DistinctValues="235.131007">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="836"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1084"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1084"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1084"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.006357" DistinctValues="66.367623">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1084"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1154"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1154"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009354" DistinctValues="97.655217">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="1154"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1257"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1257"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="1665"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1665"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2075"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024313" DistinctValues="254.466766">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2075"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2337"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2337"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2337"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013920" DistinctValues="145.687080">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2337"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2487"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.017890" DistinctValues="187.245386">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2487"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2684"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2684"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2684"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.020342" DistinctValues="212.908460">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2684"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2908"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002621" DistinctValues="27.433715">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2908"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2937"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2937"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2937"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035612" DistinctValues="372.720131">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="2937"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3331"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000380" DistinctValues="3.981630">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3331"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3335"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3335"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3335"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.037852" DistinctValues="396.172216">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="3335"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3733"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3733"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4173"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4173"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4602"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.007300" DistinctValues="76.401689">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4602"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4682"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4682"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4682"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.030933" DistinctValues="323.752157">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="4682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5021"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.034940" DistinctValues="365.690835">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5021"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5403"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5403"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5403"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003293" DistinctValues="34.463011">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5403"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5439"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015255" DistinctValues="159.667298">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5439"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5601"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5601"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5601"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022977" DistinctValues="240.486548">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="5601"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5845"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5845"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6285"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.024894" DistinctValues="260.542431">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6285"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6550"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6550"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6550"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.013339" DistinctValues="139.611416">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="6550"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6692"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6692"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6692"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.035231" DistinctValues="367.811512">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="6692"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7091"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7091"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7091"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003002" DistinctValues="31.342334">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7091"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7125"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7125"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7518"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002320" DistinctValues="24.159821">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7518"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7543"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7543"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7543"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015497" DistinctValues="161.387603">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7543"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7710"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7710"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7710"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.019859" DistinctValues="206.808066">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7710"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7924"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7924"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7924"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000557" DistinctValues="5.798357">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="7924"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7930"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7930"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8343"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001434" DistinctValues="15.005769">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8343"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8358"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8358"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8358"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.036799" DistinctValues="385.148077">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="8358"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8743"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.016856" DistinctValues="175.981622">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8743"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8922"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8922"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8922"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.012054" DistinctValues="125.841607">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="8922"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9050"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9050"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9050"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.009323" DistinctValues="97.330618">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="9050"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9149"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9149"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9556"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003737" DistinctValues="38.917293">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9556"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9595"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9595"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9595"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.014373" DistinctValues="149.681897">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="9595"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9745"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000265" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9745"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9745"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.018685" DistinctValues="194.586466">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="9745"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9940"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9940"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9940"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001437" DistinctValues="14.968190">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="9940"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9955"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.022248" DistinctValues="232.848143">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9955"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10225"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000227" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10225"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="10225"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.015985" DistinctValues="167.305703">
- <dxl:LowerBound Closed="false" TypeMdid="0.23.1.0" Value="10225"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10419"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.038233" DistinctValues="401.153846">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10419"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="10436"/>
- </dxl:StatsBucket>
- </dxl:ColumnStatistics>
- <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:RelationStatistics Mdid="2.1974810.1.1" Name="store_returns" Rows="287422.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1974810.1.1" Name="store_returns" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9,0;25,26,20" PartitionColumns="0" PartitionTypes="r">
- <dxl:Columns>
- <dxl:Column Name="sr_returned_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_time_sk" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_item_sk" Attno="3" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_customer_sk" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_cdemo_sk" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_hdemo_sk" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_addr_sk" Attno="7" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_store_sk" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_reason_sk" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_ticket_number" Attno="10" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_quantity" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt" Attno="12" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_tax" Attno="13" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt_inc_tax" Attno="14" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_fee" Attno="15" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_ship_cost" Attno="16" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_refunded_cash" Attno="17" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_reversed_charge" Attno="18" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_store_credit" Attno="19" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_net_loss" Attno="20" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:Partitions>
- <dxl:Partition Mdid="6.1974810001.1.1"/>
- <dxl:Partition Mdid="6.1974810002.1.1"/>
- <dxl:Partition Mdid="6.1974810003.1.1"/>
- <dxl:Partition Mdid="6.1974810004.1.1"/>
- <dxl:Partition Mdid="6.1974810005.1.1"/>
- </dxl:Partitions>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1974810001.1.1" Name="store_returns_prt_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9,0;25,26,20">
- <dxl:Columns>
- <dxl:Column Name="sr_returned_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_time_sk" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_item_sk" Attno="3" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_customer_sk" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_cdemo_sk" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_hdemo_sk" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_addr_sk" Attno="7" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_store_sk" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_reason_sk" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_ticket_number" Attno="10" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_quantity" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt" Attno="12" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_tax" Attno="13" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt_inc_tax" Attno="14" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_fee" Attno="15" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_ship_cost" Attno="16" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_refunded_cash" Attno="17" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_reversed_charge" Attno="18" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_store_credit" Attno="19" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_net_loss" Attno="20" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="0"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1974810002.1.1" Name="store_returns_prt_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9,0;25,26,20">
- <dxl:Columns>
- <dxl:Column Name="sr_returned_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_time_sk" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_item_sk" Attno="3" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_customer_sk" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_cdemo_sk" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_hdemo_sk" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_addr_sk" Attno="7" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_store_sk" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_reason_sk" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_ticket_number" Attno="10" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_quantity" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt" Attno="12" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_tax" Attno="13" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt_inc_tax" Attno="14" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_fee" Attno="15" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_ship_cost" Attno="16" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_refunded_cash" Attno="17" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_reversed_charge" Attno="18" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_store_credit" Attno="19" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_net_loss" Attno="20" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1974810003.1.1" Name="store_returns_prt_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9,0;25,26,20">
- <dxl:Columns>
- <dxl:Column Name="sr_returned_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_time_sk" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_item_sk" Attno="3" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_customer_sk" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_cdemo_sk" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_hdemo_sk" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_addr_sk" Attno="7" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_store_sk" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_reason_sk" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_ticket_number" Attno="10" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_quantity" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt" Attno="12" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_tax" Attno="13" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt_inc_tax" Attno="14" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_fee" Attno="15" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_ship_cost" Attno="16" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_refunded_cash" Attno="17" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_reversed_charge" Attno="18" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_store_credit" Attno="19" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_net_loss" Attno="20" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="2"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="100"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1974810004.1.1" Name="store_returns_prt_4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9,0;25,26,20">
- <dxl:Columns>
- <dxl:Column Name="sr_returned_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_time_sk" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_item_sk" Attno="3" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_customer_sk" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_cdemo_sk" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_hdemo_sk" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_addr_sk" Attno="7" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_store_sk" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_reason_sk" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_ticket_number" Attno="10" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_quantity" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt" Attno="12" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_tax" Attno="13" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt_inc_tax" Attno="14" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_fee" Attno="15" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_ship_cost" Attno="16" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_refunded_cash" Attno="17" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_reversed_charge" Attno="18" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_store_credit" Attno="19" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_net_loss" Attno="20" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="100"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1000"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:Relation Mdid="6.1974810005.1.1" Name="store_returns_prt_5" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9,0;25,26,20">
- <dxl:Columns>
- <dxl:Column Name="sr_returned_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_time_sk" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_item_sk" Attno="3" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_customer_sk" Attno="4" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_cdemo_sk" Attno="5" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_hdemo_sk" Attno="6" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_addr_sk" Attno="7" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_store_sk" Attno="8" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_reason_sk" Attno="9" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_ticket_number" Attno="10" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_quantity" Attno="11" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt" Attno="12" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_tax" Attno="13" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_amt_inc_tax" Attno="14" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_fee" Attno="15" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_return_ship_cost" Attno="16" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_refunded_cash" Attno="17" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_reversed_charge" Attno="18" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_store_credit" Attno="19" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="sr_net_loss" Attno="20" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- <dxl:PartConstraint>
- <dxl:And>
- <dxl:IsNotNull>
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- </dxl:IsNotNull>
- <dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.525.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1000"/>
- </dxl:Comparison>
- <dxl:Comparison ComparisonOperator="<" OperatorMdid="0.97.1.0">
- <dxl:Ident ColId="1" ColName="sr_returned_date_sk" TypeMdid="0.23.1.0"/>
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="10000"/>
- </dxl:Comparison>
- </dxl:And>
- </dxl:PartConstraint>
- </dxl:Relation>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.25" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.24" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:ColumnStatistics Mdid="1.1974810.1.1.17" Name="sr_reversed_charge" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.020954" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACAAAAgA=" DoubleValue="0.000000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000875" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBkAA==" DoubleValue="0.010000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000770" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDIAA==" DoubleValue="0.020000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsAQ==" DoubleValue="0.030000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000944" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsAQ==" DoubleValue="0.030000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsAQ==" DoubleValue="0.030000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002385" DistinctValues="69.446650">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAsAQ==" DoubleValue="0.030000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000910" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgD0AQ==" DoubleValue="0.050000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000805" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBYAg==" DoubleValue="0.060000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgC8Ag==" DoubleValue="0.070000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000735" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgC8Ag==" DoubleValue="0.070000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgC8Ag==" DoubleValue="0.070000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgC8Ag==" DoubleValue="0.070000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAgAw==" DoubleValue="0.080000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000875" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAgAw==" DoubleValue="0.080000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgAgAw==" DoubleValue="0.080000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002385" DistinctValues="69.446650">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgAgAw==" DoubleValue="0.080000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000735" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDoAw==" DoubleValue="0.100000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000770" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.001193" DistinctValues="34.723325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgBMBA==" DoubleValue="0.110000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCwBA==" DoubleValue="0.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000770" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCwBA==" DoubleValue="0.120000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCwBA==" DoubleValue="0.120000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.003578" DistinctValues="104.169975">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCwBA==" DoubleValue="0.120000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000700" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002385" DistinctValues="69.446650">
- <dxl:LowerBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgDcBQ==" DoubleValue="0.150000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1700.1.0" Value="AAAACv//AgCkBg==" DoubleValue="0.170000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.000735" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCkBg==" DoubleValue="0.170000"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1700.1.0" Value="AAAACv//AgCkBg==" DoubleValue="0.170000"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.002385" DistinctValues="69.446650">
... 34574 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 21/30: Enable ORCA to generate plans with row level security enabled (#16869)
Posted by ma...@apache.org.
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 80a26c835b22ff5e1708de57c1a545f40dc0b7d8
Author: Dev Swaroop Chattopadhyay <10...@users.noreply.github.com>
AuthorDate: Wed Jan 31 17:40:20 2024 +0530
Enable ORCA to generate plans with row level security enabled (#16869)
By default the tables do not have any policies defined, allowing any user with
table access privileges to query them. Row level security[1], when activated on a
table, permits the restriction of queried rows on a per-user basis. The table
owner exclusively holds the privilege to enable or disable row security and add
policies. To determine visible or modifiable rows based on a policy, an
expression yielding a Boolean result is necessary. This expression (security
quals) evaluates for each row before any conditions or functions from the
user's query are evaluated. Presently, ORCA fallbacks to the planner when
querying a table with row security. This pull request enhances ORCA to generate
plans with row level security enabled.
Implementation
The security quals are added to SeqScan/DynSeqScan during DXL to Planned
Statement translation. The security quals are placed before any quals from the
user's query. ORCA will fallback to planner if the security quals contains
sublinks.
Features Not Supported by this PR
Foreign Tables with RLS : The postgres_fdw wrapper does not support row level
security. We can't run a query like alter foreign table foo enable row level
security. It was discussed on hackers[2].
All type of Index Scans : The logic used in this PR is to add the security
quals as a filter while translating DXL to Planned statement. So in the case of
a index plan we will already have a DXL index plan before adding the security
quals as filter. It may happen that we generate a plan where the index
condition contains non-leakproof expressions. This can lead to data leak as we
always want our security quals to be executed first.
INSERT AND UPDATE : Insert and update queries also have WITHCHECKOPTIONS in the
rewritten parse tree which is not supported by ORCA. In this case ORCA will
fallback to planner.
[1] https://www.postgresql.org/docs/12/ddl-rowsecurity.html
[2] https://www.postgresql.org/message-id/flat/2518.1478214978@sss.pgh.pa.us#66fdfa406eccd80f8486e18429ba10ce
---
src/backend/gpopt/gpdbwrappers.cpp | 11 +
.../gpopt/translate/CTranslatorDXLToPlStmt.cpp | 238 +++-
.../gpopt/translate/CTranslatorQueryToDXL.cpp | 89 +-
.../include/gpopt/operators/CLogicalDynamicGet.h | 16 +-
.../libgpopt/include/gpopt/operators/CLogicalGet.h | 14 +-
.../src/operators/CExpressionPreprocessor.cpp | 2 +-
.../libgpopt/src/operators/CLogicalDynamicGet.cpp | 26 +-
.../gporca/libgpopt/src/operators/CLogicalGet.cpp | 19 +-
.../src/translate/CTranslatorDXLToExpr.cpp | 11 +-
...CXformExpandDynamicGetWithForeignPartitions.cpp | 4 +-
.../src/xforms/CXformJoin2IndexApplyGeneric.cpp | 22 +
.../libgpopt/src/xforms/CXformLimit2IndexGet.cpp | 12 +
.../libgpopt/src/xforms/CXformMinMax2IndexGet.cpp | 11 +
.../src/xforms/CXformSelect2BitmapBoolOp.cpp | 14 +
.../src/xforms/CXformSelect2DynamicIndexGet.cpp | 11 +
.../xforms/CXformSelect2DynamicIndexOnlyGet.cpp | 11 +
.../libgpopt/src/xforms/CXformSelect2IndexGet.cpp | 11 +
.../src/xforms/CXformSelect2IndexOnlyGet.cpp | 11 +
.../gporca/libgpopt/src/xforms/CXformUtils.cpp | 2 +-
.../xforms/CxformSelect2DynamicBitmapBoolOp.cpp | 12 +
.../naucrates/dxl/operators/CDXLLogicalGet.h | 8 +-
.../naucrates/dxl/parser/CParseHandlerLogicalGet.h | 4 +-
.../include/naucrates/dxl/xml/dxltokens.h | 3 +
.../libnaucrates/src/operators/CDXLLogicalGet.cpp | 17 +-
.../src/parser/CParseHandlerLogicalForeignGet.cpp | 6 +-
.../src/parser/CParseHandlerLogicalGet.cpp | 16 +-
.../gporca/libnaucrates/src/xml/dxltokens.cpp | 2 +
src/include/gpopt/gpdbwrappers.h | 3 +
.../gpopt/translate/CTranslatorDXLToPlStmt.h | 28 +
.../gpopt/translate/CTranslatorQueryToDXL.h | 3 +
src/test/regress/expected/equivclass_optimizer.out | 16 +-
src/test/regress/expected/qp_rowsecurity.out | 986 ++++++++++++++++
.../regress/expected/qp_rowsecurity_optimizer.out | 920 +++++++++++++++
src/test/regress/expected/rowsecurity.out | 2 +
.../{rowsecurity.out => rowsecurity_optimizer.out} | 1175 +++++++++++++++-----
src/test/regress/greenplum_schedule | 2 +-
src/test/regress/sql/qp_rowsecurity.sql | 466 ++++++++
src/test/regress/sql/rowsecurity.sql | 2 +
38 files changed, 3848 insertions(+), 358 deletions(-)
diff --git a/src/backend/gpopt/gpdbwrappers.cpp b/src/backend/gpopt/gpdbwrappers.cpp
index 8343d36ba8..74d2ca1bc7 100644
--- a/src/backend/gpopt/gpdbwrappers.cpp
+++ b/src/backend/gpopt/gpdbwrappers.cpp
@@ -418,6 +418,17 @@ gpdb::WalkExpressionTree(Node *node, bool (*walker)(Node *, void *), void *conte
return false;
}
+gpos::BOOL
+gpdb::WalkQueryTree(Query *query, bool (*walker)(), void *context, int flags)
+{
+ GP_WRAP_START;
+ {
+ return query_tree_walker(query, walker, context, flags);
+ }
+ GP_WRAP_END;
+ return false;
+}
+
Oid
gpdb::ExprType(Node *expr)
{
diff --git a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
index bf3c79a4ce..62c516bf03 100644
--- a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
+++ b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
@@ -105,6 +105,8 @@ extern "C" {
#include "naucrates/md/IMDTypeInt4.h"
#include "naucrates/traceflags/traceflags.h"
+#include "nodes/nodeFuncs.h"
+
using namespace gpdxl;
using namespace gpos;
using namespace gpopt;
@@ -627,9 +629,9 @@ CTranslatorDXLToPlStmt::TranslateDXLTblScan(
// Lock any table we are to scan, since it may not have been properly locked
// by the parser (e.g in case of generated scans for partitioned tables)
- CMDIdGPDB *mdid = CMDIdGPDB::CastMdid(md_rel->MDId());
+ OID oidRel = CMDIdGPDB::CastMdid(md_rel->MDId())->Oid();
GPOS_ASSERT(dxl_table_descr->LockMode() != -1);
- gpdb::GPDBLockRelationOid(mdid->Oid(), dxl_table_descr->LockMode());
+ gpdb::GPDBLockRelationOid(oidRel, dxl_table_descr->LockMode());
Index index = ProcessDXLTblDescr(dxl_table_descr, &base_table_context);
@@ -641,24 +643,27 @@ CTranslatorDXLToPlStmt::TranslateDXLTblScan(
CDXLNode *filter_dxlnode = (*tbl_scan_dxlnode)[EdxltsIndexFilter];
List *targetlist = NIL;
- List *qual = NIL;
+
+ // List to hold the quals after translating filter_dxlnode node.
+ List *query_quals = NIL;
TranslateProjListAndFilter(
project_list_dxlnode, filter_dxlnode,
&base_table_context, // translate context for the base table
nullptr, // translate_ctxt_left and pdxltrctxRight,
- &targetlist, &qual, output_context);
+ &targetlist, &query_quals, output_context);
Plan *plan = nullptr;
Plan *plan_return = nullptr;
if (IMDRelation::ErelstorageForeign == md_rel->RetrieveRelStorageType())
{
- OID oidRel = CMDIdGPDB::CastMdid(md_rel->MDId())->Oid();
RangeTblEntry *rte = m_dxl_to_plstmt_context->GetRTEByIndex(index);
+ // The postgres_fdw wrapper does not support row level security. So
+ // passing only the query_quals while creating the foreign scan node.
ForeignScan *foreign_scan =
- gpdb::CreateForeignScan(oidRel, index, qual, targetlist,
+ gpdb::CreateForeignScan(oidRel, index, query_quals, targetlist,
m_dxl_to_plstmt_context->m_orig_query, rte);
foreign_scan->scan.scanrelid = index;
plan = &(foreign_scan->scan.plan);
@@ -672,7 +677,22 @@ CTranslatorDXLToPlStmt::TranslateDXLTblScan(
plan_return = (Plan *) seq_scan;
plan->targetlist = targetlist;
- plan->qual = qual;
+
+ // List to hold the quals which contain both security quals and query
+ // quals.
+ List *security_query_quals = NIL;
+
+ // Fetching the RTE of the relation from the rewritten parse tree
+ // based on the oidRel and adding the security quals of the RTE in
+ // the security_query_quals list.
+ AddSecurityQuals(oidRel, &security_query_quals, &index);
+
+ // The security quals should always be executed first when
+ // compared to other quals. So appending query quals to the
+ // security_query_quals list after the security quals.
+ security_query_quals =
+ gpdb::ListConcat(security_query_quals, query_quals);
+ plan->qual = security_query_quals;
}
if (md_rel->IsAORowOrColTable())
@@ -4267,6 +4287,11 @@ CTranslatorDXLToPlStmt::TranslateDXLDynTblScan(
CMDIdGPDB::CastMdid(m_md_accessor->PtMDType<IMDTypeInt4>()->MDId())
->Oid();
+ const IMDRelation *md_rel =
+ m_md_accessor->RetrieveRel(dxl_table_descr->MDId());
+
+ OID oidRel = CMDIdGPDB::CastMdid(md_rel->MDId())->Oid();
+
dyn_seq_scan->join_prune_paramids =
TranslateJoinPruneParamids(dyn_tbl_scan_dxlop->GetSelectorIds(),
oid_type, m_dxl_to_plstmt_context);
@@ -4285,11 +4310,29 @@ CTranslatorDXLToPlStmt::TranslateDXLDynTblScan(
(*dyn_tbl_scan_dxlnode)[EdxltsIndexProjList];
CDXLNode *filter_dxlnode = (*dyn_tbl_scan_dxlnode)[EdxltsIndexFilter];
+ // List to hold the quals which contain both security quals and query
+ // quals.
+ List *security_query_quals = NIL;
+
+ // List to hold the quals after translating filter_dxlnode node.
+ List *query_quals = NIL;
+
+ // Fetching the RTE of the relation from the rewritten parse tree
+ // based on the oidRel and adding the security quals of the RTE in
+ // the security_query_quals list.
+ AddSecurityQuals(oidRel, &security_query_quals, &index);
+
TranslateProjListAndFilter(
project_list_dxlnode, filter_dxlnode,
&base_table_context, // translate context for the base table
nullptr, // translate_ctxt_left and pdxltrctxRight,
- &plan->targetlist, &plan->qual, output_context);
+ &plan->targetlist, &query_quals, output_context);
+
+ // The security quals should always be executed first when compared to
+ // other quals. So appending query quals to the security_query_quals
+ // list after the security quals.
+ security_query_quals = gpdb::ListConcat(security_query_quals, query_quals);
+ plan->qual = security_query_quals;
SetParamIds(plan);
@@ -5743,6 +5786,185 @@ CTranslatorDXLToPlStmt::TranslateProjListAndFilter(
child_contexts, output_context);
}
+//-----------------------------------------------------------------------------
+// @function:
+// CTranslatorDXLToPlStmt::AddSecurityQuals
+//
+// @doc:
+// This method is used to fetch the range table entry from the rewritten
+// parse tree based on the relId and add it's security quals in the quals
+// list. It also modifies the varno of the VAR node present in the
+// security quals and assigns it the value of the index i.e. the
+// position of this rte at m_dxl_to_plstmt_context->m_rtable_entries_list
+// (shortened as "rte_list")
+//
+//---------------------------------------------------------------------------
+void
+CTranslatorDXLToPlStmt::AddSecurityQuals(OID relId, List **qual, Index *index)
+{
+ SContextSecurityQuals ctxt_security_quals(relId);
+
+ // Find the RTE in the parse tree based on the relId and add the security
+ // quals of that RTE to the m_security_quals list present in
+ // ctxt_security_quals struct.
+ FetchSecurityQuals(m_dxl_to_plstmt_context->m_orig_query,
+ &ctxt_security_quals);
+
+ // The varno of the columns related to a particular table is different in
+ // the rewritten parse tree and the planned statement tree. In planned
+ // statement the varno of the columns is based on the index of the RTE
+ // at m_dxl_to_plstmt_context->m_rtable_entries_list. Since we are adding
+ // the security quals from the rewritten parse tree to planned statement
+ // tree we need to modify the varno of all the VAR nodes present in the
+ // security quals and assign it equal to index of the RTE in the rte_list.
+ SetSecurityQualsVarnoWalker((Node *) ctxt_security_quals.m_security_quals,
+ index);
+
+ // Adding the security quals from m_security_quals list to the qual list
+ *qual = gpdb::ListConcat(*qual, ctxt_security_quals.m_security_quals);
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CTranslatorDXLToPlStmt::FetchSecurityQuals
+//
+// @doc:
+// This method is used to walk the entire rewritten parse tree and
+// search for a range table entry whose relid is equal to the m_relId
+// field of ctxt_security_quals struct. On finding the RTE this method
+// will also add the security quals present in it to the
+// m_security_quals list of ctxt_security_quals struct.
+//
+//---------------------------------------------------------------------------
+BOOL
+CTranslatorDXLToPlStmt::FetchSecurityQuals(
+ Query *parsetree, SContextSecurityQuals *ctxt_security_quals)
+{
+ ListCell *lc;
+
+ // Iterate through all the range table entries present in the the rtable
+ // of the parsetree and search for a range table entry whose relid is
+ // equal to ctxt_security_quals->m_relId. If found then add the security
+ // quals of that RTE in the ctxt_security_quals->m_security_quals list.
+ // If the range table entry contains a subquery then recurse through that
+ // subquery and continue the search.
+ foreach (lc, parsetree->rtable)
+ {
+ RangeTblEntry *rte = (RangeTblEntry *) lfirst(lc);
+ if (RTE_RELATION == rte->rtekind &&
+ rte->relid == ctxt_security_quals->m_relId)
+ {
+ ctxt_security_quals->m_security_quals = gpdb::ListConcat(
+ ctxt_security_quals->m_security_quals, rte->securityQuals);
+ return true;
+ }
+
+ if ((RTE_SUBQUERY == rte->rtekind ||
+ RTE_TABLEFUNCTION == rte->rtekind) &&
+ FetchSecurityQuals(rte->subquery, ctxt_security_quals))
+ {
+ return true;
+ }
+ }
+
+ // Recurse into ctelist
+ foreach (lc, parsetree->cteList)
+ {
+ CommonTableExpr *cte = lfirst_node(CommonTableExpr, lc);
+
+ if (FetchSecurityQuals(castNode(Query, cte->ctequery),
+ ctxt_security_quals))
+ {
+ return true;
+ }
+ }
+
+ // Recurse into sublink subqueries. We have already recursed the sublink
+ // subqueries present in the rtable and ctelist. QTW_IGNORE_RC_SUBQUERIES
+ // flag indicates to avoid recursing subqueries present in rtable and
+ // ctelist
+ if (parsetree->hasSubLinks)
+ {
+ return gpdb::WalkQueryTree(
+ parsetree,
+ (BOOL(*)()) CTranslatorDXLToPlStmt::FetchSecurityQualsWalker,
+ ctxt_security_quals, QTW_IGNORE_RC_SUBQUERIES);
+ }
+
+ return false;
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CTranslatorDXLToPlStmt::FetchSecurityQualsWalker
+//
+// @doc:
+// This method is a walker to recurse into SUBLINK nodes and search for
+// an RTE having relid equal to m_relId field of ctxt_security_quals struct
+//
+//---------------------------------------------------------------------------
+BOOL
+CTranslatorDXLToPlStmt::FetchSecurityQualsWalker(
+ Node *node, SContextSecurityQuals *ctxt_security_quals)
+{
+ if (nullptr == node)
+ {
+ return false;
+ }
+
+ // If the node is a SUBLINK, fetch its subselect node and start the
+ // search again for the RTE based on the m_relId field of
+ // ctxt_security_quals struct. If we found the RTE then the flag
+ // m_found_rte would have been set to true. In that case returning true
+ // which indicates to abort the walk immediately.
+ if (IsA(node, SubLink))
+ {
+ SubLink *sub = (SubLink *) node;
+
+ if (FetchSecurityQuals(castNode(Query, sub->subselect),
+ ctxt_security_quals))
+ {
+ return true;
+ }
+ }
+
+ return gpdb::WalkExpressionTree(
+ node, (BOOL(*)()) CTranslatorDXLToPlStmt::FetchSecurityQualsWalker,
+ ctxt_security_quals);
+}
+
+//-----------------------------------------------------------------------------
+// @function:
+// CTranslatorDXLToPlStmt::SetSecurityQualsVarnoWalker
+//
+// @doc:
+// The varno of the columns related to a particular table is different in
+// the rewritten parse tree and the planned statement tree. In planned
+// statement the varno of the columns is based on the index of the RTE at
+// m_dxl_to_plstmt_context->m_rtable_entries_list. Since we are adding
+// the security quals from the rewritten parse tree to planned statement
+// tree we need to modify the varno of all the VAR nodes present in the
+// security quals and assign it equal to index of the RTE in the rte_list.
+//
+//---------------------------------------------------------------------------
+BOOL
+CTranslatorDXLToPlStmt::SetSecurityQualsVarnoWalker(Node *node, Index *index)
+{
+ if (nullptr == node)
+ {
+ return false;
+ }
+
+ if (IsA(node, Var))
+ {
+ ((Var *) node)->varno = *index;
+ return false;
+ }
+
+ return gpdb::WalkExpressionTree(
+ node, (BOOL(*)()) CTranslatorDXLToPlStmt::SetSecurityQualsVarnoWalker,
+ index);
+}
//---------------------------------------------------------------------------
// @function:
diff --git a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
index 48e34a3119..85351167ed 100644
--- a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
@@ -468,13 +468,62 @@ CTranslatorQueryToDXL::CheckRangeTable(Query *query)
{
RangeTblEntry *rte = (RangeTblEntry *) lfirst(lc);
- if (rte->security_barrier || rte->securityQuals)
+ if (rte->security_barrier)
{
GPOS_ASSERT_FIXME(RTE_SUBQUERY == rte->rtekind);
// otherwise ORCA most likely pushes potentially leaky filters down
GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiQuery2DXLUnsupportedFeature,
GPOS_WSZ_LIT("views with security_barrier ON"));
}
+
+ // In a rewritten parse tree
+ //
+ // [1] When hasRowSecurity=false and security_quals are not
+ // present in an rte, means that the relations present in a
+ // query don't have row level security enabled.
+ //
+ // [2] When hasRowSecurity=true and security_quals are present
+ // in an rte, means that the relations present in a query have
+ // row level security enabled.
+ //
+ // [3] When hasRowSecurity=true and security_quals are not
+ // present in an rte, means that the relations present in
+ // a query have row level security enabled but the query is
+ // executed by the owner of the relation.
+ //
+ // [4] When hasRowSecurity=false and security_quals are
+ // present in an rte example: A view with security barrier
+ // enabled and the view contains a relation with rules.
+ // Example query is below
+ //
+ // ```SQL
+ // CREATE TABLE foo(id int PRIMARY KEY, data text, deleted boolean);
+ // CREATE RULE foo_del_rule AS ON DELETE TO foo DO INSTEAD UPDATE foo SET deleted = true WHERE id = old.id;
+ // CREATE VIEW rw_view1 WITH (security_barrier=true) AS SELECT id, data FROM foo WHERE NOT deleted;
+ // DELETE FROM rw_view1 WHERE id = 1;
+ // ```
+ // ORCA will fallback to planner for this case [4].
+ if (!query->hasRowSecurity && nullptr != rte->securityQuals)
+ {
+ GPOS_RAISE(
+ gpdxl::ExmaDXL, gpdxl::ExmiQuery2DXLUnsupportedFeature,
+ GPOS_WSZ_LIT(
+ "Security quals present in RTE without row level security enabled"));
+ }
+
+ // ORCA will fallback to planner if row level security is
+ // enabled for a relation and the security quals contain
+ // sublinks.
+ if (query->hasRowSecurity && query->hasSubLinks &&
+ 0 < gpdb::ListLength(rte->securityQuals) &&
+ CheckSublinkInSecurityQuals((Node *) rte->securityQuals, nullptr))
+ {
+ GPOS_RAISE(
+ gpdxl::ExmaDXL, gpdxl::ExmiQuery2DXLUnsupportedFeature,
+ GPOS_WSZ_LIT(
+ "Query has row level security enabled and security quals contain sublinks"));
+ }
+
if (rte->tablesample)
{
GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiQuery2DXLUnsupportedFeature,
@@ -483,6 +532,38 @@ CTranslatorQueryToDXL::CheckRangeTable(Query *query)
}
}
+//---------------------------------------------------------------------------
+// @function:
+// CTranslatorQueryToDXL::CheckSublinkInSecurityQuals
+//
+// @doc:
+// When row level security is enabled we add the security quals
+// while translating the table scans from DXL To Planned Statement.
+// If the security quals consists of SUBLINKS then those queries
+// will not have been planned as we add them at the end during
+// translation. So falling back to planner for such cases. This walker
+// is used to find if we have any sublinks present in the security quals.
+//
+//---------------------------------------------------------------------------
+
+BOOL
+CTranslatorQueryToDXL::CheckSublinkInSecurityQuals(Node *node, void *context)
+{
+ if (nullptr == node)
+ {
+ return false;
+ }
+
+ if (IsA(node, SubLink))
+ {
+ return true;
+ }
+
+ return gpdb::WalkExpressionTree(
+ node, (BOOL(*)()) CTranslatorQueryToDXL::CheckSublinkInSecurityQuals,
+ context);
+}
+
//---------------------------------------------------------------------------
// @function:
// CTranslatorQueryToDXL::GetQueryOutputCols
@@ -3402,6 +3483,9 @@ CTranslatorQueryToDXL::TranslateRTEToDXLLogicalGet(const RangeTblEntry *rte,
GPOS_WSZ_LIT("ONLY in the FROM clause"));
}
+
+ BOOL rteHasSecurityQuals = gpdb::ListLength(rte->securityQuals) > 0;
+
// query_id_for_target_rel is used to tag table descriptors assigned to target
// (result) relations one. In case of possible nested DML subqueries it's
// field points to target relation of corresponding Query structure of subquery.
@@ -3426,7 +3510,8 @@ CTranslatorQueryToDXL::TranslateRTEToDXLLogicalGet(const RangeTblEntry *rte,
}
else
{
- dxl_op = GPOS_NEW(m_mp) CDXLLogicalGet(m_mp, dxl_table_descr);
+ dxl_op = GPOS_NEW(m_mp)
+ CDXLLogicalGet(m_mp, dxl_table_descr, rteHasSecurityQuals);
}
CDXLNode *dxl_node = GPOS_NEW(m_mp) CDXLNode(m_mp, dxl_op);
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h
index 516087b429..9850879b80 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalDynamicGet.h
@@ -42,6 +42,9 @@ protected:
// Indexes correspond to partitions
IMdIdArray *m_foreign_server_mdids{nullptr};
+ // relation has row level security enabled and has security quals
+ BOOL m_has_security_quals{false};
+
public:
CLogicalDynamicGet(const CLogicalDynamicGet &) = delete;
@@ -54,11 +57,14 @@ public:
CColRef2dArray *pdrgpdrgpcrPart,
IMdIdArray *partition_mdids,
CConstraint *partition_cnstrs_disj, BOOL static_pruned,
- IMdIdArray *foreign_server_mdids);
+ IMdIdArray *foreign_server_mdids,
+ BOOL hasSecurityQuals = false);
+
CLogicalDynamicGet(CMemoryPool *mp, const CName *pnameAlias,
CTableDescriptor *ptabdesc, ULONG ulPartIndex,
IMdIdArray *partition_mdids,
- IMdIdArray *foreign_server_mdids);
+ IMdIdArray *foreign_server_mdids,
+ BOOL hasSecurityQuals = false);
// dtor
~CLogicalDynamicGet() override;
@@ -91,6 +97,12 @@ public:
return m_static_pruned;
}
+ BOOL
+ HasSecurityQuals() const
+ {
+ return m_has_security_quals;
+ }
+
// operator specific hash function
ULONG HashValue() const override;
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h
index 5ce4a328b4..d9c5986890 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalGet.h
@@ -48,6 +48,9 @@ private:
// distribution columns (empty for master only tables)
CColRefSet *m_pcrsDist;
+ // relation has row level security enabled and has security quals
+ BOOL m_has_security_quals{false};
+
void CreatePartCols(CMemoryPool *mp, const ULongPtrArray *pdrgpulPart);
// private copy ctor
@@ -58,10 +61,11 @@ public:
explicit CLogicalGet(CMemoryPool *mp);
CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
- CTableDescriptor *ptabdesc);
+ CTableDescriptor *ptabdesc, BOOL hasSecurityQuals = false);
CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
- CTableDescriptor *ptabdesc, CColRefArray *pdrgpcrOutput);
+ CTableDescriptor *ptabdesc, CColRefArray *pdrgpcrOutput,
+ BOOL hasSecurityQuals = false);
// dtor
~CLogicalGet() override;
@@ -115,6 +119,12 @@ public:
return m_pdrgpdrgpcrPart;
}
+ BOOL
+ HasSecurityQuals() const
+ {
+ return m_has_security_quals;
+ }
+
// operator specific hash function
ULONG HashValue() const override;
diff --git a/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp b/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp
index f2f47d86c1..c939fa3805 100644
--- a/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp
@@ -2921,7 +2921,7 @@ CExpressionPreprocessor::PrunePartitions(CMemoryPool *mp, CExpression *expr)
mp, new_alias, dyn_get->Ptabdesc(), dyn_get->ScanId(),
dyn_get->PdrgpcrOutput(), dyn_get->PdrgpdrgpcrPart(),
selected_partition_mdids, selected_part_cnstr_disj, true,
- foreign_server_mdids);
+ foreign_server_mdids, dyn_get->HasSecurityQuals());
CExpressionArray *select_children = GPOS_NEW(mp) CExpressionArray(mp);
select_children->Append(GPOS_NEW(mp) CExpression(mp, new_dyn_get));
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp
index 125875a894..9aa9045cc7 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalDynamicGet.cpp
@@ -60,12 +60,13 @@ CLogicalDynamicGet::CLogicalDynamicGet(
ULONG ulPartIndex, CColRefArray *pdrgpcrOutput,
CColRef2dArray *pdrgpdrgpcrPart, IMdIdArray *partition_mdids,
CConstraint *partition_cnstrs_disj, BOOL static_pruned,
- IMdIdArray *foreign_server_mdids)
+ IMdIdArray *foreign_server_mdids, BOOL hasSecurityQuals)
: CLogicalDynamicGetBase(mp, pnameAlias, ptabdesc, ulPartIndex,
pdrgpcrOutput, pdrgpdrgpcrPart, partition_mdids),
m_partition_cnstrs_disj(partition_cnstrs_disj),
m_static_pruned(static_pruned),
- m_foreign_server_mdids(foreign_server_mdids)
+ m_foreign_server_mdids(foreign_server_mdids),
+ m_has_security_quals(hasSecurityQuals)
{
GPOS_ASSERT(static_pruned || (nullptr == partition_cnstrs_disj));
GPOS_ASSERT(nullptr != foreign_server_mdids);
@@ -84,10 +85,12 @@ CLogicalDynamicGet::CLogicalDynamicGet(CMemoryPool *mp, const CName *pnameAlias,
CTableDescriptor *ptabdesc,
ULONG ulPartIndex,
IMdIdArray *partition_mdids,
- IMdIdArray *foreign_server_mdids)
+ IMdIdArray *foreign_server_mdids,
+ BOOL hasSecurityQuals)
: CLogicalDynamicGetBase(mp, pnameAlias, ptabdesc, ulPartIndex,
partition_mdids),
- m_foreign_server_mdids(foreign_server_mdids)
+ m_foreign_server_mdids(foreign_server_mdids),
+ m_has_security_quals(hasSecurityQuals)
{
GPOS_ASSERT(nullptr != foreign_server_mdids);
}
@@ -122,6 +125,9 @@ CLogicalDynamicGet::HashValue() const
ulHash =
gpos::CombineHashes(ulHash, CUtils::UlHashColArray(m_pdrgpcrOutput));
+ ulHash = gpos::CombineHashes(ulHash,
+ gpos::HashValue<BOOL>(&m_has_security_quals));
+
return ulHash;
}
@@ -137,7 +143,15 @@ CLogicalDynamicGet::HashValue() const
BOOL
CLogicalDynamicGet::Matches(COperator *pop) const
{
- return CUtils::FMatchDynamicScan(this, pop);
+ if (this->Eopid() != pop->Eopid())
+ {
+ return false;
+ }
+
+ CLogicalDynamicGet *popGet = CLogicalDynamicGet::PopConvert(pop);
+
+ return CUtils::FMatchDynamicScan(this, pop) &&
+ this->HasSecurityQuals() == popGet->HasSecurityQuals();
}
//---------------------------------------------------------------------------
@@ -187,7 +201,7 @@ CLogicalDynamicGet::PopCopyWithRemappedColumns(CMemoryPool *mp,
return GPOS_NEW(mp) CLogicalDynamicGet(
mp, pnameAlias, Ptabdesc(), m_scan_id, pdrgpcrOutput, pdrgpdrgpcrPart,
m_partition_mdids, partition_cnstrs_disj, m_static_pruned,
- m_foreign_server_mdids);
+ m_foreign_server_mdids, m_has_security_quals);
}
//---------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp
index 39524647e9..c430e21652 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalGet.cpp
@@ -57,13 +57,14 @@ CLogicalGet::CLogicalGet(CMemoryPool *mp)
//
//---------------------------------------------------------------------------
CLogicalGet::CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
- CTableDescriptor *ptabdesc)
+ CTableDescriptor *ptabdesc, BOOL hasSecurityQuals)
: CLogical(mp),
m_pnameAlias(pnameAlias),
m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_pdrgpcrOutput(nullptr),
m_pdrgpdrgpcrPart(nullptr),
- m_pcrsDist(nullptr)
+ m_pcrsDist(nullptr),
+ m_has_security_quals(hasSecurityQuals)
{
GPOS_ASSERT(nullptr != ptabdesc);
GPOS_ASSERT(nullptr != pnameAlias);
@@ -93,12 +94,13 @@ CLogicalGet::CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
//---------------------------------------------------------------------------
CLogicalGet::CLogicalGet(CMemoryPool *mp, const CName *pnameAlias,
CTableDescriptor *ptabdesc,
- CColRefArray *pdrgpcrOutput)
+ CColRefArray *pdrgpcrOutput, BOOL hasSecurityQuals)
: CLogical(mp),
m_pnameAlias(pnameAlias),
m_ptabdesc(GPOS_NEW(mp) CTableDescriptorHashSet(mp)),
m_pdrgpcrOutput(pdrgpcrOutput),
- m_pdrgpdrgpcrPart(nullptr)
+ m_pdrgpdrgpcrPart(nullptr),
+ m_has_security_quals(hasSecurityQuals)
{
GPOS_ASSERT(nullptr != ptabdesc);
GPOS_ASSERT(nullptr != pnameAlias);
@@ -149,6 +151,9 @@ CLogicalGet::HashValue() const
ulHash =
gpos::CombineHashes(ulHash, CUtils::UlHashColArray(m_pdrgpcrOutput));
+ ulHash = gpos::CombineHashes(ulHash,
+ gpos::HashValue<BOOL>(&m_has_security_quals));
+
return ulHash;
}
@@ -171,7 +176,8 @@ CLogicalGet::Matches(COperator *pop) const
CLogicalGet *popGet = CLogicalGet::PopConvert(pop);
return Ptabdesc()->MDId()->Equals(popGet->Ptabdesc()->MDId()) &&
- m_pdrgpcrOutput->Equals(popGet->PdrgpcrOutput());
+ m_pdrgpcrOutput->Equals(popGet->PdrgpcrOutput()) &&
+ m_has_security_quals == popGet->HasSecurityQuals();
}
//---------------------------------------------------------------------------
@@ -201,7 +207,8 @@ CLogicalGet::PopCopyWithRemappedColumns(CMemoryPool *mp,
CName *pnameAlias = GPOS_NEW(mp) CName(mp, *m_pnameAlias);
Ptabdesc()->AddRef();
- return GPOS_NEW(mp) CLogicalGet(mp, pnameAlias, Ptabdesc(), pdrgpcrOutput);
+ return GPOS_NEW(mp) CLogicalGet(mp, pnameAlias, Ptabdesc(), pdrgpcrOutput,
+ m_has_security_quals);
}
//---------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/src/translate/CTranslatorDXLToExpr.cpp b/src/backend/gporca/libgpopt/src/translate/CTranslatorDXLToExpr.cpp
index 22d8bb3eba..671b9b143a 100644
--- a/src/backend/gporca/libgpopt/src/translate/CTranslatorDXLToExpr.cpp
+++ b/src/backend/gporca/libgpopt/src/translate/CTranslatorDXLToExpr.cpp
@@ -579,6 +579,8 @@ CTranslatorDXLToExpr::PexprLogicalGet(const CDXLNode *dxlnode)
CDXLTableDescr *table_descr =
CDXLLogicalGet::Cast(dxl_op)->GetDXLTableDescr();
+ BOOL hasSecurityQuals = CDXLLogicalGet::Cast(dxl_op)->HasSecurityQuals();
+
GPOS_ASSERT(nullptr != table_descr);
GPOS_ASSERT(nullptr != table_descr->MdName()->GetMDName());
@@ -632,9 +634,9 @@ CTranslatorDXLToExpr::PexprLogicalGet(const CDXLNode *dxlnode)
// generate a part index id
ULONG part_idx_id = COptCtxt::PoctxtFromTLS()->UlPartIndexNextVal();
partition_mdids->AddRef();
- popGet = GPOS_NEW(m_mp)
- CLogicalDynamicGet(m_mp, pname, ptabdesc, part_idx_id,
- partition_mdids, foreign_server_mdids);
+ popGet = GPOS_NEW(m_mp) CLogicalDynamicGet(
+ m_mp, pname, ptabdesc, part_idx_id, partition_mdids,
+ foreign_server_mdids, hasSecurityQuals);
CLogicalDynamicGet *popDynamicGet =
CLogicalDynamicGet::PopConvert(popGet);
@@ -645,7 +647,8 @@ CTranslatorDXLToExpr::PexprLogicalGet(const CDXLNode *dxlnode)
{
if (EdxlopLogicalGet == edxlopid)
{
- popGet = GPOS_NEW(m_mp) CLogicalGet(m_mp, pname, ptabdesc);
+ popGet = GPOS_NEW(m_mp)
+ CLogicalGet(m_mp, pname, ptabdesc, hasSecurityQuals);
}
else
{
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformExpandDynamicGetWithForeignPartitions.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformExpandDynamicGetWithForeignPartitions.cpp
index 7b867783e3..ce7636588a 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformExpandDynamicGetWithForeignPartitions.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformExpandDynamicGetWithForeignPartitions.cpp
@@ -85,6 +85,7 @@ CXformExpandDynamicGetWithForeignPartitions::Transform(CXformContext *pxfctxt,
IMdIdArray *foreign_server_mdids = popGet->ForeignServerMdIds();
IMdIdArray *all_part_mdids = popGet->GetPartitionMdids();
+ BOOL hasSecurityQuals = popGet->HasSecurityQuals();
IMdIdArray *non_foreign_parts = GPOS_NEW(mp) IMdIdArray(mp);
// create map from server-> (array of part mdids)
@@ -165,7 +166,8 @@ CXformExpandDynamicGetWithForeignPartitions::Transform(CXformContext *pxfctxt,
mp, new_alias, popGet->Ptabdesc(), popGet->ScanId(), pdrgpcrNew,
popGet->PdrgpdrgpcrPart(), non_foreign_parts,
popGet->GetPartitionConstraintsDisj(), popGet->FStaticPruned(),
- GPOS_NEW(mp) IMdIdArray(mp) /* foreign_server_mdids */);
+ GPOS_NEW(mp) IMdIdArray(mp) /* foreign_server_mdids */,
+ hasSecurityQuals);
CExpression *pexprNonForeignDynamicGet =
GPOS_NEW(mp) CExpression(mp, nonForeignDynamicGet);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformJoin2IndexApplyGeneric.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformJoin2IndexApplyGeneric.cpp
index 331ed04df6..afc309a676 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformJoin2IndexApplyGeneric.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformJoin2IndexApplyGeneric.cpp
@@ -268,6 +268,17 @@ CXformJoin2IndexApplyGeneric::Transform(CXformContext *pxfctxt,
distributionCols = popGet->PcrsDist();
pexprGet = pexprCurrInnerChild;
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
if (nullptr != groupingColsToCheck.Value() &&
(!groupingColsToCheck->ContainsAll(distributionCols) ||
ptabdescInner->GetRelDistribution() ==
@@ -296,6 +307,17 @@ CXformJoin2IndexApplyGeneric::Transform(CXformContext *pxfctxt,
}
pexprGet = pexprCurrInnerChild;
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popDynamicGet->HasSecurityQuals())
+ {
+ return;
+ }
+
if (nullptr != groupingColsToCheck.Value() &&
(!groupingColsToCheck->ContainsAll(distributionCols) ||
ptabdescInner->GetRelDistribution() ==
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformLimit2IndexGet.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformLimit2IndexGet.cpp
index a9eab74007..d8b19c03f1 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformLimit2IndexGet.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformLimit2IndexGet.cpp
@@ -94,6 +94,18 @@ CXformLimit2IndexGet::Transform(CXformContext *pxfctxt, CXformResult *pxfres,
CExpression *pexprScalarRows = (*pexpr)[2];
CLogicalGet *popGet = CLogicalGet::PopConvert(pexprRelational->Pop());
+
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
// get the indices count of this relation
const ULONG ulIndices = popGet->Ptabdesc()->IndexCount();
// Ignore xform if relation doesn't have any indices
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformMinMax2IndexGet.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformMinMax2IndexGet.cpp
index b09e4223a5..5367b6ef46 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformMinMax2IndexGet.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformMinMax2IndexGet.cpp
@@ -106,6 +106,17 @@ CXformMinMax2IndexGet::Transform(CXformContext *pxfctxt, CXformResult *pxfres,
return;
}
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
CExpression *pexprPrjEl = (*pexprScalarPrjList)[0];
CExpression *pexprAggFunc = (*pexprPrjEl)[0];
CScalarAggFunc *popScAggFunc =
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2BitmapBoolOp.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2BitmapBoolOp.cpp
index a2549992cb..ca9f515b6c 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2BitmapBoolOp.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2BitmapBoolOp.cpp
@@ -75,6 +75,20 @@ CXformSelect2BitmapBoolOp::Transform(CXformContext *pxfctxt,
GPOS_ASSERT(FPromising(pxfctxt->Pmp(), this, pexpr));
GPOS_ASSERT(FCheckPattern(pexpr));
+ CExpression *pexprRelational = (*pexpr)[0];
+ CLogicalGet *popGet = CLogicalGet::PopConvert(pexprRelational->Pop());
+
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
CExpression *pexprResult =
CXformUtils::PexprSelect2BitmapBoolOp(pxfctxt->Pmp(), pexpr);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexGet.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexGet.cpp
index c354e67f36..75bacfade3 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexGet.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexGet.cpp
@@ -91,6 +91,17 @@ CXformSelect2DynamicIndexGet::Transform(CXformContext *pxfctxt,
return;
}
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
CMemoryPool *mp = pxfctxt->Pmp();
// extract components
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexOnlyGet.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexOnlyGet.cpp
index 0f251fcfbc..efbae1c06c 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexOnlyGet.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2DynamicIndexOnlyGet.cpp
@@ -86,6 +86,17 @@ CXformSelect2DynamicIndexOnlyGet::Transform(CXformContext *pxfctxt,
return;
}
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
CMemoryPool *mp = pxfctxt->Pmp();
// extract components
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexGet.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexGet.cpp
index 5940a6b7ac..2385d0c1cf 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexGet.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexGet.cpp
@@ -92,6 +92,17 @@ CXformSelect2IndexGet::Transform(CXformContext *pxfctxt, CXformResult *pxfres,
return;
}
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
// array of expressions in the scalar expression
CExpressionArray *pdrgpexpr =
CPredicateUtils::PdrgpexprConjuncts(mp, pexprScalar);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexOnlyGet.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexOnlyGet.cpp
index 5ef0f03174..35c6fe7694 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexOnlyGet.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformSelect2IndexOnlyGet.cpp
@@ -78,6 +78,17 @@ CXformSelect2IndexOnlyGet::Transform(CXformContext *pxfctxt,
return;
}
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
// array of expressions in the scalar expression
CExpressionArray *pdrgpexpr =
CPredicateUtils::PdrgpexprConjuncts(mp, pexprScalar);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
index 1c24fcc223..1cdfb4cae7 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
@@ -2507,7 +2507,7 @@ CXformUtils::PexprBuildBtreeIndexPlan(CMemoryPool *mp, CMDAccessor *md_accessor,
//
// (2) is valid only for Join2IndexApply xform wherein the index-get
// expression must include outer references for it to be an alternative
- // worth considering. Otherwise it has the same effect as a regular NLJ
+ // worth considering. Otherwise, it has the same effect as a regular NLJ
// with an index lookup.
//
// Both (1) and (2) doesn't apply if index is used for ORDER BY. Because
diff --git a/src/backend/gporca/libgpopt/src/xforms/CxformSelect2DynamicBitmapBoolOp.cpp b/src/backend/gporca/libgpopt/src/xforms/CxformSelect2DynamicBitmapBoolOp.cpp
index feec234944..1471254704 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CxformSelect2DynamicBitmapBoolOp.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CxformSelect2DynamicBitmapBoolOp.cpp
@@ -83,6 +83,18 @@ CXformSelect2DynamicBitmapBoolOp::Transform(CXformContext *pxfctxt,
{
return;
}
+
+ // We need to early exit when the relation contains security quals
+ // because we are adding the security quals when translating from DXL to
+ // Planned Statement as a filter. If we don't early exit then it may happen
+ // that we generate a plan where the index condition contains non-leakproof
+ // expressions. This can lead to data leak as we always want our security
+ // quals to be executed first.
+ if (popGet->HasSecurityQuals())
+ {
+ return;
+ }
+
CMemoryPool *mp = pxfctxt->Pmp();
CExpression *pexprResult = CXformUtils::PexprSelect2BitmapBoolOp(mp, pexpr);
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLLogicalGet.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLLogicalGet.h
index e2f894da72..202142b4eb 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLLogicalGet.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/operators/CDXLLogicalGet.h
@@ -35,11 +35,15 @@ private:
// table descriptor for the scanned table
CDXLTableDescr *m_dxl_table_descr;
+ // the table has row level security enabled and contains security quals
+ BOOL m_has_security_quals{false};
+
public:
CDXLLogicalGet(CDXLLogicalGet &) = delete;
// ctor
- CDXLLogicalGet(CMemoryPool *mp, CDXLTableDescr *table_descr);
+ CDXLLogicalGet(CMemoryPool *mp, CDXLTableDescr *table_descr,
+ BOOL hasSecurityQuals = false);
// dtor
~CDXLLogicalGet() override;
@@ -67,6 +71,8 @@ public:
return dynamic_cast<CDXLLogicalGet *>(dxl_op);
}
+ BOOL HasSecurityQuals() const;
+
#ifdef GPOS_DEBUG
// checks whether the operator has valid structure, i.e. number and
// types of child nodes
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerLogicalGet.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerLogicalGet.h
index 7227e3788d..5683da061c 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerLogicalGet.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerLogicalGet.h
@@ -36,6 +36,8 @@ XERCES_CPP_NAMESPACE_USE
class CParseHandlerLogicalGet : public CParseHandlerLogicalOp
{
private:
+ BOOL m_has_security_quals{false};
+
// process the start of an element
void StartElement(
const XMLCh *const element_uri, // URI of element's namespace
@@ -54,7 +56,7 @@ private:
protected:
// start element helper function
void StartElement(const XMLCh *const element_local_name,
- Edxltoken token_type);
+ Edxltoken token_type, const Attributes &attr);
// end element helper function
void EndElement(const XMLCh *const element_local_name,
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
index 25e1a2bfac..ac2d4c6f45 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
@@ -367,6 +367,9 @@ enum Edxltoken
EdxltokenGpSegmentIdColName,
EdxltokenGpForeignServerColName,
+ // For Logical Select
+ EdxltokenSecurityQuals,
+
EdxltokenActionColId,
EdxltokenCtidColId,
EdxltokenGpSegmentIdColId,
diff --git a/src/backend/gporca/libnaucrates/src/operators/CDXLLogicalGet.cpp b/src/backend/gporca/libnaucrates/src/operators/CDXLLogicalGet.cpp
index bd7c6a5aa6..183c9e0c09 100644
--- a/src/backend/gporca/libnaucrates/src/operators/CDXLLogicalGet.cpp
+++ b/src/backend/gporca/libnaucrates/src/operators/CDXLLogicalGet.cpp
@@ -27,8 +27,11 @@ using namespace gpdxl;
// Construct a logical get operator node given its table descriptor rtable entry
//
//---------------------------------------------------------------------------
-CDXLLogicalGet::CDXLLogicalGet(CMemoryPool *mp, CDXLTableDescr *table_descr)
- : CDXLLogical(mp), m_dxl_table_descr(table_descr)
+CDXLLogicalGet::CDXLLogicalGet(CMemoryPool *mp, CDXLTableDescr *table_descr,
+ BOOL hasSecurityQuals)
+ : CDXLLogical(mp),
+ m_dxl_table_descr(table_descr),
+ m_has_security_quals(hasSecurityQuals)
{
}
@@ -106,6 +109,10 @@ CDXLLogicalGet::SerializeToDXL(CXMLSerializer *xml_serializer,
xml_serializer->OpenElement(
CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix), element_name);
+ xml_serializer->AddAttribute(
+ CDXLTokens::GetDXLTokenStr(EdxltokenSecurityQuals),
+ m_has_security_quals);
+
// serialize table descriptor
m_dxl_table_descr->SerializeToDXL(xml_serializer);
@@ -137,6 +144,12 @@ CDXLLogicalGet::IsColDefined(ULONG colid) const
return false;
}
+BOOL
+CDXLLogicalGet::HasSecurityQuals() const
+{
+ return m_has_security_quals;
+}
+
#ifdef GPOS_DEBUG
//---------------------------------------------------------------------------
// @function:
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalForeignGet.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalForeignGet.cpp
index ed75d2e270..4f75587b06 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalForeignGet.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalForeignGet.cpp
@@ -45,12 +45,12 @@ void
CParseHandlerLogicalForeignGet::StartElement(
const XMLCh *const, // element_uri,
const XMLCh *const element_local_name,
- const XMLCh *const, // element_qname
- const Attributes & //attrs
+ const XMLCh *const, // element_qname
+ const Attributes &attr //attrs
)
{
CParseHandlerLogicalGet::StartElement(element_local_name,
- EdxltokenLogicalForeignGet);
+ EdxltokenLogicalForeignGet, attr);
}
//---------------------------------------------------------------------------
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalGet.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalGet.cpp
index e5300a92b0..e17eacd0d2 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalGet.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerLogicalGet.cpp
@@ -47,7 +47,8 @@ CParseHandlerLogicalGet::CParseHandlerLogicalGet(
//---------------------------------------------------------------------------
void
CParseHandlerLogicalGet::StartElement(const XMLCh *const element_local_name,
- Edxltoken token_type)
+ Edxltoken token_type,
+ const Attributes &attr)
{
if (0 != XMLString::compareString(CDXLTokens::XmlstrToken(token_type),
element_local_name))
@@ -58,6 +59,10 @@ CParseHandlerLogicalGet::StartElement(const XMLCh *const element_local_name,
str->GetBuffer());
}
+ m_has_security_quals = CDXLOperatorFactory::ExtractConvertAttrValueToBool(
+ m_parse_handler_mgr->GetDXLMemoryManager(), attr,
+ EdxltokenSecurityQuals, token_type, true, false);
+
// create child node parsers
// parse handler for table descriptor
@@ -82,11 +87,11 @@ CParseHandlerLogicalGet::StartElement(const XMLCh *const element_local_name,
void
CParseHandlerLogicalGet::StartElement(const XMLCh *const, // element_uri,
const XMLCh *const element_local_name,
- const XMLCh *const, // element_qname
- const Attributes & //attrs
+ const XMLCh *const, // element_qname
+ const Attributes &attr //attrs
)
{
- StartElement(element_local_name, EdxltokenLogicalGet);
+ StartElement(element_local_name, EdxltokenLogicalGet, attr);
}
//---------------------------------------------------------------------------
@@ -121,7 +126,8 @@ CParseHandlerLogicalGet::EndElement(const XMLCh *const element_local_name,
if (EdxltokenLogicalGet == token_type)
{
m_dxl_node = GPOS_NEW(m_mp)
- CDXLNode(m_mp, GPOS_NEW(m_mp) CDXLLogicalGet(m_mp, table_descr));
+ CDXLNode(m_mp, GPOS_NEW(m_mp) CDXLLogicalGet(m_mp, table_descr,
+ m_has_security_quals));
}
else
{
diff --git a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
index af2b1a20df..83cd2234d2 100644
--- a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
+++ b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
@@ -417,6 +417,8 @@ CDXLTokens::Init(CMemoryPool *mp)
{EdxltokenGpSegmentIdColName, GPOS_WSZ_LIT("gp_segment_id")},
{EdxltokenGpForeignServerColName, GPOS_WSZ_LIT("gp_foreign_server")},
+ {EdxltokenSecurityQuals, GPOS_WSZ_LIT("HasSecurityQuals")},
+
{EdxltokenActionColId, GPOS_WSZ_LIT("ActionCol")},
{EdxltokenCtidColId, GPOS_WSZ_LIT("CtidCol")},
{EdxltokenGpSegmentIdColId, GPOS_WSZ_LIT("SegmentIdCol")},
diff --git a/src/include/gpopt/gpdbwrappers.h b/src/include/gpopt/gpdbwrappers.h
index 6105174b50..caec2d340b 100644
--- a/src/include/gpopt/gpdbwrappers.h
+++ b/src/include/gpopt/gpdbwrappers.h
@@ -684,6 +684,9 @@ IndexAmRoutine *GetIndexAmRoutineFromAmHandler(Oid am_handler);
bool TestexprIsHashable(Node *testexpr, List *param_ids);
+gpos::BOOL WalkQueryTree(Query *query, bool (*walker)(), void *context,
+ int flags);
+
} //namespace gpdb
#define ForEach(cell, l) \
diff --git a/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h b/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
index de4c0d0edc..c377aa9ba0 100644
--- a/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
+++ b/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
@@ -106,6 +106,21 @@ private:
}
}; // SContextIndexVarAttno
+ // context for finding security quals in an RTE
+ struct SContextSecurityQuals
+ {
+ // relid of the RTE to search in the rewritten parse tree
+ const OID m_relId;
+
+ // List to hold the security quals present in an RTE
+ List *m_security_quals{NIL};
+
+ // ctor
+ SContextSecurityQuals(const OID relId) : m_relId(relId)
+ {
+ }
+ }; // SContextSecurityQuals
+
// memory pool
CMemoryPool *m_mp;
@@ -139,6 +154,17 @@ private:
static BOOL SetIndexVarAttnoWalker(
Node *node, SContextIndexVarAttno *ctxt_index_var_attno_walker);
+ // walker to set inner var to outer
+ static BOOL SetHashKeysVarnoWalker(Node *node, void *context);
+
+ static BOOL FetchSecurityQualsWalker(
+ Node *node, SContextSecurityQuals *ctxt_security_quals);
+
+ static BOOL FetchSecurityQuals(Query *parsetree,
+ SContextSecurityQuals *ctxt_security_quals);
+
+ static BOOL SetSecurityQualsVarnoWalker(Node *node, Index *index);
+
public:
// ctor
CTranslatorDXLToPlStmt(CMemoryPool *mp, CMDAccessor *md_accessor,
@@ -492,6 +518,8 @@ private:
CDXLTranslationContextArray *child_contexts, List **targetlist_out,
List **qual_out, CDXLTranslateContext *output_context);
+ void AddSecurityQuals(OID relId, List **qual, Index *index);
+
// translate the hash expr list of a redistribute motion node
void TranslateHashExprList(const CDXLNode *hash_expr_list_dxlnode,
const CDXLTranslateContext *child_context,
diff --git a/src/include/gpopt/translate/CTranslatorQueryToDXL.h b/src/include/gpopt/translate/CTranslatorQueryToDXL.h
index 4a7405dee7..b9e02a9b97 100644
--- a/src/include/gpopt/translate/CTranslatorQueryToDXL.h
+++ b/src/include/gpopt/translate/CTranslatorQueryToDXL.h
@@ -147,6 +147,9 @@ private:
// node is found
static void CheckUnsupportedNodeTypes(Query *query);
+ // walker to check if SUBLINK node is present in the security quals
+ static BOOL CheckSublinkInSecurityQuals(Node *node, void *context);
+
// check for SIRV functions in the targetlist without a FROM clause and
// throw an exception when found
void CheckSirvFuncsWithoutFromClause(Query *query);
diff --git a/src/test/regress/expected/equivclass_optimizer.out b/src/test/regress/expected/equivclass_optimizer.out
index 903441b8a4..a10953c8d4 100644
--- a/src/test/regress/expected/equivclass_optimizer.out
+++ b/src/test/regress/expected/equivclass_optimizer.out
@@ -459,16 +459,16 @@ set session authorization regress_user_ectest;
explain (costs off)
select * from ec0 a, ec1 b
where a.ff = b.ff and a.ff = 43::bigint::int8alias1;
- QUERY PLAN
-----------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
- -> Index Scan using ec0_pkey on ec0 a
- Index Cond: (ff = '43'::int8alias1)
- -> Index Scan using ec1_pkey on ec1 b
- Index Cond: (ff = a.ff)
- Filter: ((f1 < '5'::int8alias1) AND (ff = '43'::int8alias1))
- Optimizer: Postgres query optimizer
+ Join Filter: true
+ -> Seq Scan on ec1
+ Filter: (f1 < '5'::int8alias1)
+ -> Index Scan using ec0_pkey on ec0
+ Index Cond: ((ff = ec1.ff) AND (ff = '43'::int8alias1))
+ Optimizer: GPORCA
(8 rows)
reset session authorization;
diff --git a/src/test/regress/expected/qp_rowsecurity.out b/src/test/regress/expected/qp_rowsecurity.out
new file mode 100644
index 0000000000..c809c76d32
--- /dev/null
+++ b/src/test/regress/expected/qp_rowsecurity.out
@@ -0,0 +1,986 @@
+--------------------------------------------------------------------------------
+-- Current implementation only supports SELECT and DELETE queries.
+-- Foreign Scan / Dynamic Foreign Scan with row level security is not supported.
+-- Any sort of index plans will not be generated by ORCA
+-- for a relation having RLS enabled.
+-- If the security quals contains sublinks then ORCA will fall back to planner.
+--------------------------------------------------------------------------------
+-- NOTE:
+-- The file rowsecurity.sql has a wider test coverage but the issue is most of
+-- the queries in that file are falling back to planner because of not supported
+-- features by ORCA such as non default collation, VIEW with WITH CHECK OPTION,
+-- Queries on coordinator-only tables, Query has row level security enabled and
+-- security quals contain sublinks etc. So rowsecurity.sql file is not providing
+-- much help in testing ORCA side changes.
+-- But on a high level some of the tests covered in rowsecurity.sql is
+ -- Table inheritance and RLS policy
+ -- There are tests related to partition relations but the test cases are
+ -- falling back due to various reasons like non default collation, VIEW with
+ -- WITH CHECK OPTION.
+ -- CTE with RLS
+ -- RLS with joins
+ -- View with WITH CHECK OPTION
+ -- Recursive Queries
+ -- Testing the output of queries by granting permissions to various roles
+ -- and groups and superuser database non-superuser with bypass privilege can
+ -- bypass RLS policy when disabled
+ --- RLS policy does not apply to table owner when RLS enabled.
+ -- RLS policy does not apply to table owner when RLS disabled.
+ -- only owner can change policies
+ -- FORCE ROW LEVEL SECURITY applies RLS to owners too
+ -- PREPARE statements
+ -- Duplicate policy names
+ -- Multiple policies on a table
+ -- INSERT in a table with no RLS by selecting from a relation having RLS
+ -- Default Deny policy
+ -- UPDATE/UPDATE with FROM clause/INSERT with Row-level security etc etc.
+-- So the tests that have been covered in qp_rowsecurity are mostly similar to
+-- that in rowsecurity.sql but since they are not falling back to planner, able
+-- to verify the ORCA side changes.
+--------------------------------------------------------------------------------
+----- SELECT queries on relation having row level security enabled -------------
+--------------------------------------------------------------------------------
+set optimizer_trace_fallback to on;
+create user new_user;
+create table foo_rls ( a int, b int, c int) distributed by (a);
+create table bar_rls ( p int, q int) distributed by (p);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+insert into foo_rls values (NULL,50,500);;
+insert into foo_rls values (NULL,60,NULL);
+insert into foo_rls values (NULL,70,NULL);
+insert into foo_rls values (NULL,NULL,600);
+insert into foo_rls values (NULL,NULL,700);
+vacuum analyze foo_rls;
+grant select on foo_rls to new_user;
+grant select on bar_rls to new_user;
+alter table foo_rls enable row level security;
+CREATE OR REPLACE FUNCTION leak_data(int) RETURNS boolean AS $$
+BEGIN
+ RAISE NOTICE 'Value of column is: %',$1;
+RETURN true;
+END;
+$$ LANGUAGE plpgsql;
+-- Permissive policy
+create policy p1 on foo_rls using (a * 10 = b and c > 300);
+set session authorization new_user;
+-- Query plan will have the filter defined in the policy [(a * 10) = b) AND (c > 300)]
+-- before query filter [leak_data(a)]
+explain (costs off ) select * from foo_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
+ Optimizer: Postgres-based planner
+(4 rows)
+
+select * from foo_rls where leak_data(a);
+NOTICE: Value of column is: 5
+NOTICE: Value of column is: 4
+ a | b | c
+---+----+-----
+ 4 | 40 | 400
+ 5 | 50 | 500
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+-- All permissive policies which are applicable to a given query
+-- will be combined together using the Boolean “OR” operator
+create policy p1 on foo_rls as permissive for select using (a * 10 >= 30 );
+create policy p2 on foo_rls as permissive for select
+using (LEAST(a,b) >= 2);
+set session authorization new_user;
+-- The filter defined in the two permissive policies will be OR'ed together
+explain (costs off )select * from foo_rls where leak_data(c);
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ Optimizer: Postgres-based planner
+(4 rows)
+
+select * from foo_rls where leak_data(c);
+NOTICE: Value of column is: 200
+NOTICE: Value of column is: 300
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: 400
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: <NULL>
+NOTICE: Value of column is: <NULL>
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 2 | 20 | 200
+ 3 | 30 | 300
+ 4 | 40 | 400
+ | 50 | 500
+ | 60 |
+ | 70 |
+(7 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+-- Restrictive policies
+-- There needs to be at least one permissive policy to grant access to records
+create policy p1 on foo_rls as restrictive for select using (a > 3);
+create policy p2 on foo_rls as restrictive for select using (b > 35);
+set session authorization new_user;
+-- No permissive policies defined on the relation, so no records will be
+-- returned
+explain (costs off ) select * from foo_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------
+ Result
+ One-Time Filter: false
+ Optimizer: Postgres-based planner
+(3 rows)
+
+reset session authorization ;
+create policy p3 on foo_rls as permissive for select using (c % 100 = 0);
+set session authorization new_user;
+-- Now after creating a permissive policy, the query will return records and the
+-- restrictive policies will be AND'ed with permissive policies
+explain (costs off ) select * from foo_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ Optimizer: Postgres-based planner
+(4 rows)
+
+select * from foo_rls where leak_data(a);
+NOTICE: Value of column is: 4
+NOTICE: Value of column is: 5
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 4 | 40 | 400
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+drop policy p3 on foo_rls;
+-- The RTE of the relation containing security quals is present inside a
+-- RTE_SUBQUERY rtekind
+create policy p1 on foo_rls as permissive for select using (b + 1 = 4 );
+create policy p2 on foo_rls as permissive for select using (b is distinct
+from c);
+set session authorization new_user;
+explain (costs off ) select * from (select * from foo_rls) t1, bar_rls where
+t1.a=bar_rls.p and bar_rls.q is null and leak_data(c);
+ QUERY PLAN
+------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (bar_rls.p = foo_rls.a)
+ -> Seq Scan on bar_rls
+ Filter: (q IS NULL)
+ -> Hash
+ -> Seq Scan on foo_rls
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ Optimizer: Postgres-based planner
+(9 rows)
+
+-- The RTE of the relation containing security quals is present inside a
+-- SUBLINK node
+explain (costs off ) select * from bar_rls where bar_rls.p in (select a
+from foo_rls where abs(a) >= 10 and leak_data(c)) and bar_rls.q is not null;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Semi Join
+ Hash Cond: (bar_rls.p = foo_rls.a)
+ -> Seq Scan on bar_rls
+ Filter: (q IS NOT NULL)
+ -> Hash
+ -> Seq Scan on foo_rls
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
+ Optimizer: Postgres-based planner
+(9 rows)
+
+-- The RTE of the relation containing security quals is present inside a CTE
+explain (costs off ) with cte as (select * from foo_rls where
+a > LEAST(a,b)) select * from cte left join bar_rls on
+cte.a=bar_rls.p and q = 10 and leak_data(cte.a);
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Right Join
+ Hash Cond: (bar_rls.p = foo_rls.a)
+ Join Filter: leak_data(foo_rls.a)
+ -> Seq Scan on bar_rls
+ Filter: (q = 10)
+ -> Hash
+ -> Seq Scan on foo_rls
+ Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
+ Optimizer: Postgres-based planner
+(10 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+-- ORCA will fallback to planner if SUBLINK is present inside a security qual
+create policy p1 on foo_rls as permissive for select using (a in (select p
+from bar_rls));
+set session authorization new_user;
+explain (costs off ) select * from foo_rls;
+ QUERY PLAN
+-----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: (hashed SubPlan 1)
+ SubPlan 1
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on bar_rls
+ Optimizer: Postgres-based planner
+(7 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+-- ORCA will not generate any index plans when row level security is enabled
+-- for a relation
+create policy p1 on foo_rls as permissive for select using (b = 10);
+create index btindex on foo_rls using btree(a);
+-- Index Scan is generated by ORCA when the owner of the table runs the query
+set enable_seqscan to off;
+explain (costs off) select * from foo_rls where a is null and b = 10;
+ QUERY PLAN
+-------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Index Scan using btindex on foo_rls
+ Index Cond: (a IS NULL)
+ Filter: (b = 10)
+ Optimizer: Postgres-based planner
+(5 rows)
+
+-- Index Scan is not generated by ORCA when RLS enabled by ORCA
+set session authorization new_user;
+explain (costs off) select * from foo_rls where a is null;
+ QUERY PLAN
+-------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Index Scan using btindex on foo_rls
+ Index Cond: (a IS NULL)
+ Filter: (b = 10)
+ Optimizer: Postgres-based planner
+(5 rows)
+
+reset session authorization;
+-- Index Only Scan is generated by ORCA when the owner of the table runs the query
+set optimizer_enable_indexscan to off;
+explain (costs off) select a from foo_rls where a is null;
+ QUERY PLAN
+------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Index Only Scan using btindex on foo_rls
+ Index Cond: (a IS NULL)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+-- Index Only Scan is not generated by ORCA when RLS enabled
+set session authorization new_user;
+explain (costs off) select a from foo_rls where a is null;
+ QUERY PLAN
+-------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Index Scan using btindex on foo_rls
+ Index Cond: (a IS NULL)
+ Filter: (b = 10)
+ Optimizer: Postgres-based planner
+(5 rows)
+
+reset session authorization;
+set optimizer_enable_indexscan to on;
+reset enable_seqscan;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+drop table bar_rls cascade;
+--------------------------------------------------------------------------------
+----------- SELECT queries on partitioned tables with RLS enabled --------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20), default partition other_part);
+create table bar_part_rls ( p int, q int) distributed by (p) partition by range(q)
+(start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,5)i;
+insert into foo_part_rls values (NULL,50,500);;
+insert into foo_part_rls values (NULL,60,NULL);
+insert into foo_part_rls values (NULL,70,NULL);
+insert into foo_part_rls values (NULL,NULL,600);
+insert into foo_part_rls values (NULL,NULL,700);
+analyze foo_part_rls;
+grant select on foo_part_rls to new_user;
+grant select on bar_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+-- Permissive policy
+create policy p1 on foo_part_rls using (a * 10 = b and c > 300);
+set session authorization new_user;
+-- Query plan will have the filter defined in the policy [(a * 10) = b) AND (c > 300)]
+-- before query filter [leak_data(a)]
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_6
+ Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
+ Optimizer: Postgres-based planner
+(15 rows)
+
+select * from foo_part_rls where leak_data(a);
+NOTICE: Value of column is: 4
+NOTICE: Value of column is: 5
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 4 | 40 | 400
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+-- All permissive policies which are applicable to a given query
+-- will be combined together using the Boolean “OR” operator
+create policy p1 on foo_part_rls as permissive for select using (a * 10 >= 30 );
+create policy p2 on foo_part_rls as permissive for select
+using (LEAST(a,b) >= 2);
+set session authorization new_user;
+-- The filter defined in the two permissive policies will be OR'ed together
+explain (costs off )select * from foo_part_rls where leak_data(c);
+ QUERY PLAN
+-----------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_6
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ Optimizer: Postgres-based planner
+(15 rows)
+
+select * from foo_part_rls where leak_data(c);
+NOTICE: Value of column is: 200
+NOTICE: Value of column is: 300
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: 400
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: <NULL>
+NOTICE: Value of column is: <NULL>
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 2 | 20 | 200
+ 3 | 30 | 300
+ 4 | 40 | 400
+ | 50 | 500
+ | 60 |
+ | 70 |
+(7 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+-- Restrictive policies
+-- There needs to be at least one permissive policy to grant access to records
+create policy p1 on foo_part_rls as restrictive for select using (a > 3);
+create policy p2 on foo_part_rls as restrictive for select using (b > 35);
+set session authorization new_user;
+-- No permissive policies defined on the relation, so no records will be
+-- returned
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------
+ Result
+ One-Time Filter: false
+ Optimizer: Postgres-based planner
+(3 rows)
+
+reset session authorization ;
+create policy p3 on foo_part_rls as permissive for select using (c % 100 = 0);
+set session authorization new_user;
+-- Now after creating a permissive policy, the query will return records and the
+-- restrictive policies will be AND'ed with permissive policies
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_6
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ Optimizer: Postgres-based planner
+(13 rows)
+
+select * from foo_part_rls where leak_data(a);
+NOTICE: Value of column is: 4
+NOTICE: Value of column is: 5
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 4 | 40 | 400
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+drop policy p3 on foo_part_rls;
+-- The RTE of the relation containing security quals is present inside a
+-- RTE_SUBQUERY rtekind
+create policy p1 on foo_part_rls as permissive for select using (b + 1 = 4 );
+create policy p2 on foo_part_rls as permissive for select using (b is distinct
+from c);
+set session authorization new_user;
+explain (costs off ) select * from (select * from foo_part_rls) t1, bar_part_rls
+where t1.a=bar_part_rls.p and bar_part_rls.q is not null and leak_data(c);
+ QUERY PLAN
+------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (bar_part_rls_1_prt_1.p = foo_part_rls_1_prt_2.a)
+ -> Append
+ -> Seq Scan on bar_part_rls_1_prt_1
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_2
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_3
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_4
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_5
+ Filter: (q IS NOT NULL)
+ -> Hash
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_6
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ Optimizer: Postgres-based planner
+(29 rows)
+
+-- The RTE of the relation containing security quals is present inside a
+-- SUBLINK node
+explain (costs off ) select * from bar_part_rls where bar_part_rls.p in
+(select a from foo_part_rls where abs(a) >= 10 and leak_data(c)) and
+bar_part_rls.q is not null;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Semi Join
+ Hash Cond: (bar_part_rls_1_prt_1.p = foo_part_rls_1_prt_2.a)
+ -> Append
+ -> Seq Scan on bar_part_rls_1_prt_1
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_2
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_3
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_4
+ Filter: (q IS NOT NULL)
+ -> Seq Scan on bar_part_rls_1_prt_5
+ Filter: (q IS NOT NULL)
+ -> Hash
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_6
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
+ Optimizer: Postgres-based planner
+(29 rows)
+
+-- The RTE of the relation containing security quals is present inside a CTE
+explain (costs off ) with cte as (select * from foo_part_rls where
+a > LEAST(a,b)) select * from cte left join bar_part_rls on
+cte.a=bar_part_rls.p and q = 10 and leak_data(cte.a);
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Right Join
+ Hash Cond: (bar_part_rls_1_prt_1.p = foo_part_rls_1_prt_2.a)
+ Join Filter: leak_data(foo_part_rls_1_prt_2.a)
+ -> Seq Scan on bar_part_rls_1_prt_1
+ Filter: (q = 10)
+ -> Hash
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
+ -> Seq Scan on foo_part_rls_1_prt_6
+ Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
+ Optimizer: Postgres-based planner
+(21 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+-- ORCA will fallback to planner if SUBLINK is present inside a security qual
+create policy p1 on foo_part_rls as permissive for select using (a in
+(select p from bar_part_rls));
+set session authorization new_user;
+explain (costs off ) select * from foo_part_rls where foo_part_rls.b <15;
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: ((hashed SubPlan 1 (copy 2)) AND (b < 15))
+ SubPlan 1 (copy 2)
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Append
+ -> Seq Scan on bar_part_rls_1_prt_1
+ -> Seq Scan on bar_part_rls_1_prt_2
+ -> Seq Scan on bar_part_rls_1_prt_3
+ -> Seq Scan on bar_part_rls_1_prt_4
+ -> Seq Scan on bar_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: ((hashed SubPlan 1 (copy 3)) AND (b < 15))
+ SubPlan 1 (copy 3)
+ -> Broadcast Motion 3:3 (slice3; segments: 3)
+ -> Append
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1_prt_1_1
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_1_prt_2_1
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_1_prt_3_1
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_1_prt_4_1
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_1_prt_5_1
+ Optimizer: Postgres-based planner
+(23 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+-- ORCA will not generate any index plans when row level security is enabled
+-- for a relation
+create policy p1 on foo_part_rls as permissive for select using (b = 10);
+create index btindex on foo_part_rls using btree(a);
+-- Dynamic Index Scan is generated by ORCA when the owner of the table runs
+-- the query
+set enable_seqscan to off;
+explain (costs off) select * from foo_part_rls where a is null;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Append
+ -> Index Scan using foo_part_rls_1_prt_2_a_idx on foo_part_rls_1_prt_2
+ Index Cond: (a IS NULL)
+ -> Index Scan using foo_part_rls_1_prt_3_a_idx on foo_part_rls_1_prt_3
+ Index Cond: (a IS NULL)
+ -> Index Scan using foo_part_rls_1_prt_4_a_idx on foo_part_rls_1_prt_4
+ Index Cond: (a IS NULL)
+ -> Index Scan using foo_part_rls_1_prt_5_a_idx on foo_part_rls_1_prt_5
+ Index Cond: (a IS NULL)
+ -> Index Scan using foo_part_rls_1_prt_6_a_idx on foo_part_rls_1_prt_6
+ Index Cond: (a IS NULL)
+ -> Index Scan using foo_part_rls_1_prt_other_part_a_idx on foo_part_rls_1_prt_other_part
+ Index Cond: (a IS NULL)
+ Optimizer: Postgres-based planner
+(15 rows)
+
+-- Dynamic Index Scan is not generated by ORCA when RLS is enabled
+set session authorization new_user;
+explain (costs off) select * from foo_part_rls where a is null;
+ QUERY PLAN
+---------------------------------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Index Scan using foo_part_rls_1_prt_2_a_idx on foo_part_rls_1_prt_2
+ Index Cond: (a IS NULL)
+ Filter: (b = 10)
+ Optimizer: Postgres-based planner
+(5 rows)
+
+reset session authorization;
+reset enable_seqscan;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+drop table bar_part_rls cascade;
+drop function leak_data(int);
+--------------------------------------------------------------------------------
+----------------- Creating policies on leaf partitions -------------------------
+--------------------------------------------------------------------------------
+create table rootpart (a int, b int) distributed by (a) partition by range(a)
+(start(0) end(10) every(5));
+insert into rootpart select i,i from generate_series(0,9)i;
+-- select permission is only for root partition and not for child partition
+grant select on rootpart to new_user;
+alter table rootpart_1_prt_2 enable row level security;
+create policy p1 on rootpart_1_prt_2 using (a>=7);
+set session authorization new_user;
+explain (costs off) select * from rootpart;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on rootpart_1_prt_1
+ -> Seq Scan on rootpart_1_prt_2
+ Optimizer: Postgres-based planner
+(5 rows)
+
+-- Issue #16961
+-- ORCA and planner should not generate a plan and show error permission denied
+-- for leaf partition
+explain (costs off) select * from rootpart_1_prt_2;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on rootpart_1_prt_2
+ Filter: (a >= 7)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+reset session authorization;
+drop policy p1 on rootpart_1_prt_2;
+drop table rootpart;
+--------------------------------------------------------------------------------
+----------------- Grant SELECT to only a leaf partition ------------------------
+--------------------------------------------------------------------------------
+create table rootpart (a int, b int) distributed by (a) partition by range(a)
+(start(0) end(10) every(5));
+insert into rootpart select i,i from generate_series(0,9)i;
+grant select on rootpart_1_prt_2 to new_user;
+alter table rootpart_1_prt_2 enable row level security;
+create policy p1 on rootpart_1_prt_2 using (a>=7);
+set session authorization new_user;
+-- Since the SELECT permission is only for a leaf partition [rootpart_1_prt_2],
+-- querying the root will error out
+explain (costs off) select * from rootpart;
+ERROR: permission denied for table rootpart
+explain (costs off) select * from rootpart_1_prt_1;
+ERROR: permission denied for table rootpart_1_prt_1
+-- Below query will work fine as the user has SELECT permission on this root
+-- partition
+explain (costs off) select * from rootpart_1_prt_2;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on rootpart_1_prt_2
+ Filter: (a >= 7)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+reset session authorization;
+drop policy p1 on rootpart_1_prt_2;
+drop table rootpart;
+--------------------------------------------------------------------------------
+-------------------------- Multilevel Partitions -------------------------------
+--------------------------------------------------------------------------------
+create table rootTab(a int) distributed by (a) partition by range(a);
+create table roottabmid1(a int) distributed by (a) partition by range(a);
+create table roottableaf1(a int) distributed by (a);
+create table roottableaf2(a int) distributed by (a);
+alter table roottab attach partition roottabmid1 for values from (0) to (10);
+alter table roottabmid1 attach partition roottableaf1 for values from (0) to (5);
+alter table roottabmid1 attach partition roottableaf2 for values from (5) to (10);
+insert into roottab select i from generate_series(0,9)i;
+grant select on roottab to new_user;
+alter table roottableaf2 enable row level security;
+create policy p1 on roottableaf2 using (a>=7);
+set session authorization new_user;
+-- Querying the root will fallback to planner as ORCA doesn't supports
+-- Multi-level partitioned tables
+explain (costs off) select * from roottab;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on roottableaf1
+ -> Seq Scan on roottableaf2
+ Optimizer: Postgres-based planner
+(5 rows)
+
+explain (costs off) select * from roottabmid1;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on roottableaf1
+ -> Seq Scan on roottableaf2
+ Optimizer: Postgres-based planner
+(5 rows)
+
+explain (costs off) select * from roottableaf1;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on roottableaf1
+ Optimizer: Postgres-based planner
+(3 rows)
+
+explain (costs off) select * from roottableaf2;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on roottableaf2
+ Filter: (a >= 7)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+reset session authorization;
+drop policy p1 on roottableaf2;
+drop table roottab;
+--------------------------------------------------------------------------------
+------------------- Inherited Tables with RLS enabled --------------------------
+--------------------------------------------------------------------------------
+create table parent (a int, b int) distributed by (a);
+create table child1 (c int) inherits (parent);
+NOTICE: table has parent, setting distribution columns to match parent table
+create table child2 (d int) inherits (parent);
+NOTICE: table has parent, setting distribution columns to match parent table
+-- SELECT permission on parent
+grant select on parent to new_user;
+alter table parent enable row level security;
+create policy p1 on parent using (a>=7);
+set session authorization new_user;
+-- Querying the parent will fallback to planner as ORCA doesn't supports
+-- Inherited tables
+explain (costs off) select * from parent;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on parent
+ Filter: (a >= 7)
+ -> Seq Scan on child1
+ Filter: (a >= 7)
+ -> Seq Scan on child2
+ Filter: (a >= 7)
+ Optimizer: Postgres-based planner
+(9 rows)
+
+-- Below queries will error out as no SELECT permission for user on child
+-- relations
+explain (costs off) select * from child1;
+ERROR: permission denied for table child1
+explain (costs off) select * from child2;
+ERROR: permission denied for table child2
+reset session authorization;
+grant select on child1 to new_user;
+set session authorization new_user;
+-- After granting SELECT permission the below query will work
+explain (costs off) select * from child1;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on child1
+ Optimizer: Postgres-based planner
+(3 rows)
+
+reset session authorization;
+drop policy p1 on parent;
+drop table parent cascade;
+NOTICE: drop cascades to 2 other objects
+DETAIL: drop cascades to table child1
+drop cascades to table child2
+--------------------------------------------------------------------------------
+----- INSERT queries on relation having row level security enabled -------------
+------ ORCA will fallback to planner for INSERT with RLS anabled ---------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant insert on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=3);
+set session authorization new_user;
+explain (costs off) insert into foo_rls values (1,1,1);
+ QUERY PLAN
+-----------------------------------
+ Insert on foo_rls
+ -> Result
+ Optimizer: Postgres-based planner
+(3 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+--------------------------------------------------------------------------------
+--------- INSERT queries on partitioned relation having RLS enabled ------------
+--------- ORCA will fallback to planner for INSERT with RLS anabled ------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant insert on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=500);
+set session authorization new_user;
+explain (costs off) insert into foo_part_rls values (-10,-10,-10);
+ QUERY PLAN
+-----------------------------------
+ Insert on foo_part_rls
+ -> Result
+ Optimizer: Postgres-based planner
+(3 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+--------------------------------------------------------------------------------
+----- UPDATE queries on relation having row level security enabled -------------
+------ ORCA will fallback to planner for UPDATE with RLS anabled ---------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant select,update on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=3);
+set session authorization new_user;
+explain (costs off) update foo_rls set a=-10 where c=4;
+ QUERY PLAN
+---------------------------------------------------------------
+ Update on foo_rls
+ -> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
+ -> Split
+ -> Seq Scan on foo_rls
+ Filter: ((c >= 3) AND (c = 4))
+ Optimizer: Postgres-based planner
+(6 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+--------------------------------------------------------------------------------
+--------- UPDATE queries on partitioned relation having RLS enabled ------------
+--------- ORCA will fallback to planner for UPDATE with RLS anabled ------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant select,update on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=500);
+set session authorization new_user;
+explain (costs off) update foo_part_rls set a=10 where foo_part_rls.c = 800;
+ QUERY PLAN
+---------------------------------------------------------------
+ Update on foo_part_rls
+ Update on foo_part_rls_1_prt_1
+ Update on foo_part_rls_1_prt_2
+ Update on foo_part_rls_1_prt_3
+ Update on foo_part_rls_1_prt_4
+ Update on foo_part_rls_1_prt_5
+ -> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_1
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice2; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice3; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice4; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice5; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: ((c >= 500) AND (c = 800))
+ Optimizer: Postgres-based planner
+(27 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+--------------------------------------------------------------------------------
+----- DELETE queries on relation having row level security enabled -------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant select,delete on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=300);
+set session authorization new_user;
+explain (costs off) delete from foo_rls where foo_rls.b=30;
+ QUERY PLAN
+-------------------------------------------
+ Delete on foo_rls
+ -> Seq Scan on foo_rls
+ Filter: ((c >= 300) AND (b = 30))
+ Optimizer: Postgres-based planner
+(4 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+--------------------------------------------------------------------------------
+----- DELETE queries on on partitioned relation having RLS enabled -------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant select,delete on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=300);
+set session authorization new_user;
+explain (costs off) delete from foo_part_rls where foo_part_rls.b=30;
+ QUERY PLAN
+-------------------------------------------
+ Delete on foo_part_rls
+ Delete on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: ((c >= 300) AND (b = 30))
+ Optimizer: Postgres-based planner
+(5 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+drop user new_user;
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/expected/qp_rowsecurity_optimizer.out b/src/test/regress/expected/qp_rowsecurity_optimizer.out
new file mode 100644
index 0000000000..d091049e40
--- /dev/null
+++ b/src/test/regress/expected/qp_rowsecurity_optimizer.out
@@ -0,0 +1,920 @@
+--------------------------------------------------------------------------------
+-- Current implementation only supports SELECT and DELETE queries.
+-- Foreign Scan / Dynamic Foreign Scan with row level security is not supported.
+-- Any sort of index plans will not be generated by ORCA
+-- for a relation having RLS enabled.
+-- If the security quals contains sublinks then ORCA will fall back to planner.
+--------------------------------------------------------------------------------
+-- NOTE:
+-- The file rowsecurity.sql has a wider test coverage but the issue is most of
+-- the queries in that file are falling back to planner because of not supported
+-- features by ORCA such as non default collation, VIEW with WITH CHECK OPTION,
+-- Queries on coordinator-only tables, Query has row level security enabled and
+-- security quals contain sublinks etc. So rowsecurity.sql file is not providing
+-- much help in testing ORCA side changes.
+-- But on a high level some of the tests covered in rowsecurity.sql is
+ -- Table inheritance and RLS policy
+ -- There are tests related to partition relations but the test cases are
+ -- falling back due to various reasons like non default collation, VIEW with
+ -- WITH CHECK OPTION.
+ -- CTE with RLS
+ -- RLS with joins
+ -- View with WITH CHECK OPTION
+ -- Recursive Queries
+ -- Testing the output of queries by granting permissions to various roles
+ -- and groups and superuser database non-superuser with bypass privilege can
+ -- bypass RLS policy when disabled
+ --- RLS policy does not apply to table owner when RLS enabled.
+ -- RLS policy does not apply to table owner when RLS disabled.
+ -- only owner can change policies
+ -- FORCE ROW LEVEL SECURITY applies RLS to owners too
+ -- PREPARE statements
+ -- Duplicate policy names
+ -- Multiple policies on a table
+ -- INSERT in a table with no RLS by selecting from a relation having RLS
+ -- Default Deny policy
+ -- UPDATE/UPDATE with FROM clause/INSERT with Row-level security etc etc.
+-- So the tests that have been covered in qp_rowsecurity are mostly similar to
+-- that in rowsecurity.sql but since they are not falling back to planner, able
+-- to verify the ORCA side changes.
+--------------------------------------------------------------------------------
+----- SELECT queries on relation having row level security enabled -------------
+--------------------------------------------------------------------------------
+set optimizer_trace_fallback to on;
+create user new_user;
+create table foo_rls ( a int, b int, c int) distributed by (a);
+create table bar_rls ( p int, q int) distributed by (p);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+insert into foo_rls values (NULL,50,500);;
+insert into foo_rls values (NULL,60,NULL);
+insert into foo_rls values (NULL,70,NULL);
+insert into foo_rls values (NULL,NULL,600);
+insert into foo_rls values (NULL,NULL,700);
+vacuum analyze foo_rls;
+grant select on foo_rls to new_user;
+grant select on bar_rls to new_user;
+alter table foo_rls enable row level security;
+CREATE OR REPLACE FUNCTION leak_data(int) RETURNS boolean AS $$
+BEGIN
+ RAISE NOTICE 'Value of column is: %',$1;
+RETURN true;
+END;
+$$ LANGUAGE plpgsql;
+-- Permissive policy
+create policy p1 on foo_rls using (a * 10 = b and c > 300);
+set session authorization new_user;
+-- Query plan will have the filter defined in the policy [(a * 10) = b) AND (c > 300)]
+-- before query filter [leak_data(a)]
+explain (costs off ) select * from foo_rls where leak_data(a);
+ QUERY PLAN
+-------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: ((((a * 10) = b) AND (c > 300)) AND leak_data(a))
+ Optimizer: GPORCA
+(4 rows)
+
+select * from foo_rls where leak_data(a);
+NOTICE: Value of column is: 4
+NOTICE: Value of column is: 5
+ a | b | c
+---+----+-----
+ 4 | 40 | 400
+ 5 | 50 | 500
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+-- All permissive policies which are applicable to a given query
+-- will be combined together using the Boolean “OR” operator
+create policy p1 on foo_rls as permissive for select using (a * 10 >= 30 );
+create policy p2 on foo_rls as permissive for select
+using (LEAST(a,b) >= 2);
+set session authorization new_user;
+-- The filter defined in the two permissive policies will be OR'ed together
+explain (costs off )select * from foo_rls where leak_data(c);
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ Optimizer: GPORCA
+(4 rows)
+
+select * from foo_rls where leak_data(c);
+NOTICE: Value of column is: 200
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: 300
+NOTICE: Value of column is: 400
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: <NULL>
+NOTICE: Value of column is: <NULL>
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 2 | 20 | 200
+ 3 | 30 | 300
+ 4 | 40 | 400
+ | 50 | 500
+ | 60 |
+ | 70 |
+(7 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+-- Restrictive policies
+-- There needs to be at least one permissive policy to grant access to records
+create policy p1 on foo_rls as restrictive for select using (a > 3);
+create policy p2 on foo_rls as restrictive for select using (b > 35);
+set session authorization new_user;
+-- No permissive policies defined on the relation, so no records will be
+-- returned
+explain (costs off ) select * from foo_rls where leak_data(a);
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: (false AND leak_data(a))
+ Optimizer: GPORCA
+(4 rows)
+
+reset session authorization ;
+create policy p3 on foo_rls as permissive for select using (c % 100 = 0);
+set session authorization new_user;
+-- Now after creating a permissive policy, the query will return records and the
+-- restrictive policies will be AND'ed with permissive policies
+explain (costs off ) select * from foo_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ Optimizer: GPORCA
+(4 rows)
+
+select * from foo_rls where leak_data(a);
+NOTICE: Value of column is: 4
+NOTICE: Value of column is: 5
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 4 | 40 | 400
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+drop policy p3 on foo_rls;
+-- The RTE of the relation containing security quals is present inside a
+-- RTE_SUBQUERY rtekind
+create policy p1 on foo_rls as permissive for select using (b + 1 = 4 );
+create policy p2 on foo_rls as permissive for select using (b is distinct
+from c);
+set session authorization new_user;
+explain (costs off ) select * from (select * from foo_rls) t1, bar_rls where
+t1.a=bar_rls.p and bar_rls.q is null and leak_data(c);
+ QUERY PLAN
+------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (foo_rls.a = bar_rls.p)
+ -> Seq Scan on foo_rls
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ -> Hash
+ -> Seq Scan on bar_rls
+ Filter: (q IS NULL)
+ Optimizer: GPORCA
+(9 rows)
+
+-- The RTE of the relation containing security quals is present inside a
+-- SUBLINK node
+explain (costs off ) select * from bar_rls where bar_rls.p in (select a
+from foo_rls where abs(a) >= 10 and leak_data(c)) and bar_rls.q is not null;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Semi Join
+ Hash Cond: (bar_rls.p = foo_rls.a)
+ -> Seq Scan on bar_rls
+ Filter: (NOT (q IS NULL))
+ -> Hash
+ -> Seq Scan on foo_rls
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND ((abs(a) >= 10) AND leak_data(c)))
+ Optimizer: GPORCA
+(9 rows)
+
+-- The RTE of the relation containing security quals is present inside a CTE
+explain (costs off ) with cte as (select * from foo_rls where
+a > LEAST(a,b)) select * from cte left join bar_rls on
+cte.a=bar_rls.p and q = 10 and leak_data(cte.a);
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Left Join
+ Hash Cond: (foo_rls.a = bar_rls.p)
+ Join Filter: leak_data(foo_rls.a)
+ -> Seq Scan on foo_rls
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (a > LEAST(a, b)))
+ -> Hash
+ -> Seq Scan on bar_rls
+ Filter: (q = 10)
+ Optimizer: GPORCA
+(10 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+-- ORCA will fallback to planner if SUBLINK is present inside a security qual
+create policy p1 on foo_rls as permissive for select using (a in (select p
+from bar_rls));
+set session authorization new_user;
+explain (costs off ) select * from foo_rls;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
+ QUERY PLAN
+-----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on foo_rls
+ Filter: (hashed SubPlan 1)
+ SubPlan 1
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on bar_rls
+ Optimizer: Postgres-based planner
+(7 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+-- ORCA will not generate any index plans when row level security is enabled
+-- for a relation
+create policy p1 on foo_rls as permissive for select using (b = 10);
+create index btindex on foo_rls using btree(a);
+-- Index Scan is generated by ORCA when the owner of the table runs the query
+set enable_seqscan to off;
+explain (costs off) select * from foo_rls where a is null and b = 10;
+ QUERY PLAN
+-------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Index Scan using btindex on foo_rls
+ Index Cond: (a IS NULL)
+ Filter: (b = 10)
+ Optimizer: GPORCA
+(5 rows)
+
+-- Index Scan is not generated by ORCA when RLS enabled by ORCA
+set session authorization new_user;
+explain (costs off) select * from foo_rls where a is null;
+ QUERY PLAN
+--------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Seq Scan on foo_rls
+ Filter: ((b = 10) AND (a IS NULL))
+ Optimizer: GPORCA
+(4 rows)
+
+reset session authorization;
+-- Index Only Scan is generated by ORCA when the owner of the table runs the query
+set optimizer_enable_indexscan to off;
+explain (costs off) select a from foo_rls where a is null;
+ QUERY PLAN
+------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Index Only Scan using btindex on foo_rls
+ Index Cond: (a IS NULL)
+ Optimizer: GPORCA
+(4 rows)
+
+-- Index Only Scan is not generated by ORCA when RLS enabled
+set session authorization new_user;
+explain (costs off) select a from foo_rls where a is null;
+ QUERY PLAN
+--------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Seq Scan on foo_rls
+ Filter: ((b = 10) AND (a IS NULL))
+ Optimizer: GPORCA
+(4 rows)
+
+reset session authorization;
+set optimizer_enable_indexscan to on;
+reset enable_seqscan;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+drop table bar_rls cascade;
+--------------------------------------------------------------------------------
+----------- SELECT queries on partitioned tables with RLS enabled --------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20), default partition other_part);
+create table bar_part_rls ( p int, q int) distributed by (p) partition by range(q)
+(start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,5)i;
+insert into foo_part_rls values (NULL,50,500);;
+insert into foo_part_rls values (NULL,60,NULL);
+insert into foo_part_rls values (NULL,70,NULL);
+insert into foo_part_rls values (NULL,NULL,600);
+insert into foo_part_rls values (NULL,NULL,700);
+analyze foo_part_rls;
+grant select on foo_part_rls to new_user;
+grant select on bar_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+-- Permissive policy
+create policy p1 on foo_part_rls using (a * 10 = b and c > 300);
+set session authorization new_user;
+-- Query plan will have the filter defined in the policy [(a * 10) = b) AND (c > 300)]
+-- before query filter [leak_data(a)]
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+ QUERY PLAN
+-------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: ((((a * 10) = b) AND (c > 300)) AND leak_data(a))
+ Optimizer: GPORCA
+(5 rows)
+
+select * from foo_part_rls where leak_data(a);
+NOTICE: Value of column is: 4
+NOTICE: Value of column is: 5
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 4 | 40 | 400
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+-- All permissive policies which are applicable to a given query
+-- will be combined together using the Boolean “OR” operator
+create policy p1 on foo_part_rls as permissive for select using (a * 10 >= 30 );
+create policy p2 on foo_part_rls as permissive for select
+using (LEAST(a,b) >= 2);
+set session authorization new_user;
+-- The filter defined in the two permissive policies will be OR'ed together
+explain (costs off )select * from foo_part_rls where leak_data(c);
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
+ Optimizer: GPORCA
+(5 rows)
+
+select * from foo_part_rls where leak_data(c);
+NOTICE: Value of column is: 200
+NOTICE: Value of column is: 300
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: 400
+NOTICE: Value of column is: 500
+NOTICE: Value of column is: <NULL>
+NOTICE: Value of column is: <NULL>
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 2 | 20 | 200
+ 3 | 30 | 300
+ 4 | 40 | 400
+ | 50 | 500
+ | 60 |
+ | 70 |
+(7 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+-- Restrictive policies
+-- There needs to be at least one permissive policy to grant access to records
+create policy p1 on foo_part_rls as restrictive for select using (a > 3);
+create policy p2 on foo_part_rls as restrictive for select using (b > 35);
+set session authorization new_user;
+-- No permissive policies defined on the relation, so no records will be
+-- returned
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: (false AND leak_data(a))
+ Optimizer: GPORCA
+(5 rows)
+
+reset session authorization ;
+create policy p3 on foo_part_rls as permissive for select using (c % 100 = 0);
+set session authorization new_user;
+-- Now after creating a permissive policy, the query will return records and the
+-- restrictive policies will be AND'ed with permissive policies
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
+ Optimizer: GPORCA
+(5 rows)
+
+select * from foo_part_rls where leak_data(a);
+NOTICE: Value of column is: 4
+NOTICE: Value of column is: 5
+ a | b | c
+---+----+-----
+ 5 | 50 | 500
+ 4 | 40 | 400
+(2 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+drop policy p3 on foo_part_rls;
+-- The RTE of the relation containing security quals is present inside a
+-- RTE_SUBQUERY rtekind
+create policy p1 on foo_part_rls as permissive for select using (b + 1 = 4 );
+create policy p2 on foo_part_rls as permissive for select using (b is distinct
+from c);
+set session authorization new_user;
+explain (costs off ) select * from (select * from foo_part_rls) t1, bar_part_rls
+where t1.a=bar_part_rls.p and bar_part_rls.q is not null and leak_data(c);
+ QUERY PLAN
+------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (foo_part_rls.a = bar_part_rls.p)
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
+ -> Hash
+ -> Dynamic Seq Scan on bar_part_rls
+ Number of partitions to scan: 5 (out of 5)
+ Filter: (NOT (q IS NULL))
+ Optimizer: GPORCA
+(11 rows)
+
+-- The RTE of the relation containing security quals is present inside a
+-- SUBLINK node
+explain (costs off ) select * from bar_part_rls where bar_part_rls.p in
+(select a from foo_part_rls where abs(a) >= 10 and leak_data(c)) and
+bar_part_rls.q is not null;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Semi Join
+ Hash Cond: (bar_part_rls.p = foo_part_rls.a)
+ -> Dynamic Seq Scan on bar_part_rls
+ Number of partitions to scan: 5 (out of 5)
+ Filter: (NOT (q IS NULL))
+ -> Hash
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND ((abs(a) >= 10) AND leak_data(c)))
+ Optimizer: GPORCA
+(11 rows)
+
+-- The RTE of the relation containing security quals is present inside a CTE
+explain (costs off ) with cte as (select * from foo_part_rls where
+a > LEAST(a,b)) select * from cte left join bar_part_rls on
+cte.a=bar_part_rls.p and q = 10 and leak_data(cte.a);
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Left Join
+ Hash Cond: (foo_part_rls.a = bar_part_rls.p)
+ Join Filter: leak_data(foo_part_rls.a)
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (a > LEAST(a, b)))
+ -> Hash
+ -> Dynamic Seq Scan on bar_part_rls
+ Number of partitions to scan: 1 (out of 5)
+ Filter: (q = 10)
+ Optimizer: GPORCA
+(12 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+-- ORCA will fallback to planner if SUBLINK is present inside a security qual
+create policy p1 on foo_part_rls as permissive for select using (a in
+(select p from bar_part_rls));
+set session authorization new_user;
+explain (costs off ) select * from foo_part_rls where foo_part_rls.b <15;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: ((hashed SubPlan 1 (copy 2)) AND (b < 15))
+ SubPlan 1 (copy 2)
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Append
+ -> Seq Scan on bar_part_rls_1_prt_1
+ -> Seq Scan on bar_part_rls_1_prt_2
+ -> Seq Scan on bar_part_rls_1_prt_3
+ -> Seq Scan on bar_part_rls_1_prt_4
+ -> Seq Scan on bar_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_other_part
+ Filter: ((hashed SubPlan 1 (copy 3)) AND (b < 15))
+ SubPlan 1 (copy 3)
+ -> Broadcast Motion 3:3 (slice3; segments: 3)
+ -> Append
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1_prt_1_1
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_1_prt_2_1
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_1_prt_3_1
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_1_prt_4_1
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_1_prt_5_1
+ Optimizer: Postgres-based planner
+(23 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+-- ORCA will not generate any index plans when row level security is enabled
+-- for a relation
+create policy p1 on foo_part_rls as permissive for select using (b = 10);
+create index btindex on foo_part_rls using btree(a);
+-- Dynamic Index Scan is generated by ORCA when the owner of the table runs
+-- the query
+set enable_seqscan to off;
+explain (costs off) select * from foo_part_rls where a is null;
+ QUERY PLAN
+-----------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Dynamic Index Scan on btindex on foo_part_rls
+ Index Cond: (a IS NULL)
+ Number of partitions to scan: 6 (out of 6)
+ Optimizer: GPORCA
+(5 rows)
+
+-- Dynamic Index Scan is not generated by ORCA when RLS is enabled
+set session authorization new_user;
+explain (costs off) select * from foo_part_rls where a is null;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 1:1 (slice1; segments: 1)
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 6 (out of 6)
+ Filter: ((b = 10) AND (a IS NULL))
+ Optimizer: GPORCA
+(5 rows)
+
+reset session authorization;
+reset enable_seqscan;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+drop table bar_part_rls cascade;
+drop function leak_data(int);
+--------------------------------------------------------------------------------
+----------------- Creating policies on leaf partitions -------------------------
+--------------------------------------------------------------------------------
+create table rootpart (a int, b int) distributed by (a) partition by range(a)
+(start(0) end(10) every(5));
+insert into rootpart select i,i from generate_series(0,9)i;
+-- select permission is only for root partition and not for child partition
+grant select on rootpart to new_user;
+alter table rootpart_1_prt_2 enable row level security;
+create policy p1 on rootpart_1_prt_2 using (a>=7);
+set session authorization new_user;
+explain (costs off) select * from rootpart;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on rootpart
+ Number of partitions to scan: 2 (out of 2)
+ Optimizer: GPORCA
+(4 rows)
+
+-- Issue #16961
+-- ORCA and planner should not generate a plan and show error permission denied
+-- for leaf partition
+explain (costs off) select * from rootpart_1_prt_2;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on rootpart_1_prt_2
+ Filter: (a >= 7)
+ Optimizer: GPORCA
+(4 rows)
+
+reset session authorization;
+drop policy p1 on rootpart_1_prt_2;
+drop table rootpart;
+--------------------------------------------------------------------------------
+----------------- Grant SELECT to only a leaf partition ------------------------
+--------------------------------------------------------------------------------
+create table rootpart (a int, b int) distributed by (a) partition by range(a)
+(start(0) end(10) every(5));
+insert into rootpart select i,i from generate_series(0,9)i;
+grant select on rootpart_1_prt_2 to new_user;
+alter table rootpart_1_prt_2 enable row level security;
+create policy p1 on rootpart_1_prt_2 using (a>=7);
+set session authorization new_user;
+-- Since the SELECT permission is only for a leaf partition [rootpart_1_prt_2],
+-- querying the root will error out
+explain (costs off) select * from rootpart;
+ERROR: permission denied for table rootpart
+explain (costs off) select * from rootpart_1_prt_1;
+ERROR: permission denied for table rootpart_1_prt_1
+-- Below query will work fine as the user has SELECT permission on this root
+-- partition
+explain (costs off) select * from rootpart_1_prt_2;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on rootpart_1_prt_2
+ Filter: (a >= 7)
+ Optimizer: GPORCA
+(4 rows)
+
+reset session authorization;
+drop policy p1 on rootpart_1_prt_2;
+drop table rootpart;
+--------------------------------------------------------------------------------
+-------------------------- Multilevel Partitions -------------------------------
+--------------------------------------------------------------------------------
+create table rootTab(a int) distributed by (a) partition by range(a);
+create table roottabmid1(a int) distributed by (a) partition by range(a);
+create table roottableaf1(a int) distributed by (a);
+create table roottableaf2(a int) distributed by (a);
+alter table roottab attach partition roottabmid1 for values from (0) to (10);
+alter table roottabmid1 attach partition roottableaf1 for values from (0) to (5);
+alter table roottabmid1 attach partition roottableaf2 for values from (5) to (10);
+insert into roottab select i from generate_series(0,9)i;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Multi-level partitioned tables
+grant select on roottab to new_user;
+alter table roottableaf2 enable row level security;
+create policy p1 on roottableaf2 using (a>=7);
+set session authorization new_user;
+-- Querying the root will fallback to planner as ORCA doesn't supports
+-- Multi-level partitioned tables
+explain (costs off) select * from roottab;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Multi-level partitioned tables
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on roottableaf1
+ -> Seq Scan on roottableaf2
+ Optimizer: Postgres-based planner
+(5 rows)
+
+explain (costs off) select * from roottabmid1;
+ QUERY PLAN
+----------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Dynamic Seq Scan on roottabmid1
+ Number of partitions to scan: 2 (out of 2)
+ Optimizer: GPORCA
+(4 rows)
+
+explain (costs off) select * from roottableaf1;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on roottableaf1
+ Optimizer: GPORCA
+(3 rows)
+
+explain (costs off) select * from roottableaf2;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on roottableaf2
+ Filter: (a >= 7)
+ Optimizer: GPORCA
+(4 rows)
+
+reset session authorization;
+drop policy p1 on roottableaf2;
+drop table roottab;
+--------------------------------------------------------------------------------
+------------------- Inherited Tables with RLS enabled --------------------------
+--------------------------------------------------------------------------------
+create table parent (a int, b int) distributed by (a);
+create table child1 (c int) inherits (parent);
+NOTICE: table has parent, setting distribution columns to match parent table
+create table child2 (d int) inherits (parent);
+NOTICE: table has parent, setting distribution columns to match parent table
+-- SELECT permission on parent
+grant select on parent to new_user;
+alter table parent enable row level security;
+create policy p1 on parent using (a>=7);
+set session authorization new_user;
+-- Querying the parent will fallback to planner as ORCA doesn't supports
+-- Inherited tables
+explain (costs off) select * from parent;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on parent
+ Filter: (a >= 7)
+ -> Seq Scan on child1
+ Filter: (a >= 7)
+ -> Seq Scan on child2
+ Filter: (a >= 7)
+ Optimizer: Postgres-based planner
+(9 rows)
+
+-- Below queries will error out as no SELECT permission for user on child
+-- relations
+explain (costs off) select * from child1;
+ERROR: permission denied for table child1
+explain (costs off) select * from child2;
+ERROR: permission denied for table child2
+reset session authorization;
+grant select on child1 to new_user;
+set session authorization new_user;
+-- After granting SELECT permission the below query will work
+explain (costs off) select * from child1;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on child1
+ Optimizer: GPORCA
+(3 rows)
+
+reset session authorization;
+drop policy p1 on parent;
+drop table parent cascade;
+NOTICE: drop cascades to 2 other objects
+DETAIL: drop cascades to table child1
+drop cascades to table child2
+--------------------------------------------------------------------------------
+----- INSERT queries on relation having row level security enabled -------------
+------ ORCA will fallback to planner for INSERT with RLS anabled ---------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant insert on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=3);
+set session authorization new_user;
+explain (costs off) insert into foo_rls values (1,1,1);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
+ QUERY PLAN
+-----------------------------------
+ Insert on foo_rls
+ -> Result
+ Optimizer: Postgres-based planner
+(3 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+--------------------------------------------------------------------------------
+--------- INSERT queries on partitioned relation having RLS enabled ------------
+--------- ORCA will fallback to planner for INSERT with RLS anabled ------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant insert on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=500);
+set session authorization new_user;
+explain (costs off) insert into foo_part_rls values (-10,-10,-10);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
+ QUERY PLAN
+-----------------------------------
+ Insert on foo_part_rls
+ -> Result
+ Optimizer: Postgres-based planner
+(3 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+--------------------------------------------------------------------------------
+----- UPDATE queries on relation having row level security enabled -------------
+------ ORCA will fallback to planner for UPDATE with RLS anabled ---------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant select,update on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=3);
+set session authorization new_user;
+explain (costs off) update foo_rls set a=-10 where c=4;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
+ QUERY PLAN
+---------------------------------------------------------------
+ Update on foo_rls
+ -> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
+ -> Split
+ -> Seq Scan on foo_rls
+ Filter: ((c >= 3) AND (c = 4))
+ Optimizer: Postgres-based planner
+(6 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+--------------------------------------------------------------------------------
+--------- UPDATE queries on partitioned relation having RLS enabled ------------
+--------- ORCA will fallback to planner for UPDATE with RLS anabled ------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant select,update on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=500);
+set session authorization new_user;
+explain (costs off) update foo_part_rls set a=10 where foo_part_rls.c = 800;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
+ QUERY PLAN
+---------------------------------------------------------------
+ Update on foo_part_rls
+ Update on foo_part_rls_1_prt_1
+ Update on foo_part_rls_1_prt_2
+ Update on foo_part_rls_1_prt_3
+ Update on foo_part_rls_1_prt_4
+ Update on foo_part_rls_1_prt_5
+ -> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_1
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice2; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_2
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice3; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_3
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice4; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_4
+ Filter: ((c >= 500) AND (c = 800))
+ -> Explicit Redistribute Motion 3:3 (slice5; segments: 3)
+ -> Split
+ -> Seq Scan on foo_part_rls_1_prt_5
+ Filter: ((c >= 500) AND (c = 800))
+ Optimizer: Postgres-based planner
+(27 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+--------------------------------------------------------------------------------
+----- DELETE queries on relation having row level security enabled -------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant select,delete on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=300);
+set session authorization new_user;
+explain (costs off) delete from foo_rls where foo_rls.b=30;
+ QUERY PLAN
+-------------------------------------------
+ Delete on foo_rls
+ -> Seq Scan on foo_rls
+ Filter: ((c >= 300) AND (b = 30))
+ Optimizer: GPORCA
+(4 rows)
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+--------------------------------------------------------------------------------
+----- DELETE queries on on partitioned relation having RLS enabled -------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant select,delete on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=300);
+set session authorization new_user;
+explain (costs off) delete from foo_part_rls where foo_part_rls.b=30;
+ QUERY PLAN
+----------------------------------------------------
+ Delete on foo_part_rls
+ -> Dynamic Seq Scan on foo_part_rls
+ Number of partitions to scan: 1 (out of 5)
+ Filter: ((c >= 300) AND (b = 30))
+ Optimizer: GPORCA
+(5 rows)
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+drop user new_user;
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out
index 15ee758b15..3c5b7436d8 100644
--- a/src/test/regress/expected/rowsecurity.out
+++ b/src/test/regress/expected/rowsecurity.out
@@ -5,6 +5,7 @@
-- Suppress NOTICE messages when users/groups don't exist
SET client_min_messages TO 'warning';
SET gp_enable_relsize_collection to on;
+set optimizer_trace_fallback to on;
DROP USER IF EXISTS regress_rls_alice;
DROP USER IF EXISTS regress_rls_bob;
DROP USER IF EXISTS regress_rls_carol;
@@ -4252,3 +4253,4 @@ CREATE POLICY p1 ON rls_tbl_force USING (c1 = 5) WITH CHECK (c1 < 5);
CREATE POLICY p2 ON rls_tbl_force FOR SELECT USING (c1 = 8);
CREATE POLICY p3 ON rls_tbl_force FOR UPDATE USING (c1 = 8) WITH CHECK (c1 >= 5);
CREATE POLICY p4 ON rls_tbl_force FOR DELETE USING (c1 = 8);
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity_optimizer.out
similarity index 69%
copy from src/test/regress/expected/rowsecurity.out
copy to src/test/regress/expected/rowsecurity_optimizer.out
index 15ee758b15..12c06c0431 100644
--- a/src/test/regress/expected/rowsecurity.out
+++ b/src/test/regress/expected/rowsecurity_optimizer.out
@@ -4,7 +4,7 @@
-- Clean up in case a prior regression run failed
-- Suppress NOTICE messages when users/groups don't exist
SET client_min_messages TO 'warning';
-SET gp_enable_relsize_collection to on;
+set optimizer_trace_fallback to on;
DROP USER IF EXISTS regress_rls_alice;
DROP USER IF EXISTS regress_rls_bob;
DROP USER IF EXISTS regress_rls_carol;
@@ -46,6 +46,8 @@ INSERT INTO uaccount VALUES
('regress_rls_bob', 1),
('regress_rls_carol', 2),
('regress_rls_dave', 3);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
ANALYZE uaccount;
CREATE TABLE category (
cid int primary key,
@@ -65,6 +67,7 @@ CREATE TABLE document (
dauthor name,
dtitle text
);
+WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
GRANT ALL ON document TO public;
INSERT INTO document VALUES
( 1, 11, 1, 'regress_rls_bob', 'my first novel'),
@@ -77,6 +80,8 @@ INSERT INTO document VALUES
( 8, 44, 1, 'regress_rls_carol', 'great manga'),
( 9, 22, 1, 'regress_rls_dave', 'awesome science fiction'),
(10, 33, 2, 'regress_rls_dave', 'awesome technology book');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
ANALYZE document;
ALTER TABLE document ENABLE ROW LEVEL SECURITY;
-- user's security level must be higher than or equal to document's
@@ -99,6 +104,8 @@ CREATE POLICY p2r ON document AS RESTRICTIVE TO regress_rls_dave
CREATE POLICY p1r ON document AS RESTRICTIVE TO regress_rls_dave
USING (cid <> 44);
\dp
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------------------+----------+-------+---------------------------------------------+-------------------+--------------------------------------------
@@ -119,6 +126,32 @@ CREATE POLICY p1r ON document AS RESTRICTIVE TO regress_rls_dave
(3 rows)
\d document
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
Table "regress_rls_schema.document"
Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+---------
@@ -142,8 +175,11 @@ Policies:
POLICY "p2r" AS RESTRICTIVE
TO regress_rls_dave
USING (((cid <> 44) AND (cid < 50)))
+Distributed by: (did)
SELECT * FROM pg_policies WHERE schemaname = 'regress_rls_schema' AND tablename = 'document' ORDER BY policyname;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
schemaname | tablename | policyname | permissive | roles | cmd | qual | with_check
--------------------+-----------+------------+-------------+--------------------+-----+--------------------------------------------+------------
regress_rls_schema | document | p1 | PERMISSIVE | {public} | ALL | (dlevel <= ( SELECT uaccount.seclv +|
@@ -157,11 +193,13 @@ SELECT * FROM pg_policies WHERE schemaname = 'regress_rls_schema' AND tablename
SET SESSION AUTHORIZATION regress_rls_bob;
SET row_security TO ON;
SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my first novel
-NOTICE: f_leak => my first manga
NOTICE: f_leak => great science fiction
-NOTICE: f_leak => great manga
+NOTICE: f_leak => my first manga
NOTICE: f_leak => awesome science fiction
+NOTICE: f_leak => great manga
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-------------------------
1 | 11 | 1 | regress_rls_bob | my first novel
@@ -172,11 +210,13 @@ NOTICE: f_leak => awesome science fiction
(5 rows)
SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my first manga
+NOTICE: f_leak => my first novel
NOTICE: f_leak => great science fiction
-NOTICE: f_leak => great manga
NOTICE: f_leak => awesome science fiction
+NOTICE: f_leak => great manga
cid | did | dlevel | dauthor | dtitle | cname
-----+-----+--------+-------------------+-------------------------+-----------------
11 | 1 | 1 | regress_rls_bob | my first novel | novel
@@ -189,6 +229,8 @@ NOTICE: f_leak => awesome science fiction
-- try a sampled version
SELECT * FROM document TABLESAMPLE BERNOULLI(50) REPEATABLE(0)
WHERE f_leak(dtitle) ORDER BY did;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => great manga
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-------------
@@ -198,16 +240,18 @@ NOTICE: f_leak => great manga
-- viewpoint from regress_rls_carol
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
+NOTICE: f_leak => my second manga
NOTICE: f_leak => my second novel
NOTICE: f_leak => my science fiction
-NOTICE: f_leak => my first manga
-NOTICE: f_leak => my second manga
NOTICE: f_leak => great science fiction
-NOTICE: f_leak => great technology book
-NOTICE: f_leak => great manga
NOTICE: f_leak => awesome science fiction
NOTICE: f_leak => awesome technology book
+NOTICE: f_leak => my first manga
+NOTICE: f_leak => great technology book
+NOTICE: f_leak => my first novel
+NOTICE: f_leak => great manga
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-------------------------
1 | 11 | 1 | regress_rls_bob | my first novel
@@ -223,16 +267,18 @@ NOTICE: f_leak => awesome technology book
(10 rows)
SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my second novel
+NOTICE: f_leak => my first novel
+NOTICE: f_leak => my second manga
NOTICE: f_leak => my science fiction
NOTICE: f_leak => my first manga
-NOTICE: f_leak => my second manga
-NOTICE: f_leak => great science fiction
NOTICE: f_leak => great technology book
-NOTICE: f_leak => great manga
+NOTICE: f_leak => great science fiction
NOTICE: f_leak => awesome science fiction
NOTICE: f_leak => awesome technology book
+NOTICE: f_leak => great manga
cid | did | dlevel | dauthor | dtitle | cname
-----+-----+--------+-------------------+-------------------------+-----------------
11 | 1 | 1 | regress_rls_bob | my first novel | novel
@@ -250,6 +296,8 @@ NOTICE: f_leak => awesome technology book
-- try a sampled version
SELECT * FROM document TABLESAMPLE BERNOULLI(50) REPEATABLE(0)
WHERE f_leak(dtitle) ORDER BY did;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => great technology book
NOTICE: f_leak => great manga
NOTICE: f_leak => awesome technology book
@@ -261,8 +309,10 @@ NOTICE: f_leak => awesome technology book
(3 rows)
EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle);
- QUERY PLAN
------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
+ QUERY PLAN
+--------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
InitPlan 1 (returns $0) (slice2)
-> Gather Motion 1:1 (slice3; segments: 1)
@@ -274,6 +324,8 @@ EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle);
(8 rows)
EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
-----------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -294,13 +346,15 @@ EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dt
-- viewpoint from regress_rls_dave
SET SESSION AUTHORIZATION regress_rls_dave;
SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my second novel
-NOTICE: f_leak => my science fiction
+NOTICE: f_leak => my first novel
NOTICE: f_leak => great science fiction
-NOTICE: f_leak => great technology book
NOTICE: f_leak => awesome science fiction
NOTICE: f_leak => awesome technology book
+NOTICE: f_leak => my science fiction
+NOTICE: f_leak => great technology book
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-------------------------
1 | 11 | 1 | regress_rls_bob | my first novel
@@ -313,12 +367,14 @@ NOTICE: f_leak => awesome technology book
(7 rows)
SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER BY did;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my first novel
NOTICE: f_leak => my second novel
-NOTICE: f_leak => my science fiction
NOTICE: f_leak => great science fiction
-NOTICE: f_leak => great technology book
NOTICE: f_leak => awesome science fiction
+NOTICE: f_leak => my science fiction
+NOTICE: f_leak => great technology book
NOTICE: f_leak => awesome technology book
cid | did | dlevel | dauthor | dtitle | cname
-----+-----+--------+-------------------+-------------------------+-----------------
@@ -332,6 +388,8 @@ NOTICE: f_leak => awesome technology book
(7 rows)
EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
----------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -345,6 +403,8 @@ EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle);
(8 rows)
EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -366,9 +426,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dt
-- 44 would technically fail for both p2r and p1r, but we should get an error
-- back from p1r for this because it sorts first
INSERT INTO document VALUES (100, 44, 1, 'regress_rls_dave', 'testing sorting of policies'); -- fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy "p1r" for table "document"
-- Just to see a p2r error
INSERT INTO document VALUES (100, 55, 1, 'regress_rls_dave', 'testing sorting of policies'); -- fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy "p2r" for table "document"
-- only owner can change policies
ALTER POLICY p1 ON document USING (true); --fail
@@ -380,11 +444,13 @@ ALTER POLICY p1 ON document USING (dauthor = current_user);
-- viewpoint from regress_rls_bob again
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => my second novel
+NOTICE: f_leak => my first novel
+NOTICE: f_leak => my second manga
NOTICE: f_leak => my science fiction
NOTICE: f_leak => my first manga
-NOTICE: f_leak => my second manga
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-----------------+--------------------
1 | 11 | 1 | regress_rls_bob | my first novel
@@ -395,8 +461,10 @@ NOTICE: f_leak => my second manga
(5 rows)
SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER by did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => my second novel
+NOTICE: f_leak => my first novel
NOTICE: f_leak => my science fiction
NOTICE: f_leak => my first manga
NOTICE: f_leak => my second manga
@@ -412,8 +480,10 @@ NOTICE: f_leak => my second manga
-- viewpoint from rls_regres_carol again
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => great science fiction
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => great technology book
+NOTICE: f_leak => great science fiction
NOTICE: f_leak => great manga
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-----------------------
@@ -423,9 +493,11 @@ NOTICE: f_leak => great manga
(3 rows)
SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER by did;
-NOTICE: f_leak => great science fiction
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => great technology book
NOTICE: f_leak => great manga
+NOTICE: f_leak => great science fiction
cid | did | dlevel | dauthor | dtitle | cname
-----+-----+--------+-------------------+-----------------------+-----------------
22 | 6 | 1 | regress_rls_carol | great science fiction | science fiction
@@ -434,8 +506,10 @@ NOTICE: f_leak => great manga
(3 rows)
EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle);
- QUERY PLAN
----------------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+ QUERY PLAN
+----------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on document
Filter: ((dauthor = 'regress_rls_carol'::name) AND f_leak(dtitle))
@@ -443,8 +517,10 @@ EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle);
(4 rows)
EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle);
- QUERY PLAN
----------------------------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+ QUERY PLAN
+----------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
Hash Cond: (category.cid = document.cid)
@@ -466,6 +542,8 @@ ALTER TABLE category ENABLE ROW LEVEL SECURITY;
-- cannot delete PK referenced by invisible FK
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid ORDER BY d.did, c.cid;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
did | cid | dlevel | dauthor | dtitle | cid | cname
-----+-----+--------+-----------------+--------------------+-----+------------
1 | 11 | 1 | regress_rls_bob | my first novel | 11 | novel
@@ -485,6 +563,8 @@ DETAIL: Key is still referenced from table "document".
-- can insert FK referencing invisible PK
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid ORDER BY d.did, c.cid;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
did | cid | dlevel | dauthor | dtitle | cid | cname
-----+-----+--------+-------------------+-----------------------+-----+-----------------
6 | 22 | 1 | regress_rls_carol | great science fiction | 22 | science fiction
@@ -493,21 +573,31 @@ SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid ORDER BY d.
(3 rows)
INSERT INTO document VALUES (11, 33, 1, current_user, 'hoge');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
-- UNIQUE or PRIMARY KEY constraint violation DOES reveal presence of row
SET SESSION AUTHORIZATION regress_rls_bob;
INSERT INTO document VALUES (8, 44, 1, 'regress_rls_bob', 'my third manga'); -- Must fail with unique violation, revealing presence of did we can't see
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: duplicate key value violates unique constraint "document_pkey"
SELECT * FROM document WHERE did = 8; -- and confirm we can't see it
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+---------+--------
(0 rows)
-- RLS policies are checked before constraints
INSERT INTO document VALUES (8, 44, 1, 'regress_rls_carol', 'my third manga'); -- Should fail with RLS check violation, not duplicate key violation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "document"
-- GPDB: UPDATE on distributed key column not allowed on relation with update triggers
-- start_ignore
UPDATE document SET did = 8, dauthor = 'regress_rls_carol' WHERE did = 5; -- Should fail with RLS check violation, not duplicate key violation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "document"
-- end_ignore
-- database superuser does bypass RLS policy when enabled
@@ -661,6 +751,7 @@ GRANT ALL ON t1 TO public;
COPY t1 FROM stdin WITH ;
ANALYZE t1;
CREATE TABLE t2 (c float) INHERITS (t1);
+NOTICE: table has parent, setting distribution columns to match parent table
GRANT ALL ON t2 TO public;
COPY t2 FROM stdin;
ANALYZE t2;
@@ -675,6 +766,8 @@ ALTER TABLE t1 ENABLE ROW LEVEL SECURITY;
ALTER TABLE t2 ENABLE ROW LEVEL SECURITY;
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b
-----+---+-----
102 | 2 | bbb
@@ -685,20 +778,24 @@ SELECT * FROM t1;
(5 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: ((a % 2) = 0)
Optimizer: Postgres query optimizer
(9 rows)
SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
NOTICE: f_leak => bbb
NOTICE: f_leak => dad
NOTICE: f_leak => bcd
@@ -714,21 +811,25 @@ NOTICE: f_leak => yyy
(5 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
-----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: (((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
-- reference to system column
SELECT tableoid::regclass, * FROM t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
tableoid | id | a | b
----------+-----+---+-----
t1 | 102 | 2 | bbb
@@ -739,20 +840,25 @@ SELECT tableoid::regclass, * FROM t1;
(5 rows)
EXPLAIN (COSTS OFF) SELECT *, t1 FROM t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: ((a % 2) = 0)
+ Optimizer: Postgres-based planner
(9 rows)
-- reference to whole-row reference
SELECT *, t1 FROM t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b | t1
-----+---+-----+-------------
102 | 2 | bbb | (102,2,bbb)
@@ -763,21 +869,25 @@ SELECT *, t1 FROM t1;
(5 rows)
EXPLAIN (COSTS OFF) SELECT *, t1 FROM t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: ((a % 2) = 0)
Optimizer: Postgres query optimizer
(9 rows)
-- for share/update lock
SELECT * FROM t1 FOR SHARE;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b
-----+---+-----
102 | 2 | bbb
@@ -788,20 +898,24 @@ SELECT * FROM t1 FOR SHARE;
(5 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1 FOR SHARE;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: ((a % 2) = 0)
Optimizer: Postgres query optimizer
(9 rows)
SELECT * FROM t1 WHERE f_leak(b) FOR SHARE;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
NOTICE: f_leak => bbb
NOTICE: f_leak => dad
NOTICE: f_leak => bcd
@@ -817,15 +931,17 @@ NOTICE: f_leak => yyy
(5 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b) FOR SHARE;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
-----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: (((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
@@ -849,24 +965,26 @@ EXPLAIN (COSTS OFF) SELECT a, b, tableoid::regclass FROM t2 UNION ALL SELECT a,
-> Seq Scan on t2
Filter: ((a % 2) = 1)
-> Seq Scan on t3
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(6 rows)
-- superuser is allowed to bypass RLS checks
RESET SESSION AUTHORIZATION;
SET row_security TO OFF;
SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
NOTICE: f_leak => aba
NOTICE: f_leak => bbb
NOTICE: f_leak => ccc
NOTICE: f_leak => dad
NOTICE: f_leak => abc
NOTICE: f_leak => bcd
-NOTICE: f_leak => cde
NOTICE: f_leak => def
-NOTICE: f_leak => xxx
+NOTICE: f_leak => cde
NOTICE: f_leak => yyy
NOTICE: f_leak => zzz
+NOTICE: f_leak => xxx
id | a | b
-----+---+-----
101 | 1 | aba
@@ -883,15 +1001,17 @@ NOTICE: f_leak => zzz
(11 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: f_leak(b)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: f_leak(b)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: f_leak(b)
Optimizer: Postgres query optimizer
(9 rows)
@@ -900,17 +1020,19 @@ EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b);
SET SESSION AUTHORIZATION regress_rls_exempt_user;
SET row_security TO OFF;
SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
NOTICE: f_leak => aba
NOTICE: f_leak => bbb
NOTICE: f_leak => ccc
NOTICE: f_leak => dad
NOTICE: f_leak => abc
+NOTICE: f_leak => def
NOTICE: f_leak => bcd
NOTICE: f_leak => cde
-NOTICE: f_leak => def
-NOTICE: f_leak => xxx
NOTICE: f_leak => yyy
NOTICE: f_leak => zzz
+NOTICE: f_leak => xxx
id | a | b
-----+---+-----
101 | 1 | aba
@@ -927,15 +1049,17 @@ NOTICE: f_leak => zzz
(11 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: f_leak(b)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: f_leak(b)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: f_leak(b)
Optimizer: Postgres query optimizer
(9 rows)
@@ -951,11 +1075,16 @@ CREATE TABLE part_document (
dauthor name,
dtitle text
) PARTITION BY RANGE (cid);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'did' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
GRANT ALL ON part_document TO public;
-- Create partitions for document categories
CREATE TABLE part_document_fiction PARTITION OF part_document FOR VALUES FROM (11) to (12);
+NOTICE: table has parent, setting distribution columns to match parent table
CREATE TABLE part_document_satire PARTITION OF part_document FOR VALUES FROM (55) to (56);
+NOTICE: table has parent, setting distribution columns to match parent table
CREATE TABLE part_document_nonfiction PARTITION OF part_document FOR VALUES FROM (99) to (100);
+NOTICE: table has parent, setting distribution columns to match parent table
GRANT ALL ON part_document_fiction TO public;
GRANT ALL ON part_document_satire TO public;
GRANT ALL ON part_document_nonfiction TO public;
@@ -970,6 +1099,8 @@ INSERT INTO part_document VALUES
( 8, 55, 2, 'regress_rls_carol', 'great satire'),
( 9, 11, 1, 'regress_rls_dave', 'awesome science fiction'),
(10, 99, 2, 'regress_rls_dave', 'awesome technology book');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
ALTER TABLE part_document ENABLE ROW LEVEL SECURITY;
-- Create policy on parent
-- user's security level must be higher than or equal to document's
@@ -979,6 +1110,30 @@ CREATE POLICY pp1 ON part_document AS PERMISSIVE
CREATE POLICY pp1r ON part_document AS RESTRICTIVE TO regress_rls_dave
USING (cid < 55);
\d+ part_document
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
Partitioned table "regress_rls_schema.part_document"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------+---------+-----------+----------+---------+----------+--------------+-------------
@@ -999,8 +1154,11 @@ Policies:
Partitions: part_document_fiction FOR VALUES FROM (11) TO (12),
part_document_nonfiction FOR VALUES FROM (99) TO (100),
part_document_satire FOR VALUES FROM (55) TO (56)
+Distributed by: (did)
SELECT * FROM pg_policies WHERE schemaname = 'regress_rls_schema' AND tablename like '%part_document%' ORDER BY policyname;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
schemaname | tablename | policyname | permissive | roles | cmd | qual | with_check
--------------------+---------------+------------+-------------+--------------------+-----+--------------------------------------------+------------
regress_rls_schema | part_document | pp1 | PERMISSIVE | {public} | ALL | (dlevel <= ( SELECT uaccount.seclv +|
@@ -1013,9 +1171,11 @@ SELECT * FROM pg_policies WHERE schemaname = 'regress_rls_schema' AND tablename
SET SESSION AUTHORIZATION regress_rls_bob;
SET row_security TO ON;
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => great science fiction
NOTICE: f_leak => awesome science fiction
+NOTICE: f_leak => my first novel
NOTICE: f_leak => my first satire
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-------------------------
@@ -1026,19 +1186,21 @@ NOTICE: f_leak => my first satire
(4 rows)
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
- QUERY PLAN
------------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
+ QUERY PLAN
+------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
InitPlan 1 (returns $0) (slice2)
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_bob'::name)
-> Append
- -> Seq Scan on part_document_fiction part_document_1
+ -> Seq Scan on part_document_fiction
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire part_document_2
+ -> Seq Scan on part_document_satire
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction part_document_3
+ -> Seq Scan on part_document_nonfiction
Filter: ((dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(13 rows)
@@ -1046,15 +1208,17 @@ EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
-- viewpoint from regress_rls_carol
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my second novel
+NOTICE: f_leak => my first novel
NOTICE: f_leak => great science fiction
-NOTICE: f_leak => awesome science fiction
NOTICE: f_leak => my first satire
+NOTICE: f_leak => awesome science fiction
NOTICE: f_leak => great satire
NOTICE: f_leak => my science textbook
-NOTICE: f_leak => my history book
NOTICE: f_leak => great technology book
+NOTICE: f_leak => my history book
NOTICE: f_leak => awesome technology book
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-------------------------
@@ -1071,19 +1235,21 @@ NOTICE: f_leak => awesome technology book
(10 rows)
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
- QUERY PLAN
------------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
+ QUERY PLAN
+--------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
InitPlan 1 (returns $0) (slice2)
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_carol'::name)
-> Append
- -> Seq Scan on part_document_fiction part_document_1
+ -> Seq Scan on part_document_fiction
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire part_document_2
+ -> Seq Scan on part_document_satire
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction part_document_3
+ -> Seq Scan on part_document_nonfiction
Filter: ((dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(13 rows)
@@ -1091,8 +1257,10 @@ EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
-- viewpoint from regress_rls_dave
SET SESSION AUTHORIZATION regress_rls_dave;
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my second novel
+NOTICE: f_leak => my first novel
NOTICE: f_leak => great science fiction
NOTICE: f_leak => awesome science fiction
did | cid | dlevel | dauthor | dtitle
@@ -1104,6 +1272,8 @@ NOTICE: f_leak => awesome science fiction
(4 rows)
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
--------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -1111,25 +1281,33 @@ EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_dave'::name)
- -> Seq Scan on part_document_fiction part_document
+ -> Seq Scan on part_document_fiction
Filter: ((cid < 55) AND (dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(8 rows)
-- pp1 ERROR
INSERT INTO part_document VALUES (100, 11, 5, 'regress_rls_dave', 'testing pp1'); -- fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "part_document"
-- pp1r ERROR
INSERT INTO part_document VALUES (100, 99, 1, 'regress_rls_dave', 'testing pp1r'); -- fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy "pp1r" for table "part_document"
-- Show that RLS policy does not apply for direct inserts to children
-- This should fail with RLS POLICY pp1r violation.
INSERT INTO part_document VALUES (100, 55, 1, 'regress_rls_dave', 'testing RLS with partitions'); -- fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy "pp1r" for table "part_document"
-- But this should succeed.
INSERT INTO part_document_satire VALUES (100, 55, 1, 'regress_rls_dave', 'testing RLS with partitions'); -- success
-- We still cannot see the row using the parent
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my first novel
NOTICE: f_leak => my second novel
NOTICE: f_leak => great science fiction
@@ -1162,6 +1340,8 @@ CREATE POLICY pp3 ON part_document_satire AS RESTRICTIVE
-- This should fail with RLS violation now.
SET SESSION AUTHORIZATION regress_rls_dave;
INSERT INTO part_document_satire VALUES (101, 55, 1, 'regress_rls_dave', 'testing RLS with partitions'); -- fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "part_document_satire"
-- And now we cannot see directly into the partition either, due to RLS
SELECT * FROM part_document_satire WHERE f_leak(dtitle) ORDER BY did;
@@ -1172,8 +1352,10 @@ SELECT * FROM part_document_satire WHERE f_leak(dtitle) ORDER BY did;
-- The parent looks same as before
-- viewpoint from regress_rls_dave
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my second novel
+NOTICE: f_leak => my first novel
NOTICE: f_leak => great science fiction
NOTICE: f_leak => awesome science fiction
did | cid | dlevel | dauthor | dtitle
@@ -1185,6 +1367,8 @@ NOTICE: f_leak => awesome science fiction
(4 rows)
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
--------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -1192,7 +1376,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_dave'::name)
- -> Seq Scan on part_document_fiction part_document
+ -> Seq Scan on part_document_fiction
Filter: ((cid < 55) AND (dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(8 rows)
@@ -1200,6 +1384,8 @@ EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
-- viewpoint from regress_rls_carol
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => my first novel
NOTICE: f_leak => my second novel
NOTICE: f_leak => great science fiction
@@ -1209,8 +1395,8 @@ NOTICE: f_leak => great satire
NOTICE: f_leak => testing RLS with partitions
NOTICE: f_leak => my science textbook
NOTICE: f_leak => my history book
-NOTICE: f_leak => great technology book
NOTICE: f_leak => awesome technology book
+NOTICE: f_leak => great technology book
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-------------------+-----------------------------
1 | 11 | 1 | regress_rls_bob | my first novel
@@ -1227,19 +1413,21 @@ NOTICE: f_leak => awesome technology book
(11 rows)
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
- QUERY PLAN
------------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
+ QUERY PLAN
+--------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
InitPlan 1 (returns $0) (slice2)
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_carol'::name)
-> Append
- -> Seq Scan on part_document_fiction part_document_1
+ -> Seq Scan on part_document_fiction
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire part_document_2
+ -> Seq Scan on part_document_satire
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction part_document_3
+ -> Seq Scan on part_document_nonfiction
Filter: ((dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(13 rows)
@@ -1254,11 +1442,13 @@ ALTER POLICY pp1 ON part_document USING (dauthor = current_user);
-- viewpoint from regress_rls_bob again
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
-NOTICE: f_leak => my first novel
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => my second novel
+NOTICE: f_leak => my first novel
NOTICE: f_leak => my first satire
-NOTICE: f_leak => my science textbook
NOTICE: f_leak => my history book
+NOTICE: f_leak => my science textbook
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-----------------+---------------------
1 | 11 | 1 | regress_rls_bob | my first novel
@@ -1271,6 +1461,8 @@ NOTICE: f_leak => my history book
-- viewpoint from rls_regres_carol again
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => great science fiction
NOTICE: f_leak => great satire
NOTICE: f_leak => great technology book
@@ -1282,15 +1474,17 @@ NOTICE: f_leak => great technology book
(3 rows)
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
- QUERY PLAN
----------------------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+ QUERY PLAN
+----------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on part_document_fiction part_document_1
+ -> Seq Scan on part_document_fiction
Filter: ((dauthor = 'regress_rls_carol'::name) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire part_document_2
+ -> Seq Scan on part_document_satire
Filter: ((dauthor = 'regress_rls_carol'::name) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction part_document_3
+ -> Seq Scan on part_document_nonfiction
Filter: ((dauthor = 'regress_rls_carol'::name) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(9 rows)
@@ -1390,12 +1584,18 @@ CREATE POLICY pp3 ON part_document AS RESTRICTIVE
USING ((SELECT dlevel <= seclv FROM uaccount WHERE pguser = current_user));
SET SESSION AUTHORIZATION regress_rls_carol;
INSERT INTO part_document VALUES (100, 11, 5, 'regress_rls_carol', 'testing pp3'); -- fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy "pp3" for table "part_document"
----- Dependencies -----
SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security TO ON;
CREATE TABLE dependee (x integer, y integer);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'x' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE dependent (x integer, y integer);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'x' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY d1 ON dependent FOR ALL
TO PUBLIC
USING (x = (SELECT d.x FROM dependee d WHERE d.y = y));
@@ -1410,7 +1610,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM dependent; -- After drop, should be unqualifie
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on dependent
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(3 rows)
----- RECURSION ----
@@ -1419,6 +1619,8 @@ EXPLAIN (COSTS OFF) SELECT * FROM dependent; -- After drop, should be unqualifie
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE rec1 (x integer, y integer);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'x' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY r1 ON rec1 USING (x = (SELECT r.x FROM rec1 r WHERE y = r.y));
ALTER TABLE rec1 ENABLE ROW LEVEL SECURITY;
SET SESSION AUTHORIZATION regress_rls_bob;
@@ -1429,6 +1631,8 @@ ERROR: infinite recursion detected in policy for relation "rec1"
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE rec2 (a integer, b integer);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
ALTER POLICY r1 ON rec1 USING (x = (SELECT a FROM rec2 WHERE b = y));
CREATE POLICY r2 ON rec2 USING (a = (SELECT x FROM rec1 WHERE y = b));
ALTER TABLE rec2 ENABLE ROW LEVEL SECURITY;
@@ -1468,8 +1672,12 @@ ERROR: infinite recursion detected in policy for relation "rec1"
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE s1 (a int, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO s1 (SELECT x, md5(x::text) FROM generate_series(-10,10) x);
CREATE TABLE s2 (x int, y text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'x' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO s2 (SELECT x, md5(x::text) FROM generate_series(-6,6) x);
GRANT SELECT ON s1, s2 TO regress_rls_bob;
CREATE POLICY p1 ON s1 USING (a in (select x from s2 where y like '%2f%'));
@@ -1488,6 +1696,8 @@ DROP POLICY p3 on s1;
ALTER POLICY p2 ON s2 USING (x % 2 = 0);
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM s1 WHERE f_leak(b); -- OK
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => c81e728d9d4c2f636f067f89cc14862c
NOTICE: f_leak => a87ff679a2f3e71d9181a67b7542122c
a | b
@@ -1497,6 +1707,8 @@ NOTICE: f_leak => a87ff679a2f3e71d9181a67b7542122c
(2 rows)
EXPLAIN (COSTS OFF) SELECT * FROM only s1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
-----------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -1513,6 +1725,8 @@ SET SESSION AUTHORIZATION regress_rls_alice;
ALTER POLICY p1 ON s1 USING (a in (select x from v2)); -- using VIEW in RLS policy
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM s1 WHERE f_leak(b); -- OK
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
NOTICE: f_leak => 0267aaf632e87a63288a08331f22c7c3
NOTICE: f_leak => 1679091c5a880faf6fb5e6087eb1b2dc
a | b
@@ -1522,6 +1736,8 @@ NOTICE: f_leak => 1679091c5a880faf6fb5e6087eb1b2dc
(2 rows)
EXPLAIN (COSTS OFF) SELECT * FROM s1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
-----------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -1535,6 +1751,8 @@ EXPLAIN (COSTS OFF) SELECT * FROM s1 WHERE f_leak(b);
(8 rows)
SELECT (SELECT x FROM s1 LIMIT 1) xx, * FROM s2 WHERE y like '%28%';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
xx | x | y
----+----+----------------------------------
-6 | -6 | 596a3d04481816330f07e4f97510c28f
@@ -1543,6 +1761,8 @@ SELECT (SELECT x FROM s1 LIMIT 1) xx, * FROM s2 WHERE y like '%28%';
(3 rows)
EXPLAIN (COSTS OFF) SELECT (SELECT x FROM s1 LIMIT 1) xx, * FROM s2 WHERE y like '%28%';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
QUERY PLAN
-------------------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -1571,6 +1791,8 @@ ERROR: infinite recursion detected in policy for relation "s1"
-- prepared statement with regress_rls_alice privilege
PREPARE p1(int) AS SELECT * FROM t1 WHERE a <= $1;
EXECUTE p1(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b
-----+---+-----
102 | 2 | bbb
@@ -1579,15 +1801,17 @@ EXECUTE p1(2);
(3 rows)
EXPLAIN (COSTS OFF) EXECUTE p1(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: ((a <= 2) AND ((a % 2) = 0))
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: ((a <= 2) AND ((a % 2) = 0))
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: ((a <= 2) AND ((a % 2) = 0))
Optimizer: Postgres query optimizer
(9 rows)
@@ -1596,17 +1820,19 @@ EXPLAIN (COSTS OFF) EXECUTE p1(2);
RESET SESSION AUTHORIZATION;
SET row_security TO OFF;
SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
NOTICE: f_leak => aba
NOTICE: f_leak => bbb
NOTICE: f_leak => ccc
NOTICE: f_leak => dad
NOTICE: f_leak => abc
+NOTICE: f_leak => def
NOTICE: f_leak => bcd
NOTICE: f_leak => cde
-NOTICE: f_leak => def
-NOTICE: f_leak => xxx
NOTICE: f_leak => yyy
NOTICE: f_leak => zzz
+NOTICE: f_leak => xxx
id | a | b
-----+---+-----
101 | 1 | aba
@@ -1623,21 +1849,25 @@ NOTICE: f_leak => zzz
(11 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: f_leak(b)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: f_leak(b)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: f_leak(b)
Optimizer: Postgres query optimizer
(9 rows)
-- plan cache should be invalidated
EXECUTE p1(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b
-----+---+-----
101 | 1 | aba
@@ -1649,21 +1879,25 @@ EXECUTE p1(2);
(6 rows)
EXPLAIN (COSTS OFF) EXECUTE p1(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: (a <= 2)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: (a <= 2)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: (a <= 2)
Optimizer: Postgres query optimizer
(9 rows)
PREPARE p2(int) AS SELECT * FROM t1 WHERE a = $1;
EXECUTE p2(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b
-----+---+-----
102 | 2 | bbb
@@ -1672,15 +1906,17 @@ EXECUTE p2(2);
(3 rows)
EXPLAIN (COSTS OFF) EXECUTE p2(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: (a = 2)
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: (a = 2)
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: (a = 2)
Optimizer: Postgres query optimizer
(9 rows)
@@ -1689,6 +1925,8 @@ EXPLAIN (COSTS OFF) EXECUTE p2(2);
SET SESSION AUTHORIZATION regress_rls_bob;
SET row_security TO ON;
EXECUTE p2(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b
-----+---+-----
102 | 2 | bbb
@@ -1697,15 +1935,17 @@ EXECUTE p2(2);
(3 rows)
EXPLAIN (COSTS OFF) EXECUTE p2(2);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
QUERY PLAN
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1 t1_1
+ -> Seq Scan on t1
Filter: ((a = 2) AND ((a % 2) = 0))
- -> Seq Scan on t2 t1_2
+ -> Seq Scan on t2
Filter: ((a = 2) AND ((a % 2) = 0))
- -> Seq Scan on t3 t1_3
+ -> Seq Scan on t3
Filter: ((a = 2) AND ((a % 2) = 0))
Optimizer: Postgres query optimizer
(9 rows)
@@ -1715,41 +1955,51 @@ EXPLAIN (COSTS OFF) EXECUTE p2(2);
--
SET SESSION AUTHORIZATION regress_rls_bob;
EXPLAIN (COSTS OFF) UPDATE t1 SET b = b || b WHERE f_leak(b);
- QUERY PLAN
------------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
+ QUERY PLAN
+-----------------------------------------------
Update on t1
- Update on t1 t1_1
- Update on t2 t1_2
- Update on t3 t1_3
- -> Result
- -> Append
- -> Seq Scan on t1 t1_1
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_3
- Filter: (((a % 2) = 0) AND f_leak(b))
-(12 rows)
+ Update on t1
+ Update on t2
+ Update on t3
+ -> Seq Scan on t1
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ Optimizer: Postgres-based planner
+(11 rows)
UPDATE t1 SET b = b || b WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => bbb
NOTICE: f_leak => dad
NOTICE: f_leak => bcd
NOTICE: f_leak => def
NOTICE: f_leak => yyy
EXPLAIN (COSTS OFF) UPDATE only t1 SET b = b || '_updt' WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-----------------------------------------------
Update on t1
-> Seq Scan on t1
Filter: (((a % 2) = 0) AND f_leak(b))
-(3 rows)
+ Optimizer: Postgres-based planner
+(4 rows)
UPDATE only t1 SET b = b || '_updt' WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => bbbbbb
NOTICE: f_leak => daddad
-- returning clause with system column
UPDATE only t1 SET b = b WHERE f_leak(b) RETURNING tableoid::regclass, *, t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => bbbbbb_updt
NOTICE: f_leak => daddad_updt
tableoid | id | a | b | t1
@@ -1759,9 +2009,11 @@ NOTICE: f_leak => daddad_updt
(2 rows)
UPDATE t1 SET b = b WHERE f_leak(b) RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => bbbbbb_updt
-NOTICE: f_leak => daddad_updt
NOTICE: f_leak => bcdbcd
+NOTICE: f_leak => daddad_updt
NOTICE: f_leak => defdef
NOTICE: f_leak => yyyyyy
id | a | b
@@ -1774,10 +2026,12 @@ NOTICE: f_leak => yyyyyy
(5 rows)
UPDATE t1 SET b = b WHERE f_leak(b) RETURNING tableoid::regclass, *, t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => bbbbbb_updt
-NOTICE: f_leak => daddad_updt
-NOTICE: f_leak => bcdbcd
NOTICE: f_leak => defdef
+NOTICE: f_leak => bcdbcd
+NOTICE: f_leak => daddad_updt
NOTICE: f_leak => yyyyyy
tableoid | id | a | b | t1
----------+-----+---+-------------+---------------------
@@ -1791,6 +2045,8 @@ NOTICE: f_leak => yyyyyy
-- updates with from clause
EXPLAIN (COSTS OFF) UPDATE t2 SET b=t2.b FROM t3
WHERE t2.a = 3 and t3.a = 2 AND f_leak(t2.b) AND f_leak(t3.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-----------------------------------------------------------------
Update on t2
@@ -1806,60 +2062,84 @@ WHERE t2.a = 3 and t3.a = 2 AND f_leak(t2.b) AND f_leak(t3.b);
UPDATE t2 SET b=t2.b FROM t3
WHERE t2.a = 3 and t3.a = 2 AND f_leak(t2.b) AND f_leak(t3.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => cde
NOTICE: f_leak => yyyyyy
EXPLAIN (COSTS OFF) UPDATE t1 SET b=t1.b FROM t2
WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-----------------------------------------------------------------------------
Update on t1
- Update on t1 t1_1
- Update on t2 t1_2
- Update on t3 t1_3
+ Update on t1
+ Update on t2 t2_1
+ Update on t3
+ -> Nested Loop
+ -> Seq Scan on t1
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Materialize
+ -> Broadcast Motion 3:3 (slice1; segments: 3)
+ -> Seq Scan on t2
+ Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
-> Nested Loop
- -> Broadcast Motion 3:3 (slice1; segments: 3)
- -> Seq Scan on t2
- Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
- -> Append
- -> Seq Scan on t1 t1_1
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_3
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t2_1
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Materialize
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on t2
+ Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
+ -> Nested Loop
+ -> Seq Scan on t3
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Materialize
+ -> Broadcast Motion 3:3 (slice3; segments: 3)
+ -> Seq Scan on t2
+ Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
Optimizer: Postgres query optimizer
-(16 rows)
+(26 rows)
UPDATE t1 SET b=t1.b FROM t2
WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
+NOTICE: f_leak => cde
+NOTICE: f_leak => cde
NOTICE: f_leak => cde
EXPLAIN (COSTS OFF) UPDATE t2 SET b=t2.b FROM t1
WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-----------------------------------------------------------------------------------
Update on t2
- -> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
- -> Nested Loop
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on t2
- Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
- -> Append
- -> Seq Scan on t1 t1_1
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_3
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Nested Loop
+ -> Seq Scan on t2
+ Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
+ -> Materialize
+ -> Broadcast Motion 3:3 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on t1
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t2_1
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(14 rows)
UPDATE t2 SET b=t2.b FROM t1
WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => cde
-- updates with from clause self join
EXPLAIN (COSTS OFF) UPDATE t2 t2_1 SET b = t2_2.b FROM t2 t2_2
WHERE t2_1.a = 3 AND t2_2.a = t2_1.a AND t2_2.b = t2_1.b
AND f_leak(t2_1.b) AND f_leak(t2_2.b) RETURNING *, t2_1, t2_2;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-----------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -1879,6 +2159,8 @@ AND f_leak(t2_1.b) AND f_leak(t2_2.b) RETURNING *, t2_1, t2_2;
UPDATE t2 t2_1 SET b = t2_2.b FROM t2 t2_2
WHERE t2_1.a = 3 AND t2_2.a = t2_1.a AND t2_2.b = t2_1.b
AND f_leak(t2_1.b) AND f_leak(t2_2.b) RETURNING *, t2_1, t2_2;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => cde
NOTICE: f_leak => cde
id | a | b | c | id | a | b | c | t2_1 | t2_2
@@ -1889,41 +2171,70 @@ NOTICE: f_leak => cde
EXPLAIN (COSTS OFF) UPDATE t1 t1_1 SET b = t1_2.b FROM t1 t1_2
WHERE t1_1.a = 4 AND t1_2.a = t1_1.a AND t1_2.b = t1_1.b
AND f_leak(t1_1.b) AND f_leak(t1_2.b) RETURNING *, t1_1, t1_2;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-----------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Update on t1 t1_1
- Update on t1 t1_1_1
- Update on t2 t1_1_2
- Update on t3 t1_1_3
+ Update on t1 t1_1
+ Update on t2 t1_1_1
+ Update on t3 t1_1_2
-> Explicit Redistribute Motion 3:3 (slice2; segments: 3)
-> Hash Join
- Hash Cond: (t1_1.b = t1_2.b)
- -> Broadcast Motion 3:3 (slice3; segments: 3)
- -> Append
- -> Seq Scan on t1 t1_1_1
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_1_2
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_1_3
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ Hash Cond: (t1_2.b = t1_1.b)
+ -> Append
+ -> Seq Scan on t1 t1_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2_1
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_2_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
-> Hash
- -> Append
- -> Seq Scan on t1 t1_2_1
+ -> Broadcast Motion 3:3 (slice3; segments: 3)
+ -> Seq Scan on t1 t1_1
Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2_2
+ -> Explicit Redistribute Motion 3:3 (slice4; segments: 3)
+ -> Hash Join
+ Hash Cond: (t1_2.b = t1_1_1.b)
+ -> Append
+ -> Seq Scan on t1 t1_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2_1
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_2_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Hash
+ -> Broadcast Motion 3:3 (slice5; segments: 3)
+ -> Seq Scan on t2 t1_1_1
Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_2_3
+ -> Explicit Redistribute Motion 3:3 (slice6; segments: 3)
+ -> Hash Join
+ Hash Cond: (t1_2.b = t1_1_2.b)
+ -> Append
+ -> Seq Scan on t1 t1_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2_1
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_2_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Hash
+ -> Broadcast Motion 3:3 (slice7; segments: 3)
+ -> Seq Scan on t3 t1_1_2
Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
-(25 rows)
+(48 rows)
UPDATE t1 t1_1 SET b = t1_2.b FROM t1 t1_2
WHERE t1_1.a = 4 AND t1_2.a = t1_1.a AND t1_2.b = t1_1.b
AND f_leak(t1_1.b) AND f_leak(t1_2.b) RETURNING *, t1_1, t1_2;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => daddad_updt
NOTICE: f_leak => daddad_updt
NOTICE: f_leak => defdef
+NOTICE: f_leak => defdef
+NOTICE: f_leak => daddad_updt
NOTICE: f_leak => defdef
id | a | b | id | a | b | t1_1 | t1_2
-----+---+-------------+-----+---+-------------+---------------------+---------------------
@@ -1934,6 +2245,8 @@ NOTICE: f_leak => defdef
RESET SESSION AUTHORIZATION;
SET row_security TO OFF;
SELECT * FROM t1 ORDER BY a,b;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
id | a | b
-----+---+-------------
101 | 1 | aba
@@ -1952,6 +2265,8 @@ SELECT * FROM t1 ORDER BY a,b;
SET SESSION AUTHORIZATION regress_rls_bob;
SET row_security TO ON;
EXPLAIN (COSTS OFF) DELETE FROM only t1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: ONLY in the FROM clause
QUERY PLAN
-----------------------------------------------
Delete on t1
@@ -1961,22 +2276,26 @@ EXPLAIN (COSTS OFF) DELETE FROM only t1 WHERE f_leak(b);
(4 rows)
EXPLAIN (COSTS OFF) DELETE FROM t1 WHERE f_leak(b);
- QUERY PLAN
------------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
+ QUERY PLAN
+-----------------------------------------------
Delete on t1
- Delete on t1 t1_1
- Delete on t2 t1_2
- Delete on t3 t1_3
- -> Append
- -> Seq Scan on t1 t1_1
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_3
- Filter: (((a % 2) = 0) AND f_leak(b))
+ Delete on t1
+ Delete on t2
+ Delete on t3
+ -> Seq Scan on t1
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ Optimizer: Postgres-based planner
(11 rows)
DELETE FROM only t1 WHERE f_leak(b) RETURNING tableoid::regclass, *, t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: RETURNING clause
NOTICE: f_leak => bbbbbb_updt
NOTICE: f_leak => daddad_updt
tableoid | id | a | b | t1
@@ -1986,6 +2305,8 @@ NOTICE: f_leak => daddad_updt
(2 rows)
DELETE FROM t1 WHERE f_leak(b) RETURNING tableoid::regclass, *, t1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: RETURNING clause
NOTICE: f_leak => bcdbcd
NOTICE: f_leak => defdef
NOTICE: f_leak => yyyyyy
@@ -2001,6 +2322,8 @@ NOTICE: f_leak => yyyyyy
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE b1 (a int, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO b1 (SELECT x, md5(x::text) FROM generate_series(-10,10) x);
CREATE POLICY p1 ON b1 USING (a % 2 = 0);
ALTER TABLE b1 ENABLE ROW LEVEL SECURITY;
@@ -2010,6 +2333,8 @@ CREATE VIEW bv1 WITH (security_barrier) AS SELECT * FROM b1 WHERE a > 0 WITH CHE
GRANT ALL ON bv1 TO regress_rls_carol;
SET SESSION AUTHORIZATION regress_rls_carol;
EXPLAIN (COSTS OFF) SELECT * FROM bv1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: views with security_barrier ON
QUERY PLAN
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
@@ -2021,11 +2346,13 @@ EXPLAIN (COSTS OFF) SELECT * FROM bv1 WHERE f_leak(b);
(6 rows)
SELECT * FROM bv1 WHERE f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: views with security_barrier ON
NOTICE: f_leak => c81e728d9d4c2f636f067f89cc14862c
-NOTICE: f_leak => a87ff679a2f3e71d9181a67b7542122c
NOTICE: f_leak => 1679091c5a880faf6fb5e6087eb1b2dc
-NOTICE: f_leak => c9f0f895fb98ab9159f51fd0297e236d
NOTICE: f_leak => d3d9446802a44259755d38e6d163e820
+NOTICE: f_leak => a87ff679a2f3e71d9181a67b7542122c
+NOTICE: f_leak => c9f0f895fb98ab9159f51fd0297e236d
a | b
----+----------------------------------
2 | c81e728d9d4c2f636f067f89cc14862c
@@ -2036,27 +2363,39 @@ NOTICE: f_leak => d3d9446802a44259755d38e6d163e820
(5 rows)
INSERT INTO bv1 VALUES (-1, 'xxx'); -- should fail view WCO
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "b1"
INSERT INTO bv1 VALUES (11, 'xxx'); -- should fail RLS check
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "b1"
INSERT INTO bv1 VALUES (12, 'xxx'); -- ok
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
EXPLAIN (COSTS OFF) UPDATE bv1 SET b = 'yyy' WHERE a = 4 AND f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-----------------------------------------------------------------------
Update on b1
-> Seq Scan on b1
Filter: ((a > 0) AND (a = 4) AND ((a % 2) = 0) AND f_leak(b))
-(3 rows)
+ Optimizer: Postgres-based planner
+(4 rows)
UPDATE bv1 SET b = 'yyy' WHERE a = 4 AND f_leak(b);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => a87ff679a2f3e71d9181a67b7542122c
EXPLAIN (COSTS OFF) DELETE FROM bv1 WHERE a = 6 AND f_leak(b);
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------------
Delete on b1
-> Seq Scan on b1
- Filter: ((a > 0) AND (a = 6) AND ((a % 2) = 0) AND f_leak(b))
-(3 rows)
+ Filter: (((a % 2) = 0) AND (a > 0) AND ((a = 6) AND f_leak(b)))
+ Optimizer: GPORCA
+(4 rows)
DELETE FROM bv1 WHERE a = 6 AND f_leak(b);
NOTICE: f_leak => 1679091c5a880faf6fb5e6087eb1b2dc
@@ -2110,6 +2449,8 @@ SELECT * FROM document WHERE did = 2;
-- alternative UPDATE path happens to be taken):
INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_carol', 'my first novel')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, dauthor = EXCLUDED.dauthor;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "document"
-- Violates USING qual for UPDATE policy p3.
--
@@ -2117,13 +2458,19 @@ ERROR: new row violates row-level security policy for table "document"
-- updated is not a "novel"/cid 11 (row is not leaked, even though we have
-- SELECT privileges sufficient to see the row in this instance):
INSERT INTO document VALUES (33, 22, 1, 'regress_rls_bob', 'okay science fiction'); -- preparation for next statement
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
INSERT INTO document VALUES (33, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'Some novel, replaces sci-fi') -- takes UPDATE path
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy (USING expression) for table "document"
-- Fine (we UPDATE, since INSERT WCOs and UPDATE security barrier quals + WCOs
-- not violated):
INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'my first novel')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-----------------+----------------
2 | 11 | 2 | regress_rls_bob | my first novel
@@ -2132,6 +2479,8 @@ INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'novel')
-- Fine (we INSERT, so "cid = 33" ("technology") isn't evaluated):
INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'some technology novel')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33 RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-----------------+-----------------------
78 | 11 | 1 | regress_rls_bob | some technology novel
@@ -2141,6 +2490,8 @@ INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'
-- case in respect of *existing* tuple):
INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'some technology novel')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33 RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-----------------+-----------------------
78 | 33 | 1 | regress_rls_bob | some technology novel
@@ -2150,12 +2501,16 @@ INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'
-- passing quals:
INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'some technology novel')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33 RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy (USING expression) for table "document"
-- Don't fail just because INSERT doesn't satisfy WITH CHECK option that
-- originated as a barrier/USING() qual from the UPDATE. Note that the UPDATE
-- path *isn't* taken, and so UPDATE-related policy does not apply:
INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'technology book, can only insert')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
did | cid | dlevel | dauthor | dtitle
-----+-----+--------+-----------------+----------------------------------
79 | 33 | 1 | regress_rls_bob | technology book, can only insert
@@ -2167,6 +2522,8 @@ INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'techno
-- irrelevant, in fact.
INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'technology book, can only insert')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy (USING expression) for table "document"
-- Test default USING qual enforced as WCO
SET SESSION AUTHORIZATION regress_rls_alice;
@@ -2189,6 +2546,8 @@ SET SESSION AUTHORIZATION regress_rls_bob;
-- UPDATE to make this fail:
INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'technology book, can only insert')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "document"
-- UPDATE path is taken here. Existing tuple passes, since its cid
-- corresponds to "novel", but default USING qual is enforced against
@@ -2196,6 +2555,8 @@ ERROR: new row violates row-level security policy for table "document"
-- explicit WCO), and so this fails:
INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'my first novel')
ON CONFLICT (did) DO UPDATE SET cid = EXCLUDED.cid, dtitle = EXCLUDED.dtitle RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "document"
SET SESSION AUTHORIZATION regress_rls_alice;
DROP POLICY p3_with_default ON document;
@@ -2210,22 +2571,32 @@ SET SESSION AUTHORIZATION regress_rls_bob;
-- Fails, since ALL WCO is enforced in insert path:
INSERT INTO document VALUES (80, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_carol', 'my first novel')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "document"
-- Fails, since ALL policy USING qual is enforced (existing, target tuple is in
-- violation, since it has the "manga" cid):
INSERT INTO document VALUES (4, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'my first novel')
ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy (USING expression) for table "document"
-- Fails, since ALL WCO are enforced:
INSERT INTO document VALUES (1, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'my first novel')
ON CONFLICT (did) DO UPDATE SET dauthor = 'regress_rls_carol';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "document"
--
-- ROLE/GROUP
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE z1 (a int, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE z2 (a int, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
GRANT SELECT ON z1,z2 TO regress_rls_group1, regress_rls_group2,
regress_rls_bob, regress_rls_carol;
INSERT INTO z1 VALUES
@@ -2252,7 +2623,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b);
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
PREPARE plancache_test AS SELECT * FROM z1 WHERE f_leak(b);
@@ -2262,23 +2633,26 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
PREPARE plancache_test2 AS WITH q AS MATERIALIZED (SELECT * FROM z1 WHERE f_leak(b)) SELECT * FROM q,z2;
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- -> Shared Scan (share slice:id 1:0)
+ QUERY PLAN
+------------------------------------------------------------
+ Sequence
+ -> Shared Scan (share slice:id 0:0)
+ -> Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Nested Loop
+ Join Filter: true
+ -> Shared Scan (share slice:id 0:0)
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Gather Motion 3:1 (slice2; segments: 3)
-> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ Optimizer: GPORCA
+(12 rows)
PREPARE plancache_test3 AS WITH q AS MATERIALIZED (SELECT * FROM z2) SELECT * FROM q,z1 WHERE f_leak(z1.b);
EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
@@ -2286,14 +2660,13 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
-----------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
+ Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Materialize
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ -> Seq Scan on z2
+ Optimizer: GPORCA
+(8 rows)
SET ROLE regress_rls_group1;
SELECT * FROM z1 WHERE f_leak(b);
@@ -2311,7 +2684,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b);
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test;
@@ -2320,36 +2693,38 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- -> Shared Scan (share slice:id 1:0)
+ QUERY PLAN
+------------------------------------------------------------
+ Sequence
+ -> Shared Scan (share slice:id 0:0)
+ -> Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Nested Loop
+ Join Filter: true
+ -> Shared Scan (share slice:id 0:0)
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Gather Motion 3:1 (slice2; segments: 3)
-> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ Optimizer: GPORCA
+(12 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
QUERY PLAN
-----------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
+ Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Materialize
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ -> Seq Scan on z2
+ Optimizer: GPORCA
+(8 rows)
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM z1 WHERE f_leak(b);
@@ -2367,7 +2742,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b);
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test;
@@ -2376,36 +2751,38 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- -> Shared Scan (share slice:id 1:0)
+ QUERY PLAN
+------------------------------------------------------------
+ Sequence
+ -> Shared Scan (share slice:id 0:0)
+ -> Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
+ -> Nested Loop
+ Join Filter: true
+ -> Shared Scan (share slice:id 0:0)
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Gather Motion 3:1 (slice2; segments: 3)
-> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ Optimizer: GPORCA
+(12 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
QUERY PLAN
-----------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
+ Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- -> Materialize
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ -> Seq Scan on z2
+ Optimizer: GPORCA
+(8 rows)
SET ROLE regress_rls_group2;
SELECT * FROM z1 WHERE f_leak(b);
@@ -2423,7 +2800,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b);
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test;
@@ -2432,36 +2809,38 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3)
- -> Nested Loop
- -> Shared Scan (share slice:id 1:0)
+ QUERY PLAN
+------------------------------------------------------------
+ Sequence
+ -> Shared Scan (share slice:id 0:0)
+ -> Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
+ -> Nested Loop
+ Join Filter: true
+ -> Shared Scan (share slice:id 0:0)
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Gather Motion 3:1 (slice2; segments: 3)
-> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ Optimizer: GPORCA
+(12 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
QUERY PLAN
-----------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
+ Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- -> Materialize
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z2
- Optimizer: Postgres query optimizer
-(9 rows)
+ -> Seq Scan on z2
+ Optimizer: GPORCA
+(8 rows)
--
-- Views should follow policy for view owner.
@@ -2491,7 +2870,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM rls_view;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: f_leak(b)
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
-- Query as view/table owner. Should return all records.
@@ -2515,7 +2894,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM rls_view;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: f_leak(b)
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
DROP VIEW rls_view;
@@ -2541,7 +2920,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM rls_view;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
-- Query as role that is not owner of table but is owner of view.
@@ -2562,7 +2941,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM rls_view;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
-- Query as role that is not the owner of the table or view without permissions.
@@ -2589,7 +2968,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM rls_view;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
SET SESSION AUTHORIZATION regress_rls_bob;
@@ -2599,6 +2978,8 @@ DROP VIEW rls_view;
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE x1 (a int, b text, c text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
GRANT ALL ON x1 TO PUBLIC;
INSERT INTO x1 VALUES
(1, 'abc', 'regress_rls_bob'),
@@ -2617,9 +2998,11 @@ CREATE POLICY p4 ON x1 FOR DELETE USING (a < 8);
ALTER TABLE x1 ENABLE ROW LEVEL SECURITY;
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM x1 WHERE f_leak(b) ORDER BY a ASC;
-NOTICE: f_leak => abc
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => bcd
NOTICE: f_leak => def
+NOTICE: f_leak => abc
NOTICE: f_leak => efg
NOTICE: f_leak => fgh
NOTICE: f_leak => fgh
@@ -2634,11 +3017,13 @@ NOTICE: f_leak => fgh
(6 rows)
UPDATE x1 SET b = b || '_updt' WHERE f_leak(b) RETURNING *;
-NOTICE: f_leak => abc
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => bcd
-NOTICE: f_leak => def
+NOTICE: f_leak => abc
NOTICE: f_leak => efg
NOTICE: f_leak => fgh
+NOTICE: f_leak => def
NOTICE: f_leak => fgh
a | b | c
---+----------+-------------------
@@ -2652,11 +3037,13 @@ NOTICE: f_leak => fgh
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM x1 WHERE f_leak(b) ORDER BY a ASC;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+NOTICE: f_leak => fgh_updt
NOTICE: f_leak => cde
NOTICE: f_leak => fgh
NOTICE: f_leak => bcd_updt
NOTICE: f_leak => def_updt
-NOTICE: f_leak => fgh_updt
NOTICE: f_leak => fgh_updt
a | b | c
---+----------+-------------------
@@ -2669,11 +3056,13 @@ NOTICE: f_leak => fgh_updt
(6 rows)
UPDATE x1 SET b = b || '_updt' WHERE f_leak(b) RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
NOTICE: f_leak => cde
+NOTICE: f_leak => fgh_updt
NOTICE: f_leak => fgh
NOTICE: f_leak => bcd_updt
NOTICE: f_leak => def_updt
-NOTICE: f_leak => fgh_updt
NOTICE: f_leak => fgh_updt
a | b | c
---+---------------+-------------------
@@ -2686,11 +3075,13 @@ NOTICE: f_leak => fgh_updt
(6 rows)
DELETE FROM x1 WHERE f_leak(b) RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
NOTICE: f_leak => cde_updt
+NOTICE: f_leak => fgh_updt_updt
NOTICE: f_leak => fgh_updt
NOTICE: f_leak => bcd_updt_updt
NOTICE: f_leak => def_updt_updt
-NOTICE: f_leak => fgh_updt_updt
NOTICE: f_leak => fgh_updt_updt
a | b | c
---+---------------+-------------------
@@ -2707,7 +3098,11 @@ NOTICE: f_leak => fgh_updt_updt
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE y1 (a int, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE y2 (a int, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
GRANT ALL ON y1, y2 TO regress_rls_bob;
CREATE POLICY p1 ON y1 FOR ALL USING (a % 2 = 0);
CREATE POLICY p2 ON y1 FOR SELECT USING (a > 2);
@@ -2724,6 +3119,8 @@ SET SESSION AUTHORIZATION regress_rls_alice;
CREATE VIEW rls_sbv WITH (security_barrier) AS
SELECT * FROM y1 WHERE f_leak(b);
EXPLAIN (COSTS OFF) SELECT * FROM rls_sbv WHERE (a = 1);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: views with security_barrier ON
QUERY PLAN
------------------------------------------
Gather Motion 1:1 (slice1; segments: 1)
@@ -2738,6 +3135,8 @@ SET SESSION AUTHORIZATION regress_rls_bob;
CREATE VIEW rls_sbv WITH (security_barrier) AS
SELECT * FROM y1 WHERE f_leak(b);
EXPLAIN (COSTS OFF) SELECT * FROM rls_sbv WHERE (a = 1);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: views with security_barrier ON
QUERY PLAN
------------------------------------------------------------------------
Gather Motion 1:1 (slice1; segments: 1)
@@ -2795,7 +3194,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM y2 WHERE f_leak(b);
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on y2
Filter: ((((a % 4) = 0) OR ((a % 3) = 0) OR ((a % 2) = 0)) AND f_leak(b))
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
--
@@ -2846,13 +3245,15 @@ EXPLAIN (COSTS OFF) SELECT * FROM y2 WHERE f_leak('abc');
---------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on y2
- Filter: (f_leak('abc'::text) AND (((a % 4) = 0) OR ((a % 3) = 0) OR ((a % 2) = 0)))
- Optimizer: Postgres query optimizer
+ Filter: ((((a % 4) = 0) OR ((a % 3) = 0) OR ((a % 2) = 0)) AND f_leak('abc'::text))
+ Optimizer: GPORCA
(4 rows)
CREATE TABLE test_qual_pushdown (
abc text
);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'abc' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO test_qual_pushdown VALUES ('abc'),('def');
ANALYZE test_qual_pushdown;
SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE f_leak(abc);
@@ -2874,7 +3275,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Seq Scan on test_qual_pushdown
Filter: f_leak(abc)
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(10 rows)
SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE f_leak(b);
@@ -2897,18 +3298,19 @@ NOTICE: f_leak => 98f13708210194c475687be6106a3b84
(0 rows)
EXPLAIN (COSTS OFF) SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE f_leak(b);
- QUERY PLAN
------------------------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
Hash Cond: (y2.b = test_qual_pushdown.abc)
- -> Seq Scan on y2
- Filter: ((((a % 4) = 0) OR ((a % 3) = 0) OR ((a % 2) = 0)) AND f_leak(b))
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: y2.b
+ -> Seq Scan on y2
+ Filter: ((((a % 4) = 0) OR ((a % 3) = 0) OR ((a % 2) = 0)) AND f_leak(b))
-> Hash
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on test_qual_pushdown
- Optimizer: Postgres query optimizer
-(9 rows)
+ -> Seq Scan on test_qual_pushdown
+ Optimizer: GPORCA
+(10 rows)
DROP TABLE test_qual_pushdown;
--
@@ -2920,6 +3322,8 @@ NOTICE: drop cascades to 2 other objects
DETAIL: drop cascades to table t2
drop cascades to table t3
CREATE TABLE t1 (a integer);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
GRANT SELECT ON t1 TO regress_rls_bob, regress_rls_carol;
CREATE POLICY p1 ON t1 TO regress_rls_bob USING ((a % 2) = 0);
CREATE POLICY p2 ON t1 TO regress_rls_carol USING ((a % 4) = 0);
@@ -2934,7 +3338,7 @@ EXPLAIN (COSTS OFF) EXECUTE role_inval;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on t1
Filter: ((a % 2) = 0)
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
-- Change to regress_rls_carol
@@ -2946,7 +3350,7 @@ EXPLAIN (COSTS OFF) EXECUTE role_inval;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on t1
Filter: ((a % 4) = 0)
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
-- Change back to regress_rls_bob
@@ -2958,7 +3362,7 @@ EXPLAIN (COSTS OFF) EXECUTE role_inval;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on t1
Filter: ((a % 2) = 0)
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
--
@@ -2967,6 +3371,8 @@ EXPLAIN (COSTS OFF) EXECUTE role_inval;
RESET SESSION AUTHORIZATION;
DROP TABLE t1 CASCADE;
CREATE TABLE t1 (a integer, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY p1 ON t1 USING (a % 2 = 0);
ALTER TABLE t1 ENABLE ROW LEVEL SECURITY;
GRANT ALL ON t1 TO regress_rls_bob;
@@ -3001,18 +3407,24 @@ NOTICE: f_leak => 98f13708210194c475687be6106a3b84
EXPLAIN (COSTS OFF)
WITH cte1 AS MATERIALIZED (SELECT * FROM t1 WHERE f_leak(b)) SELECT * FROM cte1;
- QUERY PLAN
------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on t1
- Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres query optimizer
-(5 rows)
+ -> Sequence
+ -> Shared Scan (share slice:id 1:0)
+ -> Seq Scan on t1
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Shared Scan (share slice:id 1:0)
+ Optimizer: GPORCA
+(7 rows)
WITH cte1 AS (UPDATE t1 SET a = a + 1 RETURNING *) SELECT * FROM cte1; --fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "t1"
WITH cte1 AS (UPDATE t1 SET a = a RETURNING *) SELECT * FROM cte1; --ok
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
a | b
----+----------------------------------
0 | cfcd208495d565ef66e7dff9f98764da
@@ -3029,8 +3441,12 @@ WITH cte1 AS (UPDATE t1 SET a = a RETURNING *) SELECT * FROM cte1; --ok
(11 rows)
WITH cte1 AS (INSERT INTO t1 VALUES (21, 'Fail') RETURNING *) SELECT * FROM cte1; --fail
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "t1"
WITH cte1 AS (INSERT INTO t1 VALUES (20, 'Success') RETURNING *) SELECT * FROM cte1; --ok
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
a | b
----+---------
20 | Success
@@ -3046,6 +3462,8 @@ SELECT polname, relname
FROM pg_policy pol
JOIN pg_class pc ON (pc.oid = pol.polrelid)
WHERE relname = 't1';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
polname | relname
---------+---------
p1 | t1
@@ -3056,6 +3474,8 @@ SELECT polname, relname
FROM pg_policy pol
JOIN pg_class pc ON (pc.oid = pol.polrelid)
WHERE relname = 't1';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
polname | relname
---------+---------
p2 | t1
@@ -3066,14 +3486,16 @@ SELECT polname, relname
--
SET SESSION AUTHORIZATION regress_rls_bob;
CREATE TABLE t2 (a integer, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO t2 (SELECT * FROM t1);
EXPLAIN (COSTS OFF) INSERT INTO t2 (SELECT * FROM t1);
- QUERY PLAN
--------------------------------------
+ QUERY PLAN
+-------------------------------
Insert on t2
-> Seq Scan on t1
Filter: ((a % 2) = 0)
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(4 rows)
SELECT * FROM t2;
@@ -3098,10 +3520,11 @@ EXPLAIN (COSTS OFF) SELECT * FROM t2;
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on t2
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(3 rows)
CREATE TABLE t3 AS SELECT * FROM t1;
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause. Creating a NULL policy entry.
SELECT * FROM t3;
a | b
----+----------------------------------
@@ -3120,6 +3543,7 @@ SELECT * FROM t3;
(12 rows)
SELECT * INTO t4 FROM t1;
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause. Creating a NULL policy entry.
SELECT * FROM t4;
a | b
----+----------------------------------
@@ -3142,7 +3566,11 @@ SELECT * FROM t4;
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE blog (id integer, author text, post text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE comment (blog_id integer, message text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'blog_id' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
GRANT ALL ON blog, comment TO regress_rls_bob;
CREATE POLICY blog_1 ON blog USING (id % 2 = 0);
ALTER TABLE blog ENABLE ROW LEVEL SECURITY;
@@ -3235,7 +3663,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM t1;
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on t1
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(3 rows)
-- Check that default deny does not apply to table owner.
@@ -3272,7 +3700,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM t1;
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on t1
- Optimizer: Postgres query optimizer
+ Optimizer: GPORCA
(3 rows)
-- Check that default deny applies to non-owner/non-superuser when RLS on.
@@ -3284,12 +3712,13 @@ SELECT * FROM t1;
(0 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1;
- QUERY PLAN
--------------------------------------
- Result
- One-Time Filter: false
- Optimizer: Postgres query optimizer
-(3 rows)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on t1
+ Filter: false
+ Optimizer: GPORCA
+(4 rows)
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM t1;
@@ -3298,12 +3727,13 @@ SELECT * FROM t1;
(0 rows)
EXPLAIN (COSTS OFF) SELECT * FROM t1;
- QUERY PLAN
--------------------------------------
- Result
- One-Time Filter: false
- Optimizer: Postgres query optimizer
-(3 rows)
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on t1
+ Filter: false
+ Optimizer: GPORCA
+(4 rows)
--
-- COPY TO/FROM
@@ -3312,6 +3742,8 @@ RESET SESSION AUTHORIZATION;
DROP TABLE copy_t CASCADE;
ERROR: table "copy_t" does not exist
CREATE TABLE copy_t (a integer, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY p1 ON copy_t USING (a % 2 = 0);
ALTER TABLE copy_t ENABLE ROW LEVEL SECURITY;
GRANT ALL ON copy_t TO regress_rls_bob, regress_rls_exempt_user;
@@ -3397,6 +3829,8 @@ ERROR: permission denied for table copy_t
RESET SESSION AUTHORIZATION;
SET row_security TO ON;
CREATE TABLE copy_rel_to (a integer, b text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY p1 ON copy_rel_to USING (a % 2 = 0);
ALTER TABLE copy_rel_to ENABLE ROW LEVEL SECURITY;
GRANT ALL ON copy_rel_to TO regress_rls_bob, regress_rls_exempt_user;
@@ -3465,6 +3899,8 @@ DROP TABLE copy_rel_to CASCADE;
-- Check WHERE CURRENT OF
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE current_check (currentid int, payload text, rlsuser text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'currentid' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
GRANT ALL ON current_check TO PUBLIC;
INSERT INTO current_check VALUES
(1, 'abc', 'regress_rls_bob'),
@@ -3486,6 +3922,8 @@ SELECT * FROM current_check;
-- Cannot UPDATE row 2
UPDATE current_check SET payload = payload || '_new' WHERE currentid = 2 RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
currentid | payload | rlsuser
-----------+---------+---------
(0 rows)
@@ -3502,6 +3940,8 @@ FETCH ABSOLUTE 1 FROM current_check_cursor;
-- Still cannot UPDATE row 2 through cursor
UPDATE current_check SET payload = payload || '_new' WHERE CURRENT OF current_check_cursor RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
currentid | payload | rlsuser
-----------+---------+---------
(0 rows)
@@ -3514,6 +3954,8 @@ FETCH RELATIVE 1 FROM current_check_cursor;
(1 row)
UPDATE current_check SET payload = payload || '_new' WHERE CURRENT OF current_check_cursor RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
currentid | payload | rlsuser
-----------+---------+-----------------
4 | def_new | regress_rls_bob
@@ -3528,14 +3970,23 @@ SELECT * FROM current_check;
-- Plan should be a subquery TID scan
EXPLAIN (COSTS OFF) UPDATE current_check SET payload = payload WHERE CURRENT OF current_check_cursor;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
-------------------------------------------------------------
Update on current_check
-> Tid Scan on current_check
TID Cond: CURRENT OF current_check_cursor
Filter: ((currentid = 4) AND ((currentid % 2) = 0))
-(4 rows)
+ Optimizer: Postgres-based planner
+(5 rows)
+-- start_ignore
+-- GPDB: does not support backwards scans, commit and restart
+COMMIT;
+BEGIN;
+DECLARE current_check_cursor SCROLL CURSOR FOR SELECT * FROM current_check;
+-- end_ignore
-- Similarly can only delete row 4
FETCH ABSOLUTE 1 FROM current_check_cursor;
currentid | payload | rlsuser
@@ -3544,6 +3995,8 @@ FETCH ABSOLUTE 1 FROM current_check_cursor;
(1 row)
DELETE FROM current_check WHERE CURRENT OF current_check_cursor RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: CURRENT OF
currentid | payload | rlsuser
-----------+---------+---------
(0 rows)
@@ -3555,6 +4008,8 @@ FETCH RELATIVE 1 FROM current_check_cursor;
(1 row)
DELETE FROM current_check WHERE CURRENT OF current_check_cursor RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: CURRENT OF
currentid | payload | rlsuser
-----------+---------+-----------------
4 | def_new | regress_rls_bob
@@ -3583,6 +4038,8 @@ SELECT row_security_active('current_check');
SELECT attname, most_common_vals FROM pg_stats
WHERE tablename = 'current_check'
ORDER BY 1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: views with security_barrier ON
attname | most_common_vals
-----------+-------------------
currentid |
@@ -3601,6 +4058,8 @@ SELECT row_security_active('current_check');
SELECT attname, most_common_vals FROM pg_stats
WHERE tablename = 'current_check'
ORDER BY 1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: views with security_barrier ON
attname | most_common_vals
---------+------------------
(0 rows)
@@ -3610,10 +4069,13 @@ SELECT attname, most_common_vals FROM pg_stats
--
BEGIN;
CREATE TABLE coll_t (c) AS VALUES ('bar'::text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause. Creating a NULL policy entry.
CREATE POLICY coll_p ON coll_t USING (c < ('foo'::text COLLATE "C"));
ALTER TABLE coll_t ENABLE ROW LEVEL SECURITY;
GRANT SELECT ON coll_t TO regress_rls_alice;
SELECT (string_to_array(polqual, ':'))[7] AS inputcollid FROM pg_policy WHERE polrelid = 'coll_t'::regclass;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
inputcollid
------------------
inputcollid 950
@@ -3621,6 +4083,8 @@ SELECT (string_to_array(polqual, ':'))[7] AS inputcollid FROM pg_policy WHERE po
SET SESSION AUTHORIZATION regress_rls_alice;
SELECT * FROM coll_t;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
c
-----
bar
@@ -3635,12 +4099,15 @@ BEGIN;
CREATE ROLE regress_rls_eve;
CREATE ROLE regress_rls_frank;
CREATE TABLE tbl1 (c) AS VALUES ('bar'::text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause. Creating a NULL policy entry.
GRANT SELECT ON TABLE tbl1 TO regress_rls_eve;
CREATE POLICY P ON tbl1 TO regress_rls_eve, regress_rls_frank USING (true);
SELECT refclassid::regclass, deptype
FROM pg_depend
WHERE classid = 'pg_policy'::regclass
AND refobjid = 'tbl1'::regclass;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
refclassid | deptype
------------+---------
pg_class | a
@@ -3650,6 +4117,8 @@ SELECT refclassid::regclass, deptype
FROM pg_shdepend
WHERE classid = 'pg_policy'::regclass
AND refobjid IN ('regress_rls_eve'::regrole, 'regress_rls_frank'::regrole);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
refclassid | deptype
------------+---------
pg_authid | r
@@ -3687,11 +4156,13 @@ ROLLBACK; -- cleanup
--
BEGIN;
CREATE TABLE t (c int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY p ON t USING (c % 2 = 1);
ALTER TABLE t ENABLE ROW LEVEL SECURITY;
SAVEPOINT q;
CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD
- SELECT * FROM generate_series(1,5) t0(c); -- fails due to row-level security enabled
+ SELECT * FROM generate_series(1,5) t0(c); -- fails due to row level security enabled
ERROR: could not convert table "t" to a view because it has row security enabled
ROLLBACK TO q;
ALTER TABLE t DISABLE ROW LEVEL SECURITY;
@@ -3709,6 +4180,7 @@ ROLLBACK;
--
BEGIN;
CREATE TABLE t (c) AS VALUES ('bar'::text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause. Creating a NULL policy entry.
CREATE POLICY p ON t USING (max(c)); -- fails: aggregate functions are not allowed in policy expressions
ERROR: aggregate functions are not allowed in policy expressions
ROLLBACK;
@@ -3717,7 +4189,11 @@ ROLLBACK;
--
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE r1 (a int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE r2 (a int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
GRANT ALL ON r1, r2 TO regress_rls_bob;
@@ -3745,19 +4221,27 @@ SELECT * FROM r2;
-- r2 is read-only
INSERT INTO r2 VALUES (2); -- Not allowed
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "r2"
UPDATE r2 SET a = 2 RETURNING *; -- Updates nothing
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
a
---
(0 rows)
DELETE FROM r2 RETURNING *; -- Deletes nothing
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: RETURNING clause
a
---
(0 rows)
-- r2 can be used as a non-target relation in DML
INSERT INTO r1 SELECT a + 1 FROM r2 RETURNING *; -- OK
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
a
----
11
@@ -3765,6 +4249,8 @@ INSERT INTO r1 SELECT a + 1 FROM r2 RETURNING *; -- OK
(2 rows)
UPDATE r1 SET a = r2.a + 2 FROM r2 WHERE r1.a = r2.a RETURNING *; -- OK
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
a | a
----+----
12 | 10
@@ -3772,6 +4258,8 @@ UPDATE r1 SET a = r2.a + 2 FROM r2 WHERE r1.a = r2.a RETURNING *; -- OK
(2 rows)
DELETE FROM r1 USING r2 WHERE r1.a = r2.a + 2 RETURNING *; -- OK
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: RETURNING clause
a | a
----+----
12 | 10
@@ -3801,6 +4289,8 @@ DROP TABLE r2;
SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security = on;
CREATE TABLE r1 (a int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO r1 VALUES (10), (20);
CREATE POLICY p1 ON r1 USING (false);
ALTER TABLE r1 ENABLE ROW LEVEL SECURITY;
@@ -3813,9 +4303,13 @@ TABLE r1;
-- RLS error
INSERT INTO r1 VALUES (1);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "r1"
-- No error (unable to see any rows to update)
UPDATE r1 SET a = 1;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
TABLE r1;
a
---
@@ -3847,6 +4341,9 @@ SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security = on;
CREATE TABLE r1 (a int PRIMARY KEY);
CREATE TABLE r2 (a int REFERENCES r1);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
-- Create policies on r2 which prevent the
@@ -3881,6 +4378,9 @@ DROP TABLE r1;
-- Ensure cascaded DELETE works
CREATE TABLE r1 (a int PRIMARY KEY);
CREATE TABLE r2 (a int REFERENCES r1 ON DELETE CASCADE);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
-- Create policies on r2 which prevent the
@@ -3908,6 +4408,9 @@ DROP TABLE r1;
-- Ensure cascaded UPDATE works
CREATE TABLE r1 (a int PRIMARY KEY);
CREATE TABLE r2 (a int REFERENCES r1 ON UPDATE CASCADE);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
-- Create policies on r2 which prevent the
@@ -3939,12 +4442,16 @@ DROP TABLE r1;
SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security = on;
CREATE TABLE r1 (a int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY p1 ON r1 FOR SELECT USING (false);
CREATE POLICY p2 ON r1 FOR INSERT WITH CHECK (true);
ALTER TABLE r1 ENABLE ROW LEVEL SECURITY;
ALTER TABLE r1 FORCE ROW LEVEL SECURITY;
-- Works fine
INSERT INTO r1 VALUES (10), (20);
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
-- No error, but no rows
TABLE r1;
a
@@ -3959,6 +4466,8 @@ HINT: To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW
SET row_security = on;
-- Error
INSERT INTO r1 VALUES (10), (20) RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "r1"
DROP TABLE r1;
--
@@ -3976,6 +4485,8 @@ ALTER TABLE r1 ENABLE ROW LEVEL SECURITY;
ALTER TABLE r1 FORCE ROW LEVEL SECURITY;
-- Works fine
UPDATE r1 SET a = 30;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
-- Show updated rows
ALTER TABLE r1 NO FORCE ROW LEVEL SECURITY;
TABLE r1;
@@ -3986,6 +4497,8 @@ TABLE r1;
-- reset value in r1 for test with RETURNING
UPDATE r1 SET a = 10;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Operator Update on replicated tables not supported
-- Verify row reset
TABLE r1;
a
@@ -3996,30 +4509,44 @@ TABLE r1;
ALTER TABLE r1 FORCE ROW LEVEL SECURITY;
-- Error
UPDATE r1 SET a = 30 RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "r1"
-- UPDATE path of INSERT ... ON CONFLICT DO UPDATE should also error out
INSERT INTO r1 VALUES (10)
ON CONFLICT (a) DO UPDATE SET a = 30 RETURNING *;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "r1"
-- Should still error out without RETURNING (use of arbiter always requires
-- SELECT permissions)
INSERT INTO r1 VALUES (10)
ON CONFLICT (a) DO UPDATE SET a = 30;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "r1"
INSERT INTO r1 VALUES (10)
ON CONFLICT ON CONSTRAINT r1_pkey DO UPDATE SET a = 30;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
ERROR: new row violates row-level security policy for table "r1"
DROP TABLE r1;
-- Check dependency handling
RESET SESSION AUTHORIZATION;
CREATE TABLE dep1 (c1 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE dep2 (c1 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY dep_p1 ON dep1 TO regress_rls_bob USING (c1 > (select max(dep2.c1) from dep2));
ALTER POLICY dep_p1 ON dep1 TO regress_rls_bob,regress_rls_carol;
-- Should return one
SELECT count(*) = 1 FROM pg_depend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_class WHERE relname = 'dep2');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
?column?
----------
t
@@ -4030,6 +4557,8 @@ ALTER POLICY dep_p1 ON dep1 USING (true);
SELECT count(*) = 1 FROM pg_shdepend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_authid WHERE rolname = 'regress_rls_bob');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
?column?
----------
t
@@ -4039,6 +4568,8 @@ SELECT count(*) = 1 FROM pg_shdepend
SELECT count(*) = 1 FROM pg_shdepend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_authid WHERE rolname = 'regress_rls_carol');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
?column?
----------
t
@@ -4048,6 +4579,8 @@ SELECT count(*) = 1 FROM pg_shdepend
SELECT count(*) = 0 FROM pg_depend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_class WHERE relname = 'dep2');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
?column?
----------
t
@@ -4058,7 +4591,11 @@ RESET SESSION AUTHORIZATION;
CREATE ROLE regress_rls_dob_role1;
CREATE ROLE regress_rls_dob_role2;
CREATE TABLE dob_t1 (c1 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE dob_t2 (c1 int) PARTITION BY RANGE (c1);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1 USING (true);
DROP OWNED BY regress_rls_dob_role1;
DROP POLICY p1 ON dob_t1; -- should fail, already gone
@@ -4082,8 +4619,12 @@ DROP USER regress_rls_dob_role1;
DROP USER regress_rls_dob_role2;
-- Bug #15708: view + table with RLS should check policies as view owner
CREATE TABLE ref_tbl (a int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO ref_tbl VALUES (1);
CREATE TABLE rls_tbl (a int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO rls_tbl VALUES (10);
ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY;
CREATE POLICY p1 ON rls_tbl USING (EXISTS (SELECT 1 FROM ref_tbl));
@@ -4096,8 +4637,12 @@ SET SESSION AUTHORIZATION regress_rls_alice;
SELECT * FROM ref_tbl; -- Permission denied
ERROR: permission denied for table ref_tbl
SELECT * FROM rls_tbl; -- Permission denied
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
ERROR: permission denied for table rls_tbl
SELECT * FROM rls_view; -- OK
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
a
----
10
@@ -4109,6 +4654,8 @@ DROP TABLE rls_tbl;
DROP TABLE ref_tbl;
-- Leaky operator test
CREATE TABLE rls_tbl (a int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
INSERT INTO rls_tbl SELECT x/10 FROM generate_series(1, 100) x;
ANALYZE rls_tbl;
ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY;
@@ -4131,13 +4678,19 @@ DROP TABLE rls_tbl;
-- Bug #16006: whole-row Vars in a policy don't play nice with sub-selects
SET SESSION AUTHORIZATION regress_rls_alice;
CREATE TABLE rls_tbl (a int, b int, c int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE POLICY p1 ON rls_tbl USING (rls_tbl >= ROW(1,1,1));
ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY;
ALTER TABLE rls_tbl FORCE ROW LEVEL SECURITY;
INSERT INTO rls_tbl SELECT 10, 20, 30;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
EXPLAIN (VERBOSE, COSTS OFF)
INSERT INTO rls_tbl
SELECT * FROM (SELECT b, c FROM rls_tbl ORDER BY a) ss;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
QUERY PLAN
--------------------------------------------------------------------------
Insert on regress_rls_schema.rls_tbl
@@ -4152,13 +4705,16 @@ INSERT INTO rls_tbl
-> Seq Scan on regress_rls_schema.rls_tbl rls_tbl_1
Output: rls_tbl_1.b, rls_tbl_1.c, rls_tbl_1.a
Filter: (rls_tbl_1.* >= ROW(1, 1, 1))
- Optimizer: Postgres query optimizer
- Settings: gp_enable_relsize_collection=on
-(14 rows)
+ Optimizer: Postgres-based planner
+(13 rows)
INSERT INTO rls_tbl
SELECT * FROM (SELECT b, c FROM rls_tbl ORDER BY a) ss;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
SELECT * FROM rls_tbl;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: ROW EXPRESSION
a | b | c
----+----+----
10 | 20 | 30
@@ -4169,6 +4725,8 @@ DROP TABLE rls_tbl;
RESET SESSION AUTHORIZATION;
-- CVE-2023-2455: inlining an SRF may introduce an RLS dependency
create table rls_t (c text);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
insert into rls_t values ('invisible to bob');
alter table rls_t enable row level security;
grant select on rls_t to regress_rls_alice, regress_rls_bob;
@@ -4180,6 +4738,8 @@ create function rls_f () returns setof rls_t
prepare q as select current_user, * from rls_f();
set role regress_rls_alice;
execute q;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
current_user | c
-------------------+------------------
regress_rls_alice | invisible to bob
@@ -4187,6 +4747,8 @@ execute q;
set role regress_rls_bob;
execute q;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
current_user | c
--------------+---
(0 rows)
@@ -4240,15 +4802,20 @@ DROP ROLE regress_rls_group2;
-- pg_dump/pg_restore
CREATE SCHEMA regress_rls_schema;
CREATE TABLE rls_tbl (c1 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY;
CREATE POLICY p1 ON rls_tbl USING (c1 > 5);
CREATE POLICY p2 ON rls_tbl FOR SELECT USING (c1 <= 3);
CREATE POLICY p3 ON rls_tbl FOR UPDATE USING (c1 <= 3) WITH CHECK (c1 > 5);
CREATE POLICY p4 ON rls_tbl FOR DELETE USING (c1 <= 3);
CREATE TABLE rls_tbl_force (c1 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
ALTER TABLE rls_tbl_force ENABLE ROW LEVEL SECURITY;
ALTER TABLE rls_tbl_force FORCE ROW LEVEL SECURITY;
CREATE POLICY p1 ON rls_tbl_force USING (c1 = 5) WITH CHECK (c1 < 5);
CREATE POLICY p2 ON rls_tbl_force FOR SELECT USING (c1 = 8);
CREATE POLICY p3 ON rls_tbl_force FOR UPDATE USING (c1 = 8) WITH CHECK (c1 >= 5);
CREATE POLICY p4 ON rls_tbl_force FOR DELETE USING (c1 = 8);
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/greenplum_schedule b/src/test/regress/greenplum_schedule
index 42ebacfd14..1db65cd253 100755
--- a/src/test/regress/greenplum_schedule
+++ b/src/test/regress/greenplum_schedule
@@ -199,7 +199,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 qp_select partition_prune_opfamily gp_tsrf qp_join_union_all qp_join_universal
+test: qp_olap_mdqa qp_misc gp_recursive_cte qp_dml_joins qp_skew qp_select partition_prune_opfamily gp_tsrf qp_join_union_all qp_join_universal qp_rowsecurity
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_rowsecurity.sql b/src/test/regress/sql/qp_rowsecurity.sql
new file mode 100644
index 0000000000..ca644cd5c9
--- /dev/null
+++ b/src/test/regress/sql/qp_rowsecurity.sql
@@ -0,0 +1,466 @@
+--------------------------------------------------------------------------------
+-- Current implementation only supports SELECT and DELETE queries.
+-- Foreign Scan / Dynamic Foreign Scan with row level security is not supported.
+-- Any sort of index plans will not be generated by ORCA
+-- for a relation having RLS enabled.
+-- If the security quals contains sublinks then ORCA will fall back to planner.
+--------------------------------------------------------------------------------
+-- NOTE:
+-- The file rowsecurity.sql has a wider test coverage but the issue is most of
+-- the queries in that file are falling back to planner because of not supported
+-- features by ORCA such as non default collation, VIEW with WITH CHECK OPTION,
+-- Queries on coordinator-only tables, Query has row level security enabled and
+-- security quals contain sublinks etc. So rowsecurity.sql file is not providing
+-- much help in testing ORCA side changes.
+-- But on a high level some of the tests covered in rowsecurity.sql is
+ -- Table inheritance and RLS policy
+ -- There are tests related to partition relations but the test cases are
+ -- falling back due to various reasons like non default collation, VIEW with
+ -- WITH CHECK OPTION.
+ -- CTE with RLS
+ -- RLS with joins
+ -- View with WITH CHECK OPTION
+ -- Recursive Queries
+ -- Testing the output of queries by granting permissions to various roles
+ -- and groups and superuser database non-superuser with bypass privilege can
+ -- bypass RLS policy when disabled
+ --- RLS policy does not apply to table owner when RLS enabled.
+ -- RLS policy does not apply to table owner when RLS disabled.
+ -- only owner can change policies
+ -- FORCE ROW LEVEL SECURITY applies RLS to owners too
+ -- PREPARE statements
+ -- Duplicate policy names
+ -- Multiple policies on a table
+ -- INSERT in a table with no RLS by selecting from a relation having RLS
+ -- Default Deny policy
+ -- UPDATE/UPDATE with FROM clause/INSERT with Row-level security etc etc.
+-- So the tests that have been covered in qp_rowsecurity are mostly similar to
+-- that in rowsecurity.sql but since they are not falling back to planner, able
+-- to verify the ORCA side changes.
+
+--------------------------------------------------------------------------------
+----- SELECT queries on relation having row level security enabled -------------
+--------------------------------------------------------------------------------
+set optimizer_trace_fallback to on;
+create user new_user;
+create table foo_rls ( a int, b int, c int) distributed by (a);
+create table bar_rls ( p int, q int) distributed by (p);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+insert into foo_rls values (NULL,50,500);;
+insert into foo_rls values (NULL,60,NULL);
+insert into foo_rls values (NULL,70,NULL);
+insert into foo_rls values (NULL,NULL,600);
+insert into foo_rls values (NULL,NULL,700);
+vacuum analyze foo_rls;
+grant select on foo_rls to new_user;
+grant select on bar_rls to new_user;
+alter table foo_rls enable row level security;
+
+CREATE OR REPLACE FUNCTION leak_data(int) RETURNS boolean AS $$
+BEGIN
+ RAISE NOTICE 'Value of column is: %',$1;
+RETURN true;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Permissive policy
+create policy p1 on foo_rls using (a * 10 = b and c > 300);
+set session authorization new_user;
+-- Query plan will have the filter defined in the policy [(a * 10) = b) AND (c > 300)]
+-- before query filter [leak_data(a)]
+explain (costs off ) select * from foo_rls where leak_data(a);
+select * from foo_rls where leak_data(a);
+reset session authorization;
+drop policy p1 on foo_rls;
+
+-- All permissive policies which are applicable to a given query
+-- will be combined together using the Boolean “OR” operator
+create policy p1 on foo_rls as permissive for select using (a * 10 >= 30 );
+create policy p2 on foo_rls as permissive for select
+using (LEAST(a,b) >= 2);
+set session authorization new_user;
+-- The filter defined in the two permissive policies will be OR'ed together
+explain (costs off )select * from foo_rls where leak_data(c);
+select * from foo_rls where leak_data(c);
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+
+-- Restrictive policies
+-- There needs to be at least one permissive policy to grant access to records
+create policy p1 on foo_rls as restrictive for select using (a > 3);
+create policy p2 on foo_rls as restrictive for select using (b > 35);
+set session authorization new_user;
+-- No permissive policies defined on the relation, so no records will be
+-- returned
+explain (costs off ) select * from foo_rls where leak_data(a);
+reset session authorization ;
+create policy p3 on foo_rls as permissive for select using (c % 100 = 0);
+set session authorization new_user;
+-- Now after creating a permissive policy, the query will return records and the
+-- restrictive policies will be AND'ed with permissive policies
+explain (costs off ) select * from foo_rls where leak_data(a);
+select * from foo_rls where leak_data(a);
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+drop policy p3 on foo_rls;
+
+-- The RTE of the relation containing security quals is present inside a
+-- RTE_SUBQUERY rtekind
+create policy p1 on foo_rls as permissive for select using (b + 1 = 4 );
+create policy p2 on foo_rls as permissive for select using (b is distinct
+from c);
+set session authorization new_user;
+explain (costs off ) select * from (select * from foo_rls) t1, bar_rls where
+t1.a=bar_rls.p and bar_rls.q is null and leak_data(c);
+
+-- The RTE of the relation containing security quals is present inside a
+-- SUBLINK node
+explain (costs off ) select * from bar_rls where bar_rls.p in (select a
+from foo_rls where abs(a) >= 10 and leak_data(c)) and bar_rls.q is not null;
+
+-- The RTE of the relation containing security quals is present inside a CTE
+explain (costs off ) with cte as (select * from foo_rls where
+a > LEAST(a,b)) select * from cte left join bar_rls on
+cte.a=bar_rls.p and q = 10 and leak_data(cte.a);
+
+reset session authorization;
+drop policy p1 on foo_rls;
+drop policy p2 on foo_rls;
+
+-- ORCA will fallback to planner if SUBLINK is present inside a security qual
+create policy p1 on foo_rls as permissive for select using (a in (select p
+from bar_rls));
+set session authorization new_user;
+explain (costs off ) select * from foo_rls;
+reset session authorization;
+drop policy p1 on foo_rls;
+
+-- ORCA will not generate any index plans when row level security is enabled
+-- for a relation
+create policy p1 on foo_rls as permissive for select using (b = 10);
+create index btindex on foo_rls using btree(a);
+-- Index Scan is generated by ORCA when the owner of the table runs the query
+set enable_seqscan to off;
+explain (costs off) select * from foo_rls where a is null and b = 10;
+-- Index Scan is not generated by ORCA when RLS enabled by ORCA
+set session authorization new_user;
+explain (costs off) select * from foo_rls where a is null;
+reset session authorization;
+-- Index Only Scan is generated by ORCA when the owner of the table runs the query
+set optimizer_enable_indexscan to off;
+explain (costs off) select a from foo_rls where a is null;
+-- Index Only Scan is not generated by ORCA when RLS enabled
+set session authorization new_user;
+explain (costs off) select a from foo_rls where a is null;
+reset session authorization;
+set optimizer_enable_indexscan to on;
+reset enable_seqscan;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+drop table bar_rls cascade;
+
+--------------------------------------------------------------------------------
+----------- SELECT queries on partitioned tables with RLS enabled --------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20), default partition other_part);
+create table bar_part_rls ( p int, q int) distributed by (p) partition by range(q)
+(start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,5)i;
+insert into foo_part_rls values (NULL,50,500);;
+insert into foo_part_rls values (NULL,60,NULL);
+insert into foo_part_rls values (NULL,70,NULL);
+insert into foo_part_rls values (NULL,NULL,600);
+insert into foo_part_rls values (NULL,NULL,700);
+analyze foo_part_rls;
+grant select on foo_part_rls to new_user;
+grant select on bar_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+
+-- Permissive policy
+create policy p1 on foo_part_rls using (a * 10 = b and c > 300);
+set session authorization new_user;
+-- Query plan will have the filter defined in the policy [(a * 10) = b) AND (c > 300)]
+-- before query filter [leak_data(a)]
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+select * from foo_part_rls where leak_data(a);
+reset session authorization;
+drop policy p1 on foo_part_rls;
+
+-- All permissive policies which are applicable to a given query
+-- will be combined together using the Boolean “OR” operator
+create policy p1 on foo_part_rls as permissive for select using (a * 10 >= 30 );
+create policy p2 on foo_part_rls as permissive for select
+using (LEAST(a,b) >= 2);
+set session authorization new_user;
+-- The filter defined in the two permissive policies will be OR'ed together
+explain (costs off )select * from foo_part_rls where leak_data(c);
+select * from foo_part_rls where leak_data(c);
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+
+-- Restrictive policies
+-- There needs to be at least one permissive policy to grant access to records
+create policy p1 on foo_part_rls as restrictive for select using (a > 3);
+create policy p2 on foo_part_rls as restrictive for select using (b > 35);
+set session authorization new_user;
+-- No permissive policies defined on the relation, so no records will be
+-- returned
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+reset session authorization ;
+create policy p3 on foo_part_rls as permissive for select using (c % 100 = 0);
+set session authorization new_user;
+-- Now after creating a permissive policy, the query will return records and the
+-- restrictive policies will be AND'ed with permissive policies
+explain (costs off ) select * from foo_part_rls where leak_data(a);
+select * from foo_part_rls where leak_data(a);
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+drop policy p3 on foo_part_rls;
+
+-- The RTE of the relation containing security quals is present inside a
+-- RTE_SUBQUERY rtekind
+create policy p1 on foo_part_rls as permissive for select using (b + 1 = 4 );
+create policy p2 on foo_part_rls as permissive for select using (b is distinct
+from c);
+set session authorization new_user;
+explain (costs off ) select * from (select * from foo_part_rls) t1, bar_part_rls
+where t1.a=bar_part_rls.p and bar_part_rls.q is not null and leak_data(c);
+
+-- The RTE of the relation containing security quals is present inside a
+-- SUBLINK node
+explain (costs off ) select * from bar_part_rls where bar_part_rls.p in
+(select a from foo_part_rls where abs(a) >= 10 and leak_data(c)) and
+bar_part_rls.q is not null;
+
+-- The RTE of the relation containing security quals is present inside a CTE
+explain (costs off ) with cte as (select * from foo_part_rls where
+a > LEAST(a,b)) select * from cte left join bar_part_rls on
+cte.a=bar_part_rls.p and q = 10 and leak_data(cte.a);
+
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop policy p2 on foo_part_rls;
+
+-- ORCA will fallback to planner if SUBLINK is present inside a security qual
+create policy p1 on foo_part_rls as permissive for select using (a in
+(select p from bar_part_rls));
+set session authorization new_user;
+explain (costs off ) select * from foo_part_rls where foo_part_rls.b <15;
+reset session authorization;
+drop policy p1 on foo_part_rls;
+
+-- ORCA will not generate any index plans when row level security is enabled
+-- for a relation
+create policy p1 on foo_part_rls as permissive for select using (b = 10);
+create index btindex on foo_part_rls using btree(a);
+-- Dynamic Index Scan is generated by ORCA when the owner of the table runs
+-- the query
+set enable_seqscan to off;
+explain (costs off) select * from foo_part_rls where a is null;
+-- Dynamic Index Scan is not generated by ORCA when RLS is enabled
+set session authorization new_user;
+explain (costs off) select * from foo_part_rls where a is null;
+reset session authorization;
+reset enable_seqscan;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+drop table bar_part_rls cascade;
+drop function leak_data(int);
+
+--------------------------------------------------------------------------------
+----------------- Creating policies on leaf partitions -------------------------
+--------------------------------------------------------------------------------
+create table rootpart (a int, b int) distributed by (a) partition by range(a)
+(start(0) end(10) every(5));
+insert into rootpart select i,i from generate_series(0,9)i;
+-- select permission is only for root partition and not for child partition
+grant select on rootpart to new_user;
+alter table rootpart_1_prt_2 enable row level security;
+create policy p1 on rootpart_1_prt_2 using (a>=7);
+set session authorization new_user;
+explain (costs off) select * from rootpart;
+-- Issue #16961
+-- ORCA and planner should not generate a plan and show error permission denied
+-- for leaf partition
+explain (costs off) select * from rootpart_1_prt_2;
+reset session authorization;
+drop policy p1 on rootpart_1_prt_2;
+drop table rootpart;
+
+--------------------------------------------------------------------------------
+----------------- Grant SELECT to only a leaf partition ------------------------
+--------------------------------------------------------------------------------
+create table rootpart (a int, b int) distributed by (a) partition by range(a)
+(start(0) end(10) every(5));
+insert into rootpart select i,i from generate_series(0,9)i;
+grant select on rootpart_1_prt_2 to new_user;
+alter table rootpart_1_prt_2 enable row level security;
+create policy p1 on rootpart_1_prt_2 using (a>=7);
+set session authorization new_user;
+-- Since the SELECT permission is only for a leaf partition [rootpart_1_prt_2],
+-- querying the root will error out
+explain (costs off) select * from rootpart;
+explain (costs off) select * from rootpart_1_prt_1;
+-- Below query will work fine as the user has SELECT permission on this root
+-- partition
+explain (costs off) select * from rootpart_1_prt_2;
+reset session authorization;
+drop policy p1 on rootpart_1_prt_2;
+drop table rootpart;
+
+--------------------------------------------------------------------------------
+-------------------------- Multilevel Partitions -------------------------------
+--------------------------------------------------------------------------------
+create table rootTab(a int) distributed by (a) partition by range(a);
+create table roottabmid1(a int) distributed by (a) partition by range(a);
+create table roottableaf1(a int) distributed by (a);
+create table roottableaf2(a int) distributed by (a);
+alter table roottab attach partition roottabmid1 for values from (0) to (10);
+alter table roottabmid1 attach partition roottableaf1 for values from (0) to (5);
+alter table roottabmid1 attach partition roottableaf2 for values from (5) to (10);
+insert into roottab select i from generate_series(0,9)i;
+grant select on roottab to new_user;
+alter table roottableaf2 enable row level security;
+create policy p1 on roottableaf2 using (a>=7);
+set session authorization new_user;
+-- Querying the root will fallback to planner as ORCA doesn't supports
+-- Multi-level partitioned tables
+explain (costs off) select * from roottab;
+explain (costs off) select * from roottabmid1;
+explain (costs off) select * from roottableaf1;
+explain (costs off) select * from roottableaf2;
+reset session authorization;
+drop policy p1 on roottableaf2;
+drop table roottab;
+
+--------------------------------------------------------------------------------
+------------------- Inherited Tables with RLS enabled --------------------------
+--------------------------------------------------------------------------------
+create table parent (a int, b int) distributed by (a);
+create table child1 (c int) inherits (parent);
+create table child2 (d int) inherits (parent);
+-- SELECT permission on parent
+grant select on parent to new_user;
+alter table parent enable row level security;
+create policy p1 on parent using (a>=7);
+set session authorization new_user;
+-- Querying the parent will fallback to planner as ORCA doesn't supports
+-- Inherited tables
+explain (costs off) select * from parent;
+-- Below queries will error out as no SELECT permission for user on child
+-- relations
+explain (costs off) select * from child1;
+explain (costs off) select * from child2;
+reset session authorization;
+grant select on child1 to new_user;
+set session authorization new_user;
+-- After granting SELECT permission the below query will work
+explain (costs off) select * from child1;
+reset session authorization;
+drop policy p1 on parent;
+drop table parent cascade;
+
+
+--------------------------------------------------------------------------------
+----- INSERT queries on relation having row level security enabled -------------
+------ ORCA will fallback to planner for INSERT with RLS anabled ---------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant insert on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=3);
+set session authorization new_user;
+explain (costs off) insert into foo_rls values (1,1,1);
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+
+--------------------------------------------------------------------------------
+--------- INSERT queries on partitioned relation having RLS enabled ------------
+--------- ORCA will fallback to planner for INSERT with RLS anabled ------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant insert on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=500);
+set session authorization new_user;
+explain (costs off) insert into foo_part_rls values (-10,-10,-10);
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+
+--------------------------------------------------------------------------------
+----- UPDATE queries on relation having row level security enabled -------------
+------ ORCA will fallback to planner for UPDATE with RLS anabled ---------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant select,update on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=3);
+set session authorization new_user;
+explain (costs off) update foo_rls set a=-10 where c=4;
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+
+--------------------------------------------------------------------------------
+--------- UPDATE queries on partitioned relation having RLS enabled ------------
+--------- ORCA will fallback to planner for UPDATE with RLS anabled ------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant select,update on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=500);
+set session authorization new_user;
+explain (costs off) update foo_part_rls set a=10 where foo_part_rls.c = 800;
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+
+--------------------------------------------------------------------------------
+----- DELETE queries on relation having row level security enabled -------------
+--------------------------------------------------------------------------------
+create table foo_rls ( a int, b int, c int) distributed by (a);
+insert into foo_rls select i,i*10,i*100 from generate_series(1,5)i;
+analyze foo_rls;
+grant select,delete on foo_rls to new_user;
+alter table foo_rls enable row level security;
+create policy p1 on foo_rls using (c>=300);
+set session authorization new_user;
+explain (costs off) delete from foo_rls where foo_rls.b=30;
+reset session authorization;
+drop policy p1 on foo_rls;
+drop table foo_rls cascade;
+
+--------------------------------------------------------------------------------
+----- DELETE queries on on partitioned relation having RLS enabled -------------
+--------------------------------------------------------------------------------
+create table foo_part_rls ( a int, b int, c int) distributed by (a)
+partition by range(b) (start(0) end(100) every(20));
+insert into foo_part_rls select i,i*10,i*100 from generate_series(1,9)i;
+analyze foo_part_rls;
+grant select,delete on foo_part_rls to new_user;
+alter table foo_part_rls enable row level security;
+create policy p1 on foo_part_rls using (c>=300);
+set session authorization new_user;
+explain (costs off) delete from foo_part_rls where foo_part_rls.b=30;
+reset session authorization;
+drop policy p1 on foo_part_rls;
+drop table foo_part_rls cascade;
+drop user new_user;
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/sql/rowsecurity.sql b/src/test/regress/sql/rowsecurity.sql
index 741a4bd5c5..ecfddbb819 100644
--- a/src/test/regress/sql/rowsecurity.sql
+++ b/src/test/regress/sql/rowsecurity.sql
@@ -8,6 +8,7 @@
SET client_min_messages TO 'warning';
SET gp_enable_relsize_collection to on;
+set optimizer_trace_fallback to on;
DROP USER IF EXISTS regress_rls_alice;
DROP USER IF EXISTS regress_rls_bob;
DROP USER IF EXISTS regress_rls_carol;
@@ -1917,3 +1918,4 @@ CREATE POLICY p1 ON rls_tbl_force USING (c1 = 5) WITH CHECK (c1 < 5);
CREATE POLICY p2 ON rls_tbl_force FOR SELECT USING (c1 = 8);
CREATE POLICY p3 ON rls_tbl_force FOR UPDATE USING (c1 = 8) WITH CHECK (c1 >= 5);
CREATE POLICY p4 ON rls_tbl_force FOR DELETE USING (c1 = 8);
+reset optimizer_trace_fallback;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 16/30: Update CDynamicPtrArray::Equals to use operator==
Posted by ma...@apache.org.
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 a28770e6f88697a26a35f79a61a88cc98d5b8fb1
Author: David Kimura <dk...@vmware.com>
AuthorDate: Mon Jan 22 14:13:07 2024 -0800
Update CDynamicPtrArray::Equals to use operator==
Prior to this commit, Equals() was implemented as a pointer comparison.
That led to unexpected behavior when the elements pointed to "equal"
values stored as different objects. For example,
```c++
ULongPtrArray *array_1 = GPOS_NEW(mp) ULongPtrArray(mp);
array_1->Append(GPOS_NEW(mp) ULONG(42));
ULongPtrArray *array_2 = GPOS_NEW(mp) ULongPtrArray(mp);
array_2->Append(GPOS_NEW(mp) ULONG(42));
// FAILS!
GPOS_ASSERT(array_1->Equals(array_2));
```
Instead of pointer comparison, it is more intuitive to use T::operator==
method. This commit makes that change and back-patches types that do not
already define T::operator==. From now on, the compiler will require all
callers of Equals() to have a valid implmentation of T::operator==.
---
.../include/gpopt/metadata/CColumnDescriptor.h | 18 +++++++++
.../libgpos/include/gpos/common/CDynamicPtrArray.h | 14 ++++++-
.../unittest/gpos/common/CDynamicPtrArrayTest.h | 1 +
.../unittest/gpos/common/CDynamicPtrArrayTest.cpp | 44 ++++++++++++++++++++++
.../libnaucrates/include/naucrates/base/IDatum.h | 12 ++++++
.../include/naucrates/statistics/IStatistics.h | 21 +++++++++++
6 files changed, 109 insertions(+), 1 deletion(-)
diff --git a/src/backend/gporca/libgpopt/include/gpopt/metadata/CColumnDescriptor.h b/src/backend/gporca/libgpopt/include/gpopt/metadata/CColumnDescriptor.h
index 4886e2fc97..ee7f09f835 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/metadata/CColumnDescriptor.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/metadata/CColumnDescriptor.h
@@ -130,6 +130,24 @@ public:
IOstream &OsPrint(IOstream &os) const;
+ BOOL
+ operator==(const CColumnDescriptor &other) const
+ {
+ if (this == &other)
+ {
+ // same object reference
+ return true;
+ }
+
+ return Name().Equals(other.Name()) &&
+ RetrieveType()->MDId()->Equals(other.RetrieveType()->MDId()) &&
+ TypeModifier() == other.TypeModifier() &&
+ AttrNum() == other.AttrNum() &&
+ IsNullable() == other.IsNullable() &&
+ IsSystemColumn() == other.IsSystemColumn() &&
+ Width() == other.Width() && IsDistCol() == other.IsDistCol();
+ }
+
}; // class CColumnDescriptor
} // namespace gpopt
diff --git a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
index c7b3e363c5..d187b71364 100644
--- a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
+++ b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
@@ -253,12 +253,24 @@ public:
for (ULONG i = 0; i < m_size && is_equal; i++)
{
- is_equal = (m_elems[i] == arr->m_elems[i]);
+ is_equal = (*m_elems[i] == *arr->m_elems[i]);
}
return is_equal;
}
+ BOOL
+ operator==(const CDynamicPtrArray<T, CleanupFn> &other)
+ {
+ if (this == &other)
+ {
+ // same object reference
+ return true;
+ }
+
+ return Equals(&other);
+ }
+
// lookup object
T *
Find(const T *elem) const
diff --git a/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h b/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h
index b66c446106..702edbd7ba 100644
--- a/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h
+++ b/src/backend/gporca/libgpos/server/include/unittest/gpos/common/CDynamicPtrArrayTest.h
@@ -33,6 +33,7 @@ public:
static GPOS_RESULT EresUnittest_ArrayAppend();
static GPOS_RESULT EresUnittest_ArrayAppendExactFit();
static GPOS_RESULT EresUnittest_PdrgpulSubsequenceIndexes();
+ static GPOS_RESULT EresUnittest_Equals();
// destructor function for char's
static void DestroyChar(char *);
diff --git a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp
index d8b4708b02..7726ebe439 100644
--- a/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp
+++ b/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CDynamicPtrArrayTest.cpp
@@ -11,9 +11,12 @@
#include "unittest/gpos/common/CDynamicPtrArrayTest.h"
+#include <string.h>
+
#include "gpos/base.h"
#include "gpos/common/CDynamicPtrArray.h"
#include "gpos/memory/CAutoMemoryPool.h"
+#include "gpos/string/CWStringConst.h"
#include "gpos/test/CUnittest.h"
using namespace gpos;
@@ -37,6 +40,7 @@ CDynamicPtrArrayTest::EresUnittest()
CDynamicPtrArrayTest::EresUnittest_ArrayAppendExactFit),
GPOS_UNITTEST_FUNC(
CDynamicPtrArrayTest::EresUnittest_PdrgpulSubsequenceIndexes),
+ GPOS_UNITTEST_FUNC(CDynamicPtrArrayTest::EresUnittest_Equals),
};
return CUnittest::EresExecute(rgut, GPOS_ARRAY_SIZE(rgut));
@@ -349,4 +353,44 @@ CDynamicPtrArrayTest::EresUnittest_PdrgpulSubsequenceIndexes()
return GPOS_OK;
}
+//---------------------------------------------------------------------------
+// @function:
+// CDynamicPtrArrayTest::EresUnittest_Equals
+//
+// @doc:
+// Testing whether two arrays are equal
+//
+//---------------------------------------------------------------------------
+GPOS_RESULT
+CDynamicPtrArrayTest::EresUnittest_Equals()
+{
+ CAutoMemoryPool amp;
+ CMemoryPool *mp = amp.Pmp();
+
+ StringPtrArray *myStringArray = GPOS_NEW(mp) StringPtrArray(mp);
+ myStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "a_string"));
+ myStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "b_string"));
+
+ StringPtrArray *yourStringArray = GPOS_NEW(mp) StringPtrArray(mp);
+ yourStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "a_string"));
+ yourStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "b_string"));
+
+ // string array with same elements, in the same order should be equal
+ GPOS_ASSERT(myStringArray->Equals(yourStringArray));
+ GPOS_ASSERT(yourStringArray->Equals(myStringArray));
+
+ // string array with same elements, in the different order should not be equal
+ StringPtrArray *ourStringArray = GPOS_NEW(mp) StringPtrArray(mp);
+ ourStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "b_string"));
+ ourStringArray->Append(GPOS_NEW(mp) CWStringConst(mp, "a_string"));
+
+ GPOS_ASSERT(!myStringArray->Equals(ourStringArray));
+ GPOS_ASSERT(!ourStringArray->Equals(myStringArray));
+
+ myStringArray->Release();
+ yourStringArray->Release();
+ ourStringArray->Release();
+
+ return GPOS_OK;
+}
// EOF
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/base/IDatum.h b/src/backend/gporca/libnaucrates/include/naucrates/base/IDatum.h
index 2d588e7fd9..a6bf6ffbcf 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/base/IDatum.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/base/IDatum.h
@@ -142,6 +142,18 @@ public:
virtual BOOL StatsAreComparable(const IDatum *datum) const;
virtual gpos::IOstream &OsPrint(gpos::IOstream &os) const = 0;
+
+ BOOL
+ operator==(const IDatum &other) const
+ {
+ if (this == &other)
+ {
+ // same object reference
+ return true;
+ }
+
+ return Matches(&other);
+ }
}; // class IDatum
// array of idatums
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h b/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h
index 28f9f6bb49..09dd2b6ba5 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/statistics/IStatistics.h
@@ -200,6 +200,27 @@ public:
return (IStatistics::EsjtLeftAntiSemiJoin == join_type) ||
(IStatistics::EsjtLeftSemiJoin == join_type);
}
+
+ BOOL
+ operator==(const IStatistics &other) const
+ {
+ if (this == &other)
+ {
+ // same object reference
+ return true;
+ }
+
+ // XXX: How are we supposed to compar statistics objects? I suppose we
+ // could print it out and compare, but that seems expensive.
+ // Instead, we opt for some basic comparison, knowing that it's
+ // nowhere near exhaustive.
+ return Rows() == other.Rows() && RelPages() == other.RelPages() &&
+ RelAllVisible() == other.RelAllVisible() &&
+ IsEmpty() == other.IsEmpty() &&
+ NumRebinds() == other.NumRebinds() && Width() == other.Width() &&
+ StatsEstimationRisk() == other.StatsEstimationRisk() &&
+ GetNumberOfPredicates() == other.GetNumberOfPredicates();
+ }
}; // class IStatistics
// shorthand for printing
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 30/30: Fix build && icw tests
Posted by ma...@apache.org.
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 7568f3768760ab0c3fdfab01f1a3f2b2c1c6751c
Author: zhoujiaqi <zh...@hashdata.cn>
AuthorDate: Fri Feb 14 15:18:46 2025 +0800
Fix build && icw tests
---
gpcontrib/pg_hint_plan/pg_hint_plan.c | 10 +-
.../gpopt/translate/CTranslatorDXLToPlStmt.cpp | 6 +-
.../gpopt/translate/CTranslatorQueryToDXL.cpp | 2 +-
src/include/optimizer/orca.h | 8 +-
.../regress/expected/bfv_aggregate_optimizer.out | 2 +-
src/test/regress/expected/bfv_cte_optimizer.out | 16 +-
src/test/regress/expected/bfv_index.out | 24 +-
src/test/regress/expected/bfv_statistic.out | 32 +-
.../regress/expected/brin_multi_optimizer_1.out | 2 +-
src/test/regress/expected/gp_dqa_optimizer.out | 39 +-
src/test/regress/expected/gporca.out | 31 --
src/test/regress/expected/gporca_optimizer.out | 30 --
src/test/regress/expected/join_gp_optimizer.out | 14 +-
src/test/regress/expected/join_optimizer.out | 25 +-
src/test/regress/expected/memoize_optimizer.out | 18 +-
src/test/regress/expected/planhints.out | 558 +++++++++++----------
src/test/regress/expected/planhints_optimizer.out | 34 +-
src/test/regress/expected/qp_rowsecurity.out | 263 +++++-----
.../regress/expected/qp_rowsecurity_optimizer.out | 107 ++--
src/test/regress/expected/rowhints.out | 151 +++---
src/test/regress/expected/rowhints_optimizer.out | 1 +
src/test/regress/expected/rowsecurity.out | 58 +--
.../regress/expected/rowsecurity_optimizer.out | 365 +++++++-------
src/test/regress/sql/gporca.sql | 6 -
src/test/regress/sql/rowhints.sql | 2 +-
src/test/regress/sql/rowsecurity.sql | 2 +
26 files changed, 857 insertions(+), 949 deletions(-)
diff --git a/gpcontrib/pg_hint_plan/pg_hint_plan.c b/gpcontrib/pg_hint_plan/pg_hint_plan.c
index eb636bd426..b68bc84ad3 100644
--- a/gpcontrib/pg_hint_plan/pg_hint_plan.c
+++ b/gpcontrib/pg_hint_plan/pg_hint_plan.c
@@ -422,7 +422,7 @@ pg_hint_plan_add_paths_to_joinrel(PlannerInfo *root,
JoinType jointype,
SpecialJoinInfo *sjinfo,
List *restrictlist);
-#ifdef DISABLE_ORCA_HOOK
+#ifdef USE_ORCA
static void *external_plan_hint_hook(Query *parse);
#endif
static PlannedStmt *pg_hint_plan_planner(Query *parse, const char *query_string, int cursorOptions,
@@ -580,7 +580,7 @@ static ExecutorEnd_hook_type prev_ExecutorEnd = NULL;
static make_join_rel_hook_type prev_make_join_rel_hook = NULL;
static add_paths_to_joinrel_hook_type prev_add_paths_to_joinrel_hook = NULL;
-#ifdef DISABLE_ORCA_HOOK
+#ifdef USE_ORCA
static plan_hint_hook_type prev_plan_hint_hook = NULL;
#endif
@@ -743,7 +743,7 @@ _PG_init(void)
prev_add_paths_to_joinrel_hook = add_paths_to_joinrel_hook;
add_paths_to_joinrel_hook = pg_hint_plan_add_paths_to_joinrel;
-#ifdef DISABLE_ORCA_HOOK
+#ifdef USE_ORCA
prev_plan_hint_hook = plan_hint_hook;
plan_hint_hook = external_plan_hint_hook;
#endif
@@ -773,7 +773,7 @@ _PG_fini(void)
ExecutorEnd_hook = prev_ExecutorEnd;
make_join_rel_hook = prev_make_join_rel_hook;
add_paths_to_joinrel_hook = prev_add_paths_to_joinrel_hook;
-#ifdef DISABLE_ORCA_HOOK
+#ifdef USE_ORCA
plan_hint_hook = prev_plan_hint_hook;
#endif
@@ -5232,7 +5232,7 @@ void plpgsql_query_erase_callback(ResourceReleasePhase phase,
}
}
-#ifdef DISABLE_ORCA_HOOK
+#ifdef USE_ORCA
/*
* This function hook allows external code (i.e. backend) to parse a query into
* hint structures.
diff --git a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
index b6abedc7cd..36d765da11 100644
--- a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
+++ b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
@@ -5888,7 +5888,7 @@ CTranslatorDXLToPlStmt::FetchSecurityQuals(
{
return gpdb::WalkQueryTree(
parsetree,
- (BOOL(*)()) CTranslatorDXLToPlStmt::FetchSecurityQualsWalker,
+ (bool (*)(Node *, void *)) CTranslatorDXLToPlStmt::FetchSecurityQualsWalker,
ctxt_security_quals, QTW_IGNORE_RC_SUBQUERIES);
}
@@ -5930,7 +5930,7 @@ CTranslatorDXLToPlStmt::FetchSecurityQualsWalker(
}
return gpdb::WalkExpressionTree(
- node, (BOOL(*)()) CTranslatorDXLToPlStmt::FetchSecurityQualsWalker,
+ node, (bool (*)(Node *, void *)) CTranslatorDXLToPlStmt::FetchSecurityQualsWalker,
ctxt_security_quals);
}
@@ -5963,7 +5963,7 @@ CTranslatorDXLToPlStmt::SetSecurityQualsVarnoWalker(Node *node, Index *index)
}
return gpdb::WalkExpressionTree(
- node, (BOOL(*)()) CTranslatorDXLToPlStmt::SetSecurityQualsVarnoWalker,
+ node, (bool (*)(Node *, void *)) CTranslatorDXLToPlStmt::SetSecurityQualsVarnoWalker,
index);
}
diff --git a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
index 85351167ed..667e5362c3 100644
--- a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp
@@ -560,7 +560,7 @@ CTranslatorQueryToDXL::CheckSublinkInSecurityQuals(Node *node, void *context)
}
return gpdb::WalkExpressionTree(
- node, (BOOL(*)()) CTranslatorQueryToDXL::CheckSublinkInSecurityQuals,
+ node, (bool (*)(Node *, void *)) CTranslatorQueryToDXL::CheckSublinkInSecurityQuals,
context);
}
diff --git a/src/include/optimizer/orca.h b/src/include/optimizer/orca.h
index 27f64b6009..6ad09a6e20 100644
--- a/src/include/optimizer/orca.h
+++ b/src/include/optimizer/orca.h
@@ -23,6 +23,10 @@
extern PlannedStmt * optimize_query(Query *parse, int cursorOptions, ParamListInfo boundParams);
+// plan_hint_hook generates HintState by parsing a Query.
+typedef void *(*plan_hint_hook_type) (Query *parse);
+extern PGDLLIMPORT plan_hint_hook_type plan_hint_hook;
+
#else
/* Keep compilers quiet in case the build used --disable-orca */
@@ -33,10 +37,6 @@ optimize_query(Query *parse, int cursorOptions, ParamListInfo boundParams)
return NULL;
}
-// plan_hint_hook generates HintState by parsing a Query.
-typedef void *(*plan_hint_hook_type) (Query *parse);
-extern PGDLLIMPORT plan_hint_hook_type plan_hint_hook;
-
#endif
#endif /* ORCA_H */
diff --git a/src/test/regress/expected/bfv_aggregate_optimizer.out b/src/test/regress/expected/bfv_aggregate_optimizer.out
index 85aa26a8ac..0ef1aab2b8 100644
--- a/src/test/regress/expected/bfv_aggregate_optimizer.out
+++ b/src/test/regress/expected/bfv_aggregate_optimizer.out
@@ -2082,7 +2082,7 @@ explain (costs off) select count(distinct(b)), gp_segment_id from t group by gp_
-> Sort
Sort Key: gp_segment_id, b
-> Redistribute Motion 3:3 (slice3; segments: 3)
- Hash Key: gp_segment_id, b, b
+ Hash Key: gp_segment_id, b
-> Seq Scan on t
Optimizer: Pivotal Optimizer (GPORCA)
(13 rows)
diff --git a/src/test/regress/expected/bfv_cte_optimizer.out b/src/test/regress/expected/bfv_cte_optimizer.out
index a3057cf207..2669628781 100644
--- a/src/test/regress/expected/bfv_cte_optimizer.out
+++ b/src/test/regress/expected/bfv_cte_optimizer.out
@@ -307,7 +307,7 @@ SELECT sum(t.b) OVER(PARTITION BY t.a ) AS e FROM (select 1 as a, 2 as b from pg
) as cup
GROUP BY cup.e;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
e
---
2
@@ -439,7 +439,7 @@ WHERE y.b = z.b - 1;
-- which is stored in shared memory is initialized by the SISC READER (slice2 or slice4)
select gp_inject_fault('get_shareinput_reference_delay_writer', 'suspend', dbid) from gp_segment_configuration where content = 2 and role = 'p';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
gp_inject_fault
-----------------
Success:
@@ -447,7 +447,7 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
select gp_inject_fault('get_shareinput_reference_done', 'skip', dbid) from gp_segment_configuration where content = 2 and role = 'p';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
gp_inject_fault
-----------------
Success:
@@ -464,7 +464,7 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
-- Wait for both SISC READERs to be initialized and squelched
select gp_wait_until_triggered_fault('get_shareinput_reference_done', 1, dbid) from gp_segment_configuration where content = 2 and role = 'p';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
gp_wait_until_triggered_fault
-------------------------------
Success:
@@ -472,7 +472,7 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
select gp_inject_fault('get_shareinput_reference_done', 'reset', dbid) from gp_segment_configuration where content = 2 and role = 'p';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
gp_inject_fault
-----------------
Success:
@@ -480,7 +480,7 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
select gp_inject_fault('get_shareinput_reference_delay_writer', 'reset', dbid) from gp_segment_configuration where content = 2 and role = 'p';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
gp_inject_fault
-----------------
Success:
@@ -531,7 +531,7 @@ LOG: SISC (shareid=0, slice=1): removed xslice state (seg2 slice1 127.0.1.1:70
-- cleanup
select gp_inject_fault_infinite('all', 'reset', dbid) from gp_segment_configuration;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
gp_inject_fault_infinite
--------------------------
Success:
@@ -744,7 +744,7 @@ create view cte_view as
set allow_system_table_mods=true;
update pg_class set relpages = 1::int, reltuples = 12.0::real where relname = 'a_table';
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
reset allow_system_table_mods;
explain select * from a_table join cte_view on a_table.a = (select a from cte_view) where cte_view.a = 2024;
QUERY PLAN
diff --git a/src/test/regress/expected/bfv_index.out b/src/test/regress/expected/bfv_index.out
index 49544a9184..cbb1ca4adc 100644
--- a/src/test/regress/expected/bfv_index.out
+++ b/src/test/regress/expected/bfv_index.out
@@ -1484,16 +1484,20 @@ explain select t1.a from index_only_join_test t1, index_only_join_test t2 where
reset optimizer_enable_indexscan;
explain select t1.a from index_only_join_test_aocs t1, index_only_join_test_aocs t2 where t1.a = t2.a and t1.b < 10;
- QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.31..12.48 rows=13 width=4)
- -> Nested Loop (cost=0.31..12.31 rows=4 width=4)
- -> Index Only Scan using index_only_join_test_aocs_b_idx on index_only_join_test_aocs t1 (cost=0.15..4.49 rows=3 width=4)
- Index Cond: (b < 10)
- -> Index Only Scan using index_only_join_test_aocs_a_idx on index_only_join_test_aocs t2 (cost=0.15..2.59 rows=1 width=4)
- Index Cond: (a = t1.a)
- Optimizer: Postgres-based planner
-(7 rows)
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=6.83..26.27 rows=8 width=4)
+ -> Nested Loop (cost=6.83..26.16 rows=3 width=4)
+ -> Bitmap Heap Scan on index_only_join_test_aocs t1 (cost=4.20..8.24 rows=3 width=4)
+ Recheck Cond: (b < 10)
+ -> Bitmap Index Scan on index_only_join_test_aocs_b_idx (cost=0.00..4.20 rows=3 width=0)
+ Index Cond: (b < 10)
+ -> Bitmap Heap Scan on index_only_join_test_aocs t2 (cost=2.62..6.63 rows=1 width=4)
+ Recheck Cond: (a = t1.a)
+ -> Bitmap Index Scan on index_only_join_test_aocs_a_idx (cost=0.00..2.62 rows=1 width=0)
+ Index Cond: (a = t1.a)
+ Optimizer: Postgres query optimizer
+(11 rows)
reset enable_nestloop;
reset enable_seqscan;
diff --git a/src/test/regress/expected/bfv_statistic.out b/src/test/regress/expected/bfv_statistic.out
index e5558865fc..cf38844bb5 100644
--- a/src/test/regress/expected/bfv_statistic.out
+++ b/src/test/regress/expected/bfv_statistic.out
@@ -578,20 +578,20 @@ analyze t1, t2;
--
-- inequality predicates (2 out of 7 partitions):
explain select * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.b < '2015-01-05'::date;
- QUERY PLAN
-------------------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3) (cost=34.71..151.40 rows=5 width=16)
-> Hash Join (cost=34.71..151.33 rows=2 width=16)
- Hash Cond: ((t2.a = t1_1_prt_2.a) AND (t2.b = t1_1_prt_2.b))
+ Hash Cond: ((t2.a = t1.a) AND (t2.b = t1.b))
-> Seq Scan on t2 (cost=0.00..116.54 rows=13 width=8)
Filter: (b < '01-05-2015'::date)
-> Hash (cost=34.49..34.49 rows=14 width=8)
-> Append (cost=0.00..34.49 rows=14 width=8)
- -> Seq Scan on t1_1_prt_2 (cost=0.00..17.21 rows=13 width=8)
+ -> Seq Scan on t1_1_prt_2 t1_1 (cost=0.00..17.21 rows=13 width=8)
Filter: (b < '01-05-2015'::date)
- -> Seq Scan on t1_1_prt_d (cost=0.00..17.21 rows=1 width=8)
+ -> Seq Scan on t1_1_prt_d t1_2 (cost=0.00..17.21 rows=1 width=8)
Filter: (b < '01-05-2015'::date)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(12 rows)
explain select * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.b < '2015-01-05'::timestamp;
@@ -599,16 +599,16 @@ explain select * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.b < '2015-
-------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3) (cost=34.71..151.40 rows=5 width=16)
-> Hash Join (cost=34.71..151.33 rows=2 width=16)
- Hash Cond: ((t2.a = t1_1_prt_2.a) AND (t2.b = t1_1_prt_2.b))
+ Hash Cond: ((t2.a = t1.a) AND (t2.b = t1.b))
-> Seq Scan on t2 (cost=0.00..116.54 rows=13 width=8)
Filter: (b < 'Mon Jan 05 00:00:00 2015'::timestamp without time zone)
-> Hash (cost=34.49..34.49 rows=14 width=8)
-> Append (cost=0.00..34.49 rows=14 width=8)
- -> Seq Scan on t1_1_prt_2 (cost=0.00..17.21 rows=13 width=8)
+ -> Seq Scan on t1_1_prt_2 t1_1 (cost=0.00..17.21 rows=13 width=8)
Filter: (b < 'Mon Jan 05 00:00:00 2015'::timestamp without time zone)
- -> Seq Scan on t1_1_prt_d (cost=0.00..17.21 rows=1 width=8)
+ -> Seq Scan on t1_1_prt_d t1_2 (cost=0.00..17.21 rows=1 width=8)
Filter: (b < 'Mon Jan 05 00:00:00 2015'::timestamp without time zone)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(12 rows)
-- equality predicates (1 out of 7 partitions):
@@ -617,13 +617,13 @@ explain select * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.b = '2015-
---------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3) (cost=17.25..133.97 rows=10 width=16)
-> Hash Join (cost=17.25..133.83 rows=3 width=16)
- Hash Cond: (t2.a = t1_1_prt_2.a)
+ Hash Cond: (t2.a = t1.a)
-> Seq Scan on t2 (cost=0.00..116.54 rows=3 width=8)
Filter: (b = '01-05-2015'::date)
-> Hash (cost=17.21..17.21 rows=3 width=8)
- -> Seq Scan on t1_1_prt_2 (cost=0.00..17.21 rows=3 width=8)
+ -> Seq Scan on t1_1_prt_2 t1 (cost=0.00..17.21 rows=3 width=8)
Filter: (b = '01-05-2015'::date)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(9 rows)
explain select * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.b = '2015-01-05'::timestamp;
@@ -631,13 +631,13 @@ explain select * from t1, t2 where t1.a = t2.a and t1.b = t2.b and t1.b = '2015-
-------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3) (cost=17.25..133.97 rows=10 width=16)
-> Hash Join (cost=17.25..133.83 rows=3 width=16)
- Hash Cond: (t2.a = t1_1_prt_2.a)
+ Hash Cond: (t2.a = t1.a)
-> Seq Scan on t2 (cost=0.00..116.54 rows=3 width=8)
Filter: (b = 'Mon Jan 05 00:00:00 2015'::timestamp without time zone)
-> Hash (cost=17.21..17.21 rows=3 width=8)
- -> Seq Scan on t1_1_prt_2 (cost=0.00..17.21 rows=3 width=8)
+ -> Seq Scan on t1_1_prt_2 t1 (cost=0.00..17.21 rows=3 width=8)
Filter: (b = 'Mon Jan 05 00:00:00 2015'::timestamp without time zone)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(9 rows)
RESET optimizer_join_order;
diff --git a/src/test/regress/expected/brin_multi_optimizer_1.out b/src/test/regress/expected/brin_multi_optimizer_1.out
index 99b3f83b1a..d995e7888d 100644
--- a/src/test/regress/expected/brin_multi_optimizer_1.out
+++ b/src/test/regress/expected/brin_multi_optimizer_1.out
@@ -349,7 +349,7 @@ WARNING: did not get bitmap indexscan plan for (timestampcol,<=,timestamp,"1984
WARNING: did not get bitmap indexscan plan for (timestampcol,<,timestamp,"1984-01-20 22:42:21",100)
WARNING: did not get bitmap indexscan plan for (timestampcol,>,timestamptz,"1942-07-23 03:05:09",100)
WARNING: did not get bitmap indexscan plan for (timestampcol,>=,timestamptz,"1942-07-23 03:05:09",100)
-WARNING: did not get bitmap indexscan plan for (timestampcol,=,timestamptz,"1964-03-24 19:26:45",1)
+WARNING: did not get seqscan plan for (timestampcol,=,timestamptz,"1964-03-24 19:26:45",1)
WARNING: did not get bitmap indexscan plan for (timestampcol,<=,timestamptz,"1984-01-20 22:42:21",100)
WARNING: did not get bitmap indexscan plan for (timestampcol,<,timestamptz,"1984-01-20 22:42:21",100)
WARNING: did not get bitmap indexscan plan for (numericcol,>,numeric,0.00,100)
diff --git a/src/test/regress/expected/gp_dqa_optimizer.out b/src/test/regress/expected/gp_dqa_optimizer.out
index 96c5688d8b..59dcc4df31 100644
--- a/src/test/regress/expected/gp_dqa_optimizer.out
+++ b/src/test/regress/expected/gp_dqa_optimizer.out
@@ -2797,33 +2797,30 @@ select id, count(distinct a), avg(b), sum(c) from num_table group by grouping se
(3 rows)
explain (verbose on, costs off) select count(distinct b) from num_table group by c;
- QUERY PLAN
---------------------------------------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- Output: (count(b))
- -> GroupAggregate
- Output: count(b)
+ Output: (count(DISTINCT b))
+ -> Finalize HashAggregate
+ Output: count(DISTINCT b)
Group Key: num_table.c
- -> Sort
- Output: b, c
- Sort Key: num_table.c
- -> Redistribute Motion 3:3 (slice2; segments: 3)
- Output: b, c
- Hash Key: c
- -> GroupAggregate
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Output: c, (PARTIAL count(DISTINCT b))
+ Hash Key: c
+ -> Partial GroupAggregate
+ Output: c, PARTIAL count(DISTINCT b)
+ Group Key: num_table.c
+ -> Sort
Output: b, c
- Group Key: num_table.c, num_table.b
- -> Sort
+ Sort Key: num_table.c, num_table.b
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
Output: b, c
- Sort Key: num_table.c, num_table.b
- -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: c, b
+ -> Seq Scan on public.num_table
Output: b, c
- Hash Key: c, b
- -> Seq Scan on public.num_table
- Output: b, c
+ Settings: enable_groupagg = 'off', enable_hashagg = 'on', enable_parallel = 'off', gp_motion_cost_per_row = '2', optimizer = 'on'
Optimizer: GPORCA
- Settings: enable_groupagg = 'off', gp_motion_cost_per_row = '1', optimizer_force_multistage_agg = 'on'
-(24 rows)
+(21 rows)
select count(distinct b) from num_table group by c;
count
diff --git a/src/test/regress/expected/gporca.out b/src/test/regress/expected/gporca.out
index 4e39f380bb..97f8e8abeb 100644
--- a/src/test/regress/expected/gporca.out
+++ b/src/test/regress/expected/gporca.out
@@ -14366,19 +14366,6 @@ ON t1.tradingday = t2.tradingday;
(1 row)
DROP TABLE t_clientinstrumentind2, t_clientproductind2;
----------------------------------------------------------------------------------
--- Test ALL NULL scalar array compare
-create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
-explain select * from DatumSortedSet_core where b in (NULL, NULL);
- QUERY PLAN
--------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..240.69 rows=1 width=36)
- -> Seq Scan on datumsortedset_core (cost=0.00..240.67 rows=1 width=36)
- Filter: ((b)::text = ANY ('{NULL,NULL}'::text[]))
- Optimizer: Postgres-based planner
-(4 rows)
-
----------------------------------------------------------------------------------
-- Test ORCA not falling back to Postgres planner during
-- SimplifySelectOnOuterJoin stage. Previously, we could get assertion error
-- trying to EberEvaluate() strict function with zero arguments.
@@ -14951,24 +14938,6 @@ SELECT CAST(a AS TEXT[]) FROM array_coerceviaio;
{1,2,3}
(1 row)
----------------------------------------------------------------------------------
-DROP TABLE IF EXISTS schema_test_table;
-CREATE TABLE schema_test_table(a numeric, b numeric(5,2), c char(10) NOT NULL) distributed by (a);
--- In 7x, redundant Result nodes in planned_stmt are being removed by ORCA,
--- which caused the loss of typmod info of column type in plan.
--- Below query is used by external libraries to fetch schema of table.
--- Test that the typmod of column type is correct in explain plan.
-EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM schema_test_table WHERE 1=0;
- QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------
- Result
- Output: a, b, c
- One-Time Filter: false
- Optimizer: Postgres-based planner
- Settings: optimizer = 'off', optimizer_enable_coordinator_only_queries = 'on', optimizer_enable_master_only_queries = 'on', optimizer_segments = '3'
-(5 rows)
-
----------------------------------------------------------------------------------
---------------------------------------------------------------------------------
-- Test ALL NULL scalar array compare
create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
diff --git a/src/test/regress/expected/gporca_optimizer.out b/src/test/regress/expected/gporca_optimizer.out
index d0952a3883..0e90fff993 100644
--- a/src/test/regress/expected/gporca_optimizer.out
+++ b/src/test/regress/expected/gporca_optimizer.out
@@ -14447,18 +14447,6 @@ DETAIL: Falling back to Postgres-based planner because no plan has been compute
(1 row)
DROP TABLE t_clientinstrumentind2, t_clientproductind2;
----------------------------------------------------------------------------------
--- Test ALL NULL scalar array compare
-create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
-explain select * from DatumSortedSet_core where b in (NULL, NULL);
- QUERY PLAN
--------------------------------------------
- Result (cost=0.00..0.00 rows=0 width=12)
- One-Time Filter: false
- Optimizer: GPORCA
-(3 rows)
-
----------------------------------------------------------------------------------
-- Test ORCA not falling back to Postgres planner during
-- SimplifySelectOnOuterJoin stage. Previously, we could get assertion error
-- trying to EberEvaluate() strict function with zero arguments.
@@ -15029,24 +15017,6 @@ SELECT CAST(a AS TEXT[]) FROM array_coerceviaio;
{1,2,3}
(1 row)
----------------------------------------------------------------------------------
-DROP TABLE IF EXISTS schema_test_table;
-CREATE TABLE schema_test_table(a numeric, b numeric(5,2), c char(10) NOT NULL) distributed by (a);
--- In 7x, redundant Result nodes in planned_stmt are being removed by ORCA,
--- which caused the loss of typmod info of column type in plan.
--- Below query is used by external libraries to fetch schema of table.
--- Test that the typmod of column type is correct in explain plan.
-EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM schema_test_table WHERE 1=0;
- QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------
- Result
- Output: NULL::numeric, NULL::numeric(5,2), NULL::character(10)
- One-Time Filter: false
- Optimizer: GPORCA
- Settings: optimizer_enable_coordinator_only_queries = 'on', optimizer_enable_master_only_queries = 'on', optimizer_segments = '3'
-(5 rows)
-
----------------------------------------------------------------------------------
---------------------------------------------------------------------------------
-- Test ALL NULL scalar array compare
create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
diff --git a/src/test/regress/expected/join_gp_optimizer.out b/src/test/regress/expected/join_gp_optimizer.out
index 2cd20791b4..ed0c96b987 100644
--- a/src/test/regress/expected/join_gp_optimizer.out
+++ b/src/test/regress/expected/join_gp_optimizer.out
@@ -2114,22 +2114,20 @@ union select foo.a, bar.b from foo join bar on foo.a = bar.a;
--------------------------------------------------------------------------------
explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union
select bar.b,bar.c from bar left join foo on foo.a=bar.a;
- QUERY PLAN
-------------------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> GroupAggregate
Group Key: foo.b, foo.c
-> Sort
Sort Key: foo.b, foo.c
- -> Append
- -> Redistribute Motion 3:3 (slice2; segments: 3)
- Hash Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Append
-> Seq Scan on foo
- -> Redistribute Motion 3:3 (slice3; segments: 3)
- Hash Key: bar.b, bar.c
-> Seq Scan on bar
Optimizer: GPORCA
-(13 rows)
+(11 rows)
select foo.b,foo.c from foo left join bar on foo.a=bar.a union
select bar.b,bar.c from bar left join foo on foo.a=bar.a;
diff --git a/src/test/regress/expected/join_optimizer.out b/src/test/regress/expected/join_optimizer.out
index ea9a67b714..c5e1f03725 100644
--- a/src/test/regress/expected/join_optimizer.out
+++ b/src/test/regress/expected/join_optimizer.out
@@ -3683,12 +3683,13 @@ where x = unique1;
-> Nested Loop
Join Filter: true
-> Result
- Filter: ((1) = 1)
-> Result
+ Filter: ((1) = 1)
+ -> Result
-> Index Only Scan using tenk1_unique1 on tenk1
Index Cond: ((unique1 = (1)) AND (unique1 = 1))
- Optimizer: Pivotal Optimizer (GPORCA)
-(9 rows)
+ Optimizer: GPORCA
+(10 rows)
explain (verbose, costs off)
select unique1, x.*
@@ -3709,7 +3710,7 @@ where x = unique1;
Filter: ((1) = 1)
-> Result
Output: 1
- -> Index Scan using tenk1_unique1 on public.tenk1
+ -> Index Only Scan using tenk1_unique1 on public.tenk1
Output: unique1
Index Cond: ((tenk1.unique1 = (1)) AND (tenk1.unique1 = 1))
Settings: enable_nestloop = 'on', enable_parallel = 'off', optimizer = 'on'
@@ -3724,12 +3725,13 @@ select unique1 from tenk1, f_immutable_int4(1) x where x = unique1;
-> Nested Loop
Join Filter: true
-> Result
- Filter: ((1) = 1)
-> Result
+ Filter: ((1) = 1)
+ -> Result
-> Index Only Scan using tenk1_unique1 on tenk1
Index Cond: ((unique1 = (1)) AND (unique1 = 1))
- Optimizer: Pivotal Optimizer (GPORCA)
-(9 rows)
+ Optimizer: GPORCA
+(10 rows)
explain (costs off)
select unique1 from tenk1, lateral f_immutable_int4(1) x where x = unique1;
@@ -3757,12 +3759,13 @@ select unique1, x from tenk1 join f_immutable_int4(1) x on unique1 = x;
-> Nested Loop
Join Filter: true
-> Result
- Filter: ((1) = 1)
-> Result
+ Filter: ((1) = 1)
+ -> Result
-> Index Only Scan using tenk1_unique1 on tenk1
Index Cond: ((unique1 = (1)) AND (unique1 = 1))
- Optimizer: Pivotal Optimizer (GPORCA)
-(9 rows)
+ Optimizer: GPORCA
+(10 rows)
explain (costs off)
select unique1, x from tenk1 left join f_immutable_int4(1) x on unique1 = x;
@@ -3786,7 +3789,7 @@ select unique1, x from tenk1 right join f_immutable_int4(1) x on unique1 = x;
Join Filter: true
-> Result
-> Result
- -> Index Scan using tenk1_unique1 on tenk1
+ -> Index Only Scan using tenk1_unique1 on tenk1
Index Cond: ((unique1 = (1)) AND (unique1 = 1))
Optimizer: GPORCA
(8 rows)
diff --git a/src/test/regress/expected/memoize_optimizer.out b/src/test/regress/expected/memoize_optimizer.out
index 923a822365..34a55d6da2 100644
--- a/src/test/regress/expected/memoize_optimizer.out
+++ b/src/test/regress/expected/memoize_optimizer.out
@@ -48,14 +48,15 @@ WHERE t2.unique1 < 1000;', false);
-> Partial Aggregate (actual rows=1 loops=N)
-> Nested Loop (actual rows=400 loops=N)
Join Filter: true
- -> Broadcast Motion 3:3 (slice2; segments: 3) (actual rows=1000 loops=N)
+ -> Redistribute Motion 3:3 (slice2; segments: 3) (actual rows=400 loops=N)
+ Hash Key: tenk1.twenty
-> Index Scan using tenk1_unique1 on tenk1 (actual rows=340 loops=N)
Index Cond: (unique1 < 1000)
- -> Index Only Scan using tenk1_unique1 on tenk1 tenk1_1 (actual rows=0 loops=N)
+ -> Index Only Scan using tenk1_unique1 on tenk1 tenk1_1 (actual rows=1 loops=N)
Index Cond: (unique1 = tenk1.twenty)
Heap Fetches: N
- Optimizer: Pivotal Optimizer (GPORCA)
-(12 rows)
+ Optimizer: GPORCA
+(13 rows)
-- And check we get the expected results.
SELECT COUNT(*),AVG(t1.unique1) FROM tenk1 t1
@@ -117,14 +118,15 @@ WHERE t2.unique1 < 1200;', true);
-> Partial Aggregate (actual rows=1 loops=N)
-> Nested Loop (actual rows=407 loops=N)
Join Filter: true
- -> Broadcast Motion 3:3 (slice2; segments: 3) (actual rows=1200 loops=N)
+ -> Redistribute Motion 3:3 (slice2; segments: 3) (actual rows=407 loops=N)
+ Hash Key: tenk1.thousand
-> Index Scan using tenk1_unique1 on tenk1 (actual rows=407 loops=N)
Index Cond: (unique1 < 1200)
- -> Index Only Scan using tenk1_unique1 on tenk1 tenk1_1 (actual rows=0 loops=N)
+ -> Index Only Scan using tenk1_unique1 on tenk1 tenk1_1 (actual rows=1 loops=N)
Index Cond: (unique1 = tenk1.thousand)
Heap Fetches: N
- Optimizer: Pivotal Optimizer (GPORCA)
-(12 rows)
+ Optimizer: GPORCA
+(13 rows)
CREATE TABLE flt (f float);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'f' as the Cloudberry Database data distribution key for this table.
diff --git a/src/test/regress/expected/planhints.out b/src/test/regress/expected/planhints.out
index 029ccec87e..e8602d07e7 100644
--- a/src/test/regress/expected/planhints.out
+++ b/src/test/regress/expected/planhints.out
@@ -43,13 +43,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -58,7 +58,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
--------------------------------------------------------------------
@@ -81,13 +81,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -96,7 +96,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -115,13 +115,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -130,7 +130,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -149,13 +149,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -164,7 +164,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -173,31 +173,31 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
IndexOnlyScan(t3 our_amazing_index)
*/
EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
- QUERY PLAN
---------------------------------------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (t1.a = t2.a)
- -> Hash Join
- Hash Cond: (t3.a = t1.a)
- -> Append
- Partition Selectors: $0
- -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
- Index Cond: (a < 42)
- -> Hash
- -> Partition Selector (selector id: $0)
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Hash Join
+ Hash Cond: (t1.a = t2.a)
-> Index Only Scan using my_incredible_index on my_table t1
Index Cond: (a < 42)
- -> Hash
- -> Index Only Scan using your_amazing_index on your_table t2
- Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ -> Hash
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -215,13 +215,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -230,7 +230,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -248,19 +248,19 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
@@ -275,7 +275,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(35 rows)
/*+
@@ -293,19 +293,19 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
@@ -320,7 +320,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(35 rows)
--------------------------------------------------------------------
@@ -337,7 +337,7 @@ EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -349,7 +349,7 @@ EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -360,15 +360,15 @@ EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
/*+
@@ -380,7 +380,7 @@ EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
Gather Motion 3:1 (slice1; segments: 3)
-> Index Scan using my_incredible_index on my_table t1
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -392,7 +392,7 @@ EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
Gather Motion 3:1 (slice1; segments: 3)
-> Index Scan using my_bitmap_index on my_table t1
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -415,15 +415,15 @@ EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
---------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
/*+
@@ -434,15 +434,15 @@ EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
---------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
/*+
@@ -454,7 +454,7 @@ EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
Gather Motion 3:1 (slice1; segments: 3)
-> Index Only Scan using my_incredible_index on my_table t1
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -466,19 +466,19 @@ EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
Gather Motion 3:1 (slice1; segments: 3)
-> Index Scan using my_bitmap_index on my_table t1
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
IndexOnlyScan(t2 your_amazing_index)
*/
EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
- QUERY PLAN
------------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Index Only Scan using your_amazing_index on your_table t2
- Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -490,7 +490,7 @@ EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
Gather Motion 3:1 (slice1; segments: 3)
-> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -501,15 +501,15 @@ EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
/*+
@@ -520,15 +520,15 @@ EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
---------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
/*+
@@ -542,7 +542,7 @@ EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on my_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(6 rows)
/*+
@@ -556,7 +556,7 @@ EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on my_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(6 rows)
/*+
@@ -570,7 +570,7 @@ EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(6 rows)
/*+
@@ -584,7 +584,7 @@ EXPLAIN (costs off) SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(6 rows)
/*+
@@ -595,23 +595,23 @@ EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(19 rows)
/*+
@@ -622,23 +622,23 @@ EXPLAIN (costs off) SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
--------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(19 rows)
--------------------------------------------------------------------
@@ -661,13 +661,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -676,7 +676,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -694,13 +694,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -709,7 +709,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -727,13 +727,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -742,7 +742,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -760,13 +760,13 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -775,7 +775,7 @@ EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
--------------------------------------------------------------------
@@ -809,7 +809,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -832,7 +832,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -854,15 +854,15 @@ DETAIL: Conflict scan method hint.
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
--
@@ -888,7 +888,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -911,7 +911,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -933,15 +933,15 @@ DETAIL: Conflict scan method hint.
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
--
@@ -967,7 +967,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -990,7 +990,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -1012,15 +1012,15 @@ DETAIL: Conflict scan method hint.
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
--
@@ -1046,7 +1046,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -1069,7 +1069,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -1091,15 +1091,15 @@ DETAIL: Conflict scan method hint.
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(11 rows)
--------------------------------------------------------------------
@@ -1123,13 +1123,13 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1138,7 +1138,7 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -1157,13 +1157,13 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1172,7 +1172,7 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -1191,13 +1191,13 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1206,7 +1206,7 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -1215,31 +1215,31 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
IndexOnlyScan(t3 our_amazing_index)
*/
EXPLAIN (costs off) SELECT * FROM everybody_view;
- QUERY PLAN
---------------------------------------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (t1.a = t2.a)
- -> Hash Join
- Hash Cond: (t3.a = t1.a)
- -> Append
- Partition Selectors: $0
- -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
- Index Cond: (a < 42)
- -> Hash
- -> Partition Selector (selector id: $0)
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Hash Join
+ Hash Cond: (t1.a = t2.a)
-> Index Only Scan using my_incredible_index on my_table t1
Index Cond: (a < 42)
- -> Hash
- -> Index Only Scan using your_amazing_index on your_table t2
- Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ -> Hash
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -1257,13 +1257,13 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1272,7 +1272,7 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
-> Hash
-> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -1290,19 +1290,19 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
@@ -1317,7 +1317,7 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(35 rows)
/*+
@@ -1335,19 +1335,19 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
@@ -1362,7 +1362,7 @@ EXPLAIN (costs off) SELECT * FROM everybody_view;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(35 rows)
--------------------------------------------------------------------
@@ -1389,13 +1389,13 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Seq Scan on our_table_1_prt_p1_1 t3
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3
Filter: (a < 42)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4
Filter: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1404,7 +1404,7 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -1427,13 +1427,13 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1442,7 +1442,7 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
-- NB: IndexScan on AO table is invalid because AO tables do not support index
@@ -1465,13 +1465,13 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1480,7 +1480,7 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
-> Hash
-> Seq Scan on your_table t2
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -1493,31 +1493,31 @@ EXPLAIN (costs off) WITH cte AS
SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
)
SELECT a1, a2, a3 FROM cte WHERE a1<42;
- QUERY PLAN
---------------------------------------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (t1.a = t2.a)
- -> Hash Join
- Hash Cond: (t3.a = t1.a)
- -> Append
- Partition Selectors: $0
- -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_1
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_2
- Index Cond: (a < 42)
- -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_3
- Index Cond: (a < 42)
- -> Hash
- -> Partition Selector (selector id: $0)
+ Hash Cond: (t3.a = t1.a)
+ -> Append
+ Partition Selectors: $0
+ -> Index Only Scan using our_table_1_prt_p1_1_a_idx2 on our_table_1_prt_p1_1 t3_1
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_2_a_idx2 on our_table_1_prt_p1_2 t3_2
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_3_a_idx2 on our_table_1_prt_p1_3 t3_3
+ Index Cond: (a < 42)
+ -> Index Only Scan using our_table_1_prt_p1_4_a_idx2 on our_table_1_prt_p1_4 t3_4
+ Index Cond: (a < 42)
+ -> Hash
+ -> Partition Selector (selector id: $0)
+ -> Hash Join
+ Hash Cond: (t1.a = t2.a)
-> Index Only Scan using my_incredible_index on my_table t1
Index Cond: (a < 42)
- -> Hash
- -> Index Only Scan using your_amazing_index on your_table t2
- Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ -> Hash
+ -> Seq Scan on your_table t2
+ Filter: (a < 42)
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -1539,13 +1539,13 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3
+ -> Index Scan using our_table_1_prt_p1_1_a_idx3 on our_table_1_prt_p1_1 t3_1
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_1
+ -> Index Scan using our_table_1_prt_p1_2_a_idx3 on our_table_1_prt_p1_2 t3_2
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_2
+ -> Index Scan using our_table_1_prt_p1_3_a_idx3 on our_table_1_prt_p1_3 t3_3
Index Cond: (a < 42)
- -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_3
+ -> Index Scan using our_table_1_prt_p1_4_a_idx3 on our_table_1_prt_p1_4 t3_4
Index Cond: (a < 42)
-> Hash
-> Partition Selector (selector id: $0)
@@ -1554,7 +1554,7 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
-> Hash
-> Index Scan using your_bitmap_index on your_table t2
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(23 rows)
/*+
@@ -1576,19 +1576,19 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
@@ -1603,7 +1603,7 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(35 rows)
/*+
@@ -1625,19 +1625,19 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Hash Cond: (t3.a = t1.a)
-> Append
Partition Selectors: $0
- -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_1 t3_1
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_1_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_1
+ -> Bitmap Heap Scan on our_table_1_prt_p1_2 t3_2
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_2_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_2
+ -> Bitmap Heap Scan on our_table_1_prt_p1_3 t3_3
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_3_a_idx3
Index Cond: (a < 42)
- -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_3
+ -> Bitmap Heap Scan on our_table_1_prt_p1_4 t3_4
Recheck Cond: (a < 42)
-> Bitmap Index Scan on our_table_1_prt_p1_4_a_idx3
Index Cond: (a < 42)
@@ -1652,7 +1652,7 @@ SELECT a1, a2, a3 FROM cte WHERE a1<42;
Recheck Cond: (a < 42)
-> Bitmap Index Scan on your_bitmap_index
Index Cond: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(35 rows)
--------------------------------------------------------------------
@@ -1671,7 +1671,7 @@ HINT: To uniquely identify a row within a distributed table, use the "gp_segmen
Gather Motion 3:1 (slice1; segments: 3)
-> Tid Scan on my_table t1
TID Cond: (ctid = '(0,1)'::tid)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -1685,44 +1685,46 @@ HINT: To uniquely identify a row within a distributed table, use the "gp_segmen
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (ctid >= '(0,1)'::tid)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
IndexScanRegexp(t1 '*awesome*')
*/
EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Seq Scan on my_table t1
- Filter: (a < 42)
- Optimizer: Postgres-based planner
+ -> Index Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
IndexOnlyScanRegexp(t1 '*awesome*')
*/
EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+----------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Seq Scan on my_table t1
- Filter: (a < 42)
- Optimizer: Postgres-based planner
+ -> Index Only Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
BitmapScanRegexp(t1 '*awesome*')
*/
EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Seq Scan on my_table t1
- Filter: (a < 42)
- Optimizer: Postgres-based planner
-(4 rows)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_incredible_index
+ Index Cond: (a < 42)
+ Optimizer: Postgres query optimizer
+(6 rows)
--------------------------------------------------------------------
--
@@ -1742,7 +1744,7 @@ DETAIL: SeqScan hint requires a relation.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
-- Mixing NoIndexScan and SeqScan hints
@@ -1758,7 +1760,7 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -1773,6 +1775,6 @@ DETAIL: Conflict scan method hint.
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on my_table t1
Filter: (a < 42)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
diff --git a/src/test/regress/expected/planhints_optimizer.out b/src/test/regress/expected/planhints_optimizer.out
index d2a4c54cc0..bc2886e679 100644
--- a/src/test/regress/expected/planhints_optimizer.out
+++ b/src/test/regress/expected/planhints_optimizer.out
@@ -1470,12 +1470,12 @@ HINT: To uniquely identify a row within a distributed table, use the "gp_segmen
EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: IndexScanRegexp not supported
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Seq Scan on my_table t1
- Filter: (a < 42)
- Optimizer: Postgres-based planner
+ -> Index Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -1484,12 +1484,12 @@ DETAIL: Operator Unsupported plan hint: IndexScanRegexp not supported
EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: IndexOnlyScanRegexp not supported
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+----------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Seq Scan on my_table t1
- Filter: (a < 42)
- Optimizer: Postgres-based planner
+ -> Index Only Scan using my_incredible_index on my_table t1
+ Index Cond: (a < 42)
+ Optimizer: Postgres query optimizer
(4 rows)
/*+
@@ -1498,13 +1498,15 @@ DETAIL: Operator Unsupported plan hint: IndexOnlyScanRegexp not supported
EXPLAIN (costs off) SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Operator Unsupported plan hint: BitmapScanRegexp not supported
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
- -> Seq Scan on my_table t1
- Filter: (a < 42)
- Optimizer: Postgres-based planner
-(4 rows)
+ -> Bitmap Heap Scan on my_table t1
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_incredible_index
+ Index Cond: (a < 42)
+ Optimizer: Postgres query optimizer
+(6 rows)
--------------------------------------------------------------------
--
diff --git a/src/test/regress/expected/qp_rowsecurity.out b/src/test/regress/expected/qp_rowsecurity.out
index c809c76d32..bd578cb94a 100644
--- a/src/test/regress/expected/qp_rowsecurity.out
+++ b/src/test/regress/expected/qp_rowsecurity.out
@@ -327,19 +327,19 @@ explain (costs off ) select * from foo_part_rls where leak_data(a);
-----------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_3
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_2
Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_4
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_3
Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_4
Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_6
+ -> Seq Scan on foo_part_rls_1_prt_6 foo_part_rls_5
Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_6
Filter: ((c > 300) AND ((a * 10) = b) AND leak_data(a))
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(15 rows)
select * from foo_part_rls where leak_data(a);
@@ -365,19 +365,19 @@ explain (costs off )select * from foo_part_rls where leak_data(c);
-----------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_3
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_2
Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_4
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_3
Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_4
Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_6
+ -> Seq Scan on foo_part_rls_1_prt_6 foo_part_rls_5
Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_6
Filter: (((LEAST(a, b) >= 2) OR ((a * 10) >= 30)) AND leak_data(c))
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(15 rows)
select * from foo_part_rls where leak_data(c);
@@ -427,17 +427,17 @@ explain (costs off ) select * from foo_part_rls where leak_data(a);
-----------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on foo_part_rls_1_prt_3
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_1
Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_4
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_2
Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_3
Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_6
+ -> Seq Scan on foo_part_rls_1_prt_6 foo_part_rls_4
Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_5
Filter: ((a > 3) AND (b > 35) AND ((c % 100) = 0) AND leak_data(a))
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(13 rows)
select * from foo_part_rls where leak_data(a);
@@ -465,33 +465,33 @@ where t1.a=bar_part_rls.p and bar_part_rls.q is not null and leak_data(c);
------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Join
- Hash Cond: (bar_part_rls_1_prt_1.p = foo_part_rls_1_prt_2.a)
+ Hash Cond: (bar_part_rls.p = foo_part_rls.a)
-> Append
- -> Seq Scan on bar_part_rls_1_prt_1
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_2
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_2
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_3
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_3
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_4
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_4
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_5
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_5
Filter: (q IS NOT NULL)
-> Hash
-> Append
- -> Seq Scan on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_3
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_2
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_4
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_3
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_4
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_6
+ -> Seq Scan on foo_part_rls_1_prt_6 foo_part_rls_5
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_6
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND leak_data(c))
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(29 rows)
-- The RTE of the relation containing security quals is present inside a
@@ -503,33 +503,33 @@ bar_part_rls.q is not null;
-------------------------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Semi Join
- Hash Cond: (bar_part_rls_1_prt_1.p = foo_part_rls_1_prt_2.a)
+ Hash Cond: (bar_part_rls.p = foo_part_rls.a)
-> Append
- -> Seq Scan on bar_part_rls_1_prt_1
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_2
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_2
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_3
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_3
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_4
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_4
Filter: (q IS NOT NULL)
- -> Seq Scan on bar_part_rls_1_prt_5
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_5
Filter: (q IS NOT NULL)
-> Hash
-> Append
- -> Seq Scan on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_3
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_2
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_4
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_3
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_4
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_6
+ -> Seq Scan on foo_part_rls_1_prt_6 foo_part_rls_5
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_6
Filter: (((b IS DISTINCT FROM c) OR ((b + 1) = 4)) AND (abs(a) >= 10) AND leak_data(c))
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(29 rows)
-- The RTE of the relation containing security quals is present inside a CTE
@@ -540,25 +540,25 @@ cte.a=bar_part_rls.p and q = 10 and leak_data(cte.a);
-----------------------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Hash Right Join
- Hash Cond: (bar_part_rls_1_prt_1.p = foo_part_rls_1_prt_2.a)
- Join Filter: leak_data(foo_part_rls_1_prt_2.a)
- -> Seq Scan on bar_part_rls_1_prt_1
+ Hash Cond: (bar_part_rls.p = foo_part_rls.a)
+ Join Filter: leak_data(foo_part_rls.a)
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls
Filter: (q = 10)
-> Hash
-> Append
- -> Seq Scan on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
- -> Seq Scan on foo_part_rls_1_prt_3
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_2
Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
- -> Seq Scan on foo_part_rls_1_prt_4
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_3
Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
- -> Seq Scan on foo_part_rls_1_prt_5
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_4
Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
- -> Seq Scan on foo_part_rls_1_prt_6
+ -> Seq Scan on foo_part_rls_1_prt_6 foo_part_rls_5
Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_6
Filter: ((a > LEAST(a, b)) AND ((b IS DISTINCT FROM c) OR ((b + 1) = 4)))
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(21 rows)
reset session authorization;
@@ -569,31 +569,31 @@ create policy p1 on foo_part_rls as permissive for select using (a in
(select p from bar_part_rls));
set session authorization new_user;
explain (costs off ) select * from foo_part_rls where foo_part_rls.b <15;
- QUERY PLAN
------------------------------------------------------------------------------------------
+ QUERY PLAN
+----------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: ((hashed SubPlan 1 (copy 2)) AND (b < 15))
SubPlan 1 (copy 2)
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Append
- -> Seq Scan on bar_part_rls_1_prt_1
- -> Seq Scan on bar_part_rls_1_prt_2
- -> Seq Scan on bar_part_rls_1_prt_3
- -> Seq Scan on bar_part_rls_1_prt_4
- -> Seq Scan on bar_part_rls_1_prt_5
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_2
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_3
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_4
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_5
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_2
Filter: ((hashed SubPlan 1 (copy 3)) AND (b < 15))
SubPlan 1 (copy 3)
-> Broadcast Motion 3:3 (slice3; segments: 3)
-> Append
- -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1_prt_1_1
- -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_1_prt_2_1
- -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_1_prt_3_1
- -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_1_prt_4_1
- -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_1_prt_5_1
- Optimizer: Postgres-based planner
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_7
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_8
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_9
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_10
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_11
+ Optimizer: Postgres query optimizer
(23 rows)
reset session authorization;
@@ -606,35 +606,35 @@ create index btindex on foo_part_rls using btree(a);
-- the query
set enable_seqscan to off;
explain (costs off) select * from foo_part_rls where a is null;
- QUERY PLAN
----------------------------------------------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------------------------------------------------------
Gather Motion 1:1 (slice1; segments: 1)
-> Append
- -> Index Scan using foo_part_rls_1_prt_2_a_idx on foo_part_rls_1_prt_2
+ -> Index Scan using foo_part_rls_1_prt_2_a_idx on foo_part_rls_1_prt_2 foo_part_rls_1
Index Cond: (a IS NULL)
- -> Index Scan using foo_part_rls_1_prt_3_a_idx on foo_part_rls_1_prt_3
+ -> Index Scan using foo_part_rls_1_prt_3_a_idx on foo_part_rls_1_prt_3 foo_part_rls_2
Index Cond: (a IS NULL)
- -> Index Scan using foo_part_rls_1_prt_4_a_idx on foo_part_rls_1_prt_4
+ -> Index Scan using foo_part_rls_1_prt_4_a_idx on foo_part_rls_1_prt_4 foo_part_rls_3
Index Cond: (a IS NULL)
- -> Index Scan using foo_part_rls_1_prt_5_a_idx on foo_part_rls_1_prt_5
+ -> Index Scan using foo_part_rls_1_prt_5_a_idx on foo_part_rls_1_prt_5 foo_part_rls_4
Index Cond: (a IS NULL)
- -> Index Scan using foo_part_rls_1_prt_6_a_idx on foo_part_rls_1_prt_6
+ -> Index Scan using foo_part_rls_1_prt_6_a_idx on foo_part_rls_1_prt_6 foo_part_rls_5
Index Cond: (a IS NULL)
- -> Index Scan using foo_part_rls_1_prt_other_part_a_idx on foo_part_rls_1_prt_other_part
+ -> Index Scan using foo_part_rls_1_prt_other_part_a_idx on foo_part_rls_1_prt_other_part foo_part_rls_6
Index Cond: (a IS NULL)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(15 rows)
-- Dynamic Index Scan is not generated by ORCA when RLS is enabled
set session authorization new_user;
explain (costs off) select * from foo_part_rls where a is null;
- QUERY PLAN
----------------------------------------------------------------------------
+ QUERY PLAN
+----------------------------------------------------------------------------------------
Gather Motion 1:1 (slice1; segments: 1)
- -> Index Scan using foo_part_rls_1_prt_2_a_idx on foo_part_rls_1_prt_2
+ -> Index Scan using foo_part_rls_1_prt_2_a_idx on foo_part_rls_1_prt_2 foo_part_rls
Index Cond: (a IS NULL)
Filter: (b = 10)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(5 rows)
reset session authorization;
@@ -655,13 +655,13 @@ alter table rootpart_1_prt_2 enable row level security;
create policy p1 on rootpart_1_prt_2 using (a>=7);
set session authorization new_user;
explain (costs off) select * from rootpart;
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on rootpart_1_prt_1
- -> Seq Scan on rootpart_1_prt_2
- Optimizer: Postgres-based planner
+ -> Seq Scan on rootpart_1_prt_1 rootpart_1
+ -> Seq Scan on rootpart_1_prt_2 rootpart_2
+ Optimizer: Postgres query optimizer
(5 rows)
-- Issue #16961
@@ -673,7 +673,7 @@ explain (costs off) select * from rootpart_1_prt_2;
Gather Motion 3:1 (slice1; segments: 3)
-> Seq Scan on rootpart_1_prt_2
Filter: (a >= 7)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(4 rows)
reset session authorization;
@@ -727,23 +727,23 @@ set session authorization new_user;
-- Querying the root will fallback to planner as ORCA doesn't supports
-- Multi-level partitioned tables
explain (costs off) select * from roottab;
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on roottableaf1
- -> Seq Scan on roottableaf2
- Optimizer: Postgres-based planner
+ -> Seq Scan on roottableaf1 roottab_1
+ -> Seq Scan on roottableaf2 roottab_2
+ Optimizer: Postgres query optimizer
(5 rows)
explain (costs off) select * from roottabmid1;
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on roottableaf1
- -> Seq Scan on roottableaf2
- Optimizer: Postgres-based planner
+ -> Seq Scan on roottableaf1 roottabmid1_1
+ -> Seq Scan on roottableaf2 roottabmid1_2
+ Optimizer: Postgres query optimizer
(5 rows)
explain (costs off) select * from roottableaf1;
@@ -786,11 +786,11 @@ explain (costs off) select * from parent;
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on parent
+ -> Seq Scan on parent parent_1
Filter: (a >= 7)
- -> Seq Scan on child1
+ -> Seq Scan on child1 parent_2
Filter: (a >= 7)
- -> Seq Scan on child2
+ -> Seq Scan on child2 parent_3
Filter: (a >= 7)
Optimizer: Postgres-based planner
(9 rows)
@@ -902,36 +902,29 @@ alter table foo_part_rls enable row level security;
create policy p1 on foo_part_rls using (c>=500);
set session authorization new_user;
explain (costs off) update foo_part_rls set a=10 where foo_part_rls.c = 800;
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------------
Update on foo_part_rls
- Update on foo_part_rls_1_prt_1
- Update on foo_part_rls_1_prt_2
- Update on foo_part_rls_1_prt_3
- Update on foo_part_rls_1_prt_4
- Update on foo_part_rls_1_prt_5
+ Update on foo_part_rls_1_prt_1 foo_part_rls_1
+ Update on foo_part_rls_1_prt_2 foo_part_rls_2
+ Update on foo_part_rls_1_prt_3 foo_part_rls_3
+ Update on foo_part_rls_1_prt_4 foo_part_rls_4
+ Update on foo_part_rls_1_prt_5 foo_part_rls_5
-> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
-> Split
- -> Seq Scan on foo_part_rls_1_prt_1
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice2; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_2
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice3; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_3
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice4; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_4
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice5; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_5
- Filter: ((c >= 500) AND (c = 800))
- Optimizer: Postgres-based planner
-(27 rows)
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_1 foo_part_rls_1
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_2
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_3
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_4
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_5
+ Filter: ((c >= 500) AND (c = 800))
+ Optimizer: Postgres query optimizer
+(20 rows)
reset session authorization;
drop policy p1 on foo_part_rls;
@@ -970,13 +963,13 @@ alter table foo_part_rls enable row level security;
create policy p1 on foo_part_rls using (c>=300);
set session authorization new_user;
explain (costs off) delete from foo_part_rls where foo_part_rls.b=30;
- QUERY PLAN
--------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------
Delete on foo_part_rls
- Delete on foo_part_rls_1_prt_2
- -> Seq Scan on foo_part_rls_1_prt_2
+ Delete on foo_part_rls_1_prt_2 foo_part_rls_1
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: ((c >= 300) AND (b = 30))
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(5 rows)
reset session authorization;
diff --git a/src/test/regress/expected/qp_rowsecurity_optimizer.out b/src/test/regress/expected/qp_rowsecurity_optimizer.out
index d091049e40..8e5881cfd4 100644
--- a/src/test/regress/expected/qp_rowsecurity_optimizer.out
+++ b/src/test/regress/expected/qp_rowsecurity_optimizer.out
@@ -501,31 +501,31 @@ set session authorization new_user;
explain (costs off ) select * from foo_part_rls where foo_part_rls.b <15;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
- QUERY PLAN
------------------------------------------------------------------------------------------
+ QUERY PLAN
+----------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on foo_part_rls_1_prt_2
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: ((hashed SubPlan 1 (copy 2)) AND (b < 15))
SubPlan 1 (copy 2)
-> Broadcast Motion 3:3 (slice2; segments: 3)
-> Append
- -> Seq Scan on bar_part_rls_1_prt_1
- -> Seq Scan on bar_part_rls_1_prt_2
- -> Seq Scan on bar_part_rls_1_prt_3
- -> Seq Scan on bar_part_rls_1_prt_4
- -> Seq Scan on bar_part_rls_1_prt_5
- -> Seq Scan on foo_part_rls_1_prt_other_part
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_2
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_3
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_4
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_5
+ -> Seq Scan on foo_part_rls_1_prt_other_part foo_part_rls_2
Filter: ((hashed SubPlan 1 (copy 3)) AND (b < 15))
SubPlan 1 (copy 3)
-> Broadcast Motion 3:3 (slice3; segments: 3)
-> Append
- -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_1_prt_1_1
- -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_1_prt_2_1
- -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_1_prt_3_1
- -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_1_prt_4_1
- -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_1_prt_5_1
- Optimizer: Postgres-based planner
+ -> Seq Scan on bar_part_rls_1_prt_1 bar_part_rls_7
+ -> Seq Scan on bar_part_rls_1_prt_2 bar_part_rls_8
+ -> Seq Scan on bar_part_rls_1_prt_3 bar_part_rls_9
+ -> Seq Scan on bar_part_rls_1_prt_4 bar_part_rls_10
+ -> Seq Scan on bar_part_rls_1_prt_5 bar_part_rls_11
+ Optimizer: Postgres query optimizer
(23 rows)
reset session authorization;
@@ -652,13 +652,13 @@ set session authorization new_user;
explain (costs off) select * from roottab;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Multi-level partitioned tables
- QUERY PLAN
-------------------------------------------
+ QUERY PLAN
+------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on roottableaf1
- -> Seq Scan on roottableaf2
- Optimizer: Postgres-based planner
+ -> Seq Scan on roottableaf1 roottab_1
+ -> Seq Scan on roottableaf2 roottab_2
+ Optimizer: Postgres query optimizer
(5 rows)
explain (costs off) select * from roottabmid1;
@@ -712,13 +712,13 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on parent
+ -> Seq Scan on parent parent_1
Filter: (a >= 7)
- -> Seq Scan on child1
+ -> Seq Scan on child1 parent_2
Filter: (a >= 7)
- -> Seq Scan on child2
+ -> Seq Scan on child2 parent_3
Filter: (a >= 7)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(9 rows)
-- Below queries will error out as no SELECT permission for user on child
@@ -836,36 +836,29 @@ set session authorization new_user;
explain (costs off) update foo_part_rls set a=10 where foo_part_rls.c = 800;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------------
Update on foo_part_rls
- Update on foo_part_rls_1_prt_1
- Update on foo_part_rls_1_prt_2
- Update on foo_part_rls_1_prt_3
- Update on foo_part_rls_1_prt_4
- Update on foo_part_rls_1_prt_5
+ Update on foo_part_rls_1_prt_1 foo_part_rls_1
+ Update on foo_part_rls_1_prt_2 foo_part_rls_2
+ Update on foo_part_rls_1_prt_3 foo_part_rls_3
+ Update on foo_part_rls_1_prt_4 foo_part_rls_4
+ Update on foo_part_rls_1_prt_5 foo_part_rls_5
-> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
-> Split
- -> Seq Scan on foo_part_rls_1_prt_1
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice2; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_2
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice3; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_3
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice4; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_4
- Filter: ((c >= 500) AND (c = 800))
- -> Explicit Redistribute Motion 3:3 (slice5; segments: 3)
- -> Split
- -> Seq Scan on foo_part_rls_1_prt_5
- Filter: ((c >= 500) AND (c = 800))
- Optimizer: Postgres-based planner
-(27 rows)
+ -> Append
+ -> Seq Scan on foo_part_rls_1_prt_1 foo_part_rls_1
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_2
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_3 foo_part_rls_3
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_4 foo_part_rls_4
+ Filter: ((c >= 500) AND (c = 800))
+ -> Seq Scan on foo_part_rls_1_prt_5 foo_part_rls_5
+ Filter: ((c >= 500) AND (c = 800))
+ Optimizer: Postgres query optimizer
+(20 rows)
reset session authorization;
drop policy p1 on foo_part_rls;
@@ -904,13 +897,15 @@ alter table foo_part_rls enable row level security;
create policy p1 on foo_part_rls using (c>=300);
set session authorization new_user;
explain (costs off) delete from foo_part_rls where foo_part_rls.b=30;
- QUERY PLAN
-----------------------------------------------------
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: DML(delete) on partitioned tables
+ QUERY PLAN
+-------------------------------------------------------
Delete on foo_part_rls
- -> Dynamic Seq Scan on foo_part_rls
- Number of partitions to scan: 1 (out of 5)
+ Delete on foo_part_rls_1_prt_2 foo_part_rls_1
+ -> Seq Scan on foo_part_rls_1_prt_2 foo_part_rls_1
Filter: ((c >= 300) AND (b = 30))
- Optimizer: GPORCA
+ Optimizer: Postgres query optimizer
(5 rows)
reset session authorization;
diff --git a/src/test/regress/expected/rowhints.out b/src/test/regress/expected/rowhints.out
index 52b675fd84..b9e0e6a0da 100644
--- a/src/test/regress/expected/rowhints.out
+++ b/src/test/regress/expected/rowhints.out
@@ -1,6 +1,7 @@
-- Test Optimizer Row Hints Feature
--
-- Purpose: Test that row hints may be used to edit cardinality estimates
+-- Row hints have not implments in Postgres-based planner
LOAD 'pg_hint_plan';
DROP SCHEMA IF EXISTS rowhints CASCADE;
CREATE SCHEMA rowhints;
@@ -40,15 +41,15 @@ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3
-> Nested Loop (cost=10000000000.00..10000000051.79 rows=3333 width=4)
-> Broadcast Motion 3:3 (slice3; segments: 3) (cost=0.00..7.87 rows=102 width=0)
-> Append (cost=0.00..6.51 rows=34 width=0)
- -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=0.00..1.06 rows=6 width=0)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=0.00..1.07 rows=7 width=0)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=0.00..1.07 rows=7 width=0)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=0.00..1.07 rows=7 width=0)
- -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=0.00..1.07 rows=7 width=0)
- -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=0.00..1.01 rows=1 width=0)
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1 (cost=0.00..1.06 rows=6 width=0)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_5 (cost=0.00..1.07 rows=7 width=0)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_6 (cost=0.00..1.01 rows=1 width=0)
-> Materialize (cost=0.00..1.50 rows=33 width=4)
-> Seq Scan on my_table t1 (cost=0.00..1.33 rows=33 width=4)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(17 rows)
\o results/pg_hint_plan.tmpout
@@ -60,23 +61,23 @@ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123 width=xxx)
- -> Nested Loop (cost=xxx..xxx rows=41 width=xxx)
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333333 width=xxx)
-> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
-> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
-> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
-> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
-> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
-> Append (cost=xxx..xxx rows=34 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_5 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_6 (cost=xxx..xxx rows=1 width=xxx)
-> Materialize (cost=xxx..xxx rows=33 width=xxx)
-> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
\o results/pg_hint_plan.tmpout
/*+
@@ -87,23 +88,23 @@ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000123 width=xxx)
- -> Nested Loop (cost=xxx..xxx rows=333374 width=xxx)
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333333 width=xxx)
-> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
-> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
-> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
-> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
-> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
-> Append (cost=xxx..xxx rows=34 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_5 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_6 (cost=xxx..xxx rows=1 width=xxx)
-> Materialize (cost=xxx..xxx rows=33 width=xxx)
-> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
\o results/pg_hint_plan.tmpout
/*+
@@ -114,23 +115,23 @@ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=999877 width=xxx)
- -> Nested Loop (cost=xxx..xxx rows=333292 width=xxx)
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333333 width=xxx)
-> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
-> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
-> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
-> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
-> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
-> Append (cost=xxx..xxx rows=34 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_5 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_6 (cost=xxx..xxx rows=1 width=xxx)
-> Materialize (cost=xxx..xxx rows=33 width=xxx)
-> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
\o results/pg_hint_plan.tmpout
/*+
@@ -141,23 +142,23 @@ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123000000 width=xxx)
- -> Nested Loop (cost=xxx..xxx rows=41000000 width=xxx)
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333333 width=xxx)
-> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
-> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
-> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
-> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
-> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
-> Append (cost=xxx..xxx rows=34 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_5 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_6 (cost=xxx..xxx rows=1 width=xxx)
-> Materialize (cost=xxx..xxx rows=33 width=xxx)
-> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
--------------------------------------------------------------------
--
@@ -173,13 +174,13 @@ EXPLAIN SELECT * FROM my_table, (SELECT * FROM your_table) AS q;
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost={inf}..{inf} rows=123 width=xxx)
- -> Nested Loop (cost={inf}..{inf} rows=41 width=xxx)
+ Gather Motion 3:1 (slice1; segments: 3) (cost={inf}..{inf} rows=10000 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
-> Seq Scan on my_table (cost=xxx..xxx rows=33 width=xxx)
-> Materialize (cost=xxx..xxx rows=100 width=xxx)
-> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
-> Seq Scan on your_table (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
--------------------------------------------------------------------
--
@@ -195,13 +196,13 @@ EXPLAIN WITH cte AS (SELECT * FROM my_table, (SELECT * FROM your_table) as q) SE
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost={inf}..{inf} rows=123 width=xxx)
- -> Nested Loop (cost={inf}..{inf} rows=41 width=xxx)
+ Gather Motion 3:1 (slice1; segments: 3) (cost={inf}..{inf} rows=10000 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
-> Seq Scan on my_table (cost=xxx..xxx rows=33 width=xxx)
-> Materialize (cost=xxx..xxx rows=100 width=xxx)
-> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
-> Seq Scan on your_table (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
--------------------------------------------------------------------
-- Test updating lower join row hint
@@ -217,23 +218,23 @@ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=12300 width=xxx)
- -> Nested Loop (cost=xxx..xxx rows=4100 width=xxx)
- -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
- -> Append (cost=xxx..xxx rows=34 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
- -> Materialize (cost={inf}..{inf} rows=41 width=xxx)
- -> Nested Loop (cost={inf}..{inf} rows=41 width=xxx)
- -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
- -> Materialize (cost=xxx..xxx rows=100 width=xxx)
- -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
- -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333333 width=xxx)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
+ -> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
+ -> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
+ -> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
+ -> Append (cost=xxx..xxx rows=34 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_5 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_6 (cost=xxx..xxx rows=1 width=xxx)
+ -> Materialize (cost=xxx..xxx rows=33 width=xxx)
+ -> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
+ Optimizer: Postgres query optimizer
\o results/pg_hint_plan.tmpout
/*+
@@ -244,21 +245,21 @@ EXPLAIN SELECT t1.a, t2.a FROM my_table AS t1, your_table AS t2, our_table AS t3
\! sql/maskout.sh results/pg_hint_plan.tmpout
QUERY PLAN
----------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=123000000 width=xxx)
- -> Nested Loop (cost=xxx..xxx rows=41000000 width=xxx)
+ Gather Motion 3:1 (slice1; segments: 3) (cost=xxx..xxx rows=1000000 width=xxx)
+ -> Nested Loop (cost=xxx..xxx rows=333333 width=xxx)
-> Broadcast Motion 3:3 (slice2; segments: 3) (cost=xxx..xxx rows=100 width=xxx)
-> Seq Scan on your_table t2 (cost=xxx..xxx rows=33 width=xxx)
-> Materialize (cost={inf}..{inf} rows=3333 width=xxx)
-> Nested Loop (cost={inf}..{inf} rows=3333 width=xxx)
-> Broadcast Motion 3:3 (slice3; segments: 3) (cost=xxx..xxx rows=102 width=xxx)
-> Append (cost=xxx..xxx rows=34 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_1 t3 (cost=xxx..xxx rows=6 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_2 t3_1 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_3 t3_2 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_4 t3_3 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_5 t3_4 (cost=xxx..xxx rows=7 width=xxx)
- -> Seq Scan on our_table_1_prt_p1_6 t3_5 (cost=xxx..xxx rows=1 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_1 t3_1 (cost=xxx..xxx rows=6 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_2 t3_2 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_3 t3_3 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_4 t3_4 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_5 t3_5 (cost=xxx..xxx rows=7 width=xxx)
+ -> Seq Scan on our_table_1_prt_p1_6 t3_6 (cost=xxx..xxx rows=1 width=xxx)
-> Materialize (cost=xxx..xxx rows=33 width=xxx)
-> Seq Scan on my_table t1 (cost=xxx..xxx rows=33 width=xxx)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
diff --git a/src/test/regress/expected/rowhints_optimizer.out b/src/test/regress/expected/rowhints_optimizer.out
index 040b8d75d7..a24b72604c 100644
--- a/src/test/regress/expected/rowhints_optimizer.out
+++ b/src/test/regress/expected/rowhints_optimizer.out
@@ -1,6 +1,7 @@
-- Test Optimizer Row Hints Feature
--
-- Purpose: Test that row hints may be used to edit cardinality estimates
+-- Row hints have not implments in Postgres-based planner
LOAD 'pg_hint_plan';
DROP SCHEMA IF EXISTS rowhints CASCADE;
CREATE SCHEMA rowhints;
diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out
index 3c5b7436d8..2fc722f5c4 100644
--- a/src/test/regress/expected/rowsecurity.out
+++ b/src/test/regress/expected/rowsecurity.out
@@ -2237,6 +2237,8 @@ INSERT INTO z1 VALUES
CREATE POLICY p1 ON z1 TO regress_rls_group1 USING (a % 2 = 0);
CREATE POLICY p2 ON z1 TO regress_rls_group2 USING (a % 2 = 1);
ALTER TABLE z1 ENABLE ROW LEVEL SECURITY;
+analyze z1;
+analyze z2;
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM z1 WHERE f_leak(b);
NOTICE: f_leak => bbb
@@ -2268,16 +2270,16 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
PREPARE plancache_test2 AS WITH q AS MATERIALIZED (SELECT * FROM z1 WHERE f_leak(b)) SELECT * FROM q,z2;
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z1
- Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on z2
+ -> Shared Scan (share slice:id 1:0)
+ -> Seq Scan on z1
+ Filter: (((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
@@ -2325,16 +2327,16 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z1
- Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on z2
+ -> Shared Scan (share slice:id 1:0)
+ -> Seq Scan on z1
+ Filter: (((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
@@ -2381,16 +2383,16 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z1
- Filter: (((a % 2) = 1) AND f_leak(b))
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on z2
+ -> Shared Scan (share slice:id 1:0)
+ -> Seq Scan on z1
+ Filter: (((a % 2) = 1) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
@@ -2437,16 +2439,16 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test;
(4 rows)
EXPLAIN (COSTS OFF) EXECUTE plancache_test2;
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Nested Loop
- -> Shared Scan (share slice:id 1:0)
- -> Seq Scan on z1
- Filter: (((a % 2) = 1) AND f_leak(b))
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
-> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on z2
+ -> Shared Scan (share slice:id 1:0)
+ -> Seq Scan on z1
+ Filter: (((a % 2) = 1) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
diff --git a/src/test/regress/expected/rowsecurity_optimizer.out b/src/test/regress/expected/rowsecurity_optimizer.out
index 12c06c0431..5717d5bf9a 100644
--- a/src/test/regress/expected/rowsecurity_optimizer.out
+++ b/src/test/regress/expected/rowsecurity_optimizer.out
@@ -4,6 +4,7 @@
-- Clean up in case a prior regression run failed
-- Suppress NOTICE messages when users/groups don't exist
SET client_min_messages TO 'warning';
+SET gp_enable_relsize_collection to on;
set optimizer_trace_fallback to on;
DROP USER IF EXISTS regress_rls_alice;
DROP USER IF EXISTS regress_rls_bob;
@@ -67,7 +68,6 @@ CREATE TABLE document (
dauthor name,
dtitle text
);
-WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
GRANT ALL ON document TO public;
INSERT INTO document VALUES
( 1, 11, 1, 'regress_rls_bob', 'my first novel'),
@@ -129,7 +129,7 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
@@ -137,19 +137,19 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
Table "regress_rls_schema.document"
@@ -784,11 +784,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: ((a % 2) = 0)
Optimizer: Postgres query optimizer
(9 rows)
@@ -817,11 +817,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
-----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: (((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
@@ -846,13 +846,13 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: ((a % 2) = 0)
- Optimizer: Postgres-based planner
+ Optimizer: Postgres query optimizer
(9 rows)
-- reference to whole-row reference
@@ -875,11 +875,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: ((a % 2) = 0)
Optimizer: Postgres query optimizer
(9 rows)
@@ -904,11 +904,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: ((a % 2) = 0)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: ((a % 2) = 0)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: ((a % 2) = 0)
Optimizer: Postgres query optimizer
(9 rows)
@@ -937,11 +937,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
-----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: (((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(9 rows)
@@ -1007,11 +1007,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: f_leak(b)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: f_leak(b)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: f_leak(b)
Optimizer: Postgres query optimizer
(9 rows)
@@ -1055,11 +1055,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: f_leak(b)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: f_leak(b)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: f_leak(b)
Optimizer: Postgres query optimizer
(9 rows)
@@ -1113,7 +1113,7 @@ CREATE POLICY pp1r ON part_document AS RESTRICTIVE TO regress_rls_dave
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
@@ -1121,17 +1121,17 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Non-default collation
Partitioned table "regress_rls_schema.part_document"
@@ -1188,19 +1188,19 @@ NOTICE: f_leak => my first satire
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
- QUERY PLAN
-------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
InitPlan 1 (returns $0) (slice2)
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_bob'::name)
-> Append
- -> Seq Scan on part_document_fiction
+ -> Seq Scan on part_document_fiction part_document_1
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire
+ -> Seq Scan on part_document_satire part_document_2
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction
+ -> Seq Scan on part_document_nonfiction part_document_3
Filter: ((dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(13 rows)
@@ -1237,19 +1237,19 @@ NOTICE: f_leak => awesome technology book
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
- QUERY PLAN
---------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
InitPlan 1 (returns $0) (slice2)
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_carol'::name)
-> Append
- -> Seq Scan on part_document_fiction
+ -> Seq Scan on part_document_fiction part_document_1
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire
+ -> Seq Scan on part_document_satire part_document_2
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction
+ -> Seq Scan on part_document_nonfiction part_document_3
Filter: ((dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(13 rows)
@@ -1281,7 +1281,7 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_dave'::name)
- -> Seq Scan on part_document_fiction
+ -> Seq Scan on part_document_fiction part_document
Filter: ((cid < 55) AND (dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(8 rows)
@@ -1376,7 +1376,7 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_dave'::name)
- -> Seq Scan on part_document_fiction
+ -> Seq Scan on part_document_fiction part_document
Filter: ((cid < 55) AND (dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(8 rows)
@@ -1415,19 +1415,19 @@ NOTICE: f_leak => great technology book
EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query has row level security enabled and security quals contain sublinks
- QUERY PLAN
---------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
InitPlan 1 (returns $0) (slice2)
-> Gather Motion 1:1 (slice3; segments: 1)
-> Seq Scan on uaccount
Filter: (pguser = 'regress_rls_carol'::name)
-> Append
- -> Seq Scan on part_document_fiction
+ -> Seq Scan on part_document_fiction part_document_1
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire
+ -> Seq Scan on part_document_satire part_document_2
Filter: ((dlevel <= $0) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction
+ -> Seq Scan on part_document_nonfiction part_document_3
Filter: ((dlevel <= $0) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(13 rows)
@@ -1480,11 +1480,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
----------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on part_document_fiction
+ -> Seq Scan on part_document_fiction part_document_1
Filter: ((dauthor = 'regress_rls_carol'::name) AND f_leak(dtitle))
- -> Seq Scan on part_document_satire
+ -> Seq Scan on part_document_satire part_document_2
Filter: ((dauthor = 'regress_rls_carol'::name) AND f_leak(dtitle))
- -> Seq Scan on part_document_nonfiction
+ -> Seq Scan on part_document_nonfiction part_document_3
Filter: ((dauthor = 'regress_rls_carol'::name) AND f_leak(dtitle))
Optimizer: Postgres query optimizer
(9 rows)
@@ -1807,11 +1807,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
----------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: ((a <= 2) AND ((a % 2) = 0))
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: ((a <= 2) AND ((a % 2) = 0))
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: ((a <= 2) AND ((a % 2) = 0))
Optimizer: Postgres query optimizer
(9 rows)
@@ -1855,11 +1855,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: f_leak(b)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: f_leak(b)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: f_leak(b)
Optimizer: Postgres query optimizer
(9 rows)
@@ -1885,11 +1885,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: (a <= 2)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: (a <= 2)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: (a <= 2)
Optimizer: Postgres query optimizer
(9 rows)
@@ -1912,11 +1912,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: (a = 2)
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: (a = 2)
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: (a = 2)
Optimizer: Postgres query optimizer
(9 rows)
@@ -1941,11 +1941,11 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
---------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Append
- -> Seq Scan on t1
+ -> Seq Scan on t1 t1_1
Filter: ((a = 2) AND ((a % 2) = 0))
- -> Seq Scan on t2
+ -> Seq Scan on t2 t1_2
Filter: ((a = 2) AND ((a % 2) = 0))
- -> Seq Scan on t3
+ -> Seq Scan on t3 t1_3
Filter: ((a = 2) AND ((a % 2) = 0))
Optimizer: Postgres query optimizer
(9 rows)
@@ -1957,20 +1957,22 @@ SET SESSION AUTHORIZATION regress_rls_bob;
EXPLAIN (COSTS OFF) UPDATE t1 SET b = b || b WHERE f_leak(b);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Update on t1
- Update on t1
- Update on t2
- Update on t3
- -> Seq Scan on t1
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3
- Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres-based planner
-(11 rows)
+ Update on t1 t1_1
+ Update on t2 t1_2
+ Update on t3 t1_3
+ -> Result
+ -> Append
+ -> Seq Scan on t1 t1_1
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_3
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ Optimizer: Postgres query optimizer
+(13 rows)
UPDATE t1 SET b = b || b WHERE f_leak(b);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
@@ -2070,35 +2072,25 @@ EXPLAIN (COSTS OFF) UPDATE t1 SET b=t1.b FROM t2
WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
- QUERY PLAN
------------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------------
Update on t1
- Update on t1
- Update on t2 t2_1
- Update on t3
- -> Nested Loop
- -> Seq Scan on t1
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Materialize
- -> Broadcast Motion 3:3 (slice1; segments: 3)
- -> Seq Scan on t2
- Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
+ Update on t1 t1_1
+ Update on t2 t1_2
+ Update on t3 t1_3
-> Nested Loop
- -> Seq Scan on t2 t2_1
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Materialize
- -> Broadcast Motion 3:3 (slice2; segments: 3)
- -> Seq Scan on t2
- Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
- -> Nested Loop
- -> Seq Scan on t3
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Materialize
- -> Broadcast Motion 3:3 (slice3; segments: 3)
- -> Seq Scan on t2
- Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
+ -> Broadcast Motion 3:3 (slice1; segments: 3)
+ -> Seq Scan on t2
+ Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
+ -> Append
+ -> Seq Scan on t1 t1_1
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_3
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
-(26 rows)
+(16 rows)
UPDATE t1 SET b=t1.b FROM t2
WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b);
@@ -2111,21 +2103,21 @@ EXPLAIN (COSTS OFF) UPDATE t2 SET b=t2.b FROM t1
WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: View with WITH CHECK OPTION
- QUERY PLAN
------------------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------------------
Update on t2
- -> Nested Loop
- -> Seq Scan on t2
- Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
- -> Materialize
- -> Broadcast Motion 3:3 (slice1; segments: 3)
- -> Append
- -> Seq Scan on t1
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t2_1
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3
- Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Explicit Redistribute Motion 3:3 (slice1; segments: 3)
+ -> Nested Loop
+ -> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on t2
+ Filter: ((a = 3) AND ((a % 2) = 1) AND f_leak(b))
+ -> Append
+ -> Seq Scan on t1 t1_1
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_3
+ Filter: ((a = 3) AND ((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
(14 rows)
@@ -2177,53 +2169,30 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
-----------------------------------------------------------------------------------------
Gather Motion 3:1 (slice1; segments: 3)
-> Update on t1 t1_1
- Update on t1 t1_1
- Update on t2 t1_1_1
- Update on t3 t1_1_2
+ Update on t1 t1_1_1
+ Update on t2 t1_1_2
+ Update on t3 t1_1_3
-> Explicit Redistribute Motion 3:3 (slice2; segments: 3)
-> Hash Join
- Hash Cond: (t1_2.b = t1_1.b)
- -> Append
- -> Seq Scan on t1 t1_2
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2_1
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_2_2
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Hash
- -> Broadcast Motion 3:3 (slice3; segments: 3)
- -> Seq Scan on t1 t1_1
+ Hash Cond: (t1_1.b = t1_2.b)
+ -> Broadcast Motion 3:3 (slice3; segments: 3)
+ -> Append
+ -> Seq Scan on t1 t1_1_1
Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Explicit Redistribute Motion 3:3 (slice4; segments: 3)
- -> Hash Join
- Hash Cond: (t1_2.b = t1_1_1.b)
- -> Append
- -> Seq Scan on t1 t1_2
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2_1
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_2_2
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Hash
- -> Broadcast Motion 3:3 (slice5; segments: 3)
- -> Seq Scan on t2 t1_1_1
+ -> Seq Scan on t2 t1_1_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_1_3
Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Explicit Redistribute Motion 3:3 (slice6; segments: 3)
- -> Hash Join
- Hash Cond: (t1_2.b = t1_1_2.b)
- -> Append
- -> Seq Scan on t1 t1_2
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2 t1_2_1
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3 t1_2_2
- Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
-> Hash
- -> Broadcast Motion 3:3 (slice7; segments: 3)
- -> Seq Scan on t3 t1_1_2
+ -> Append
+ -> Seq Scan on t1 t1_2_1
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2_2
+ Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_2_3
Filter: ((a = 4) AND ((a % 2) = 0) AND f_leak(b))
Optimizer: Postgres query optimizer
-(48 rows)
+(25 rows)
UPDATE t1 t1_1 SET b = t1_2.b FROM t1 t1_2
WHERE t1_1.a = 4 AND t1_2.a = t1_1.a AND t1_2.b = t1_1.b
@@ -2278,20 +2247,21 @@ DETAIL: Falling back to Postgres-based planner because GPORCA does not support
EXPLAIN (COSTS OFF) DELETE FROM t1 WHERE f_leak(b);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Inherited tables
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------
Delete on t1
- Delete on t1
- Delete on t2
- Delete on t3
- -> Seq Scan on t1
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t2
- Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on t3
- Filter: (((a % 2) = 0) AND f_leak(b))
- Optimizer: Postgres-based planner
-(11 rows)
+ Delete on t1 t1_1
+ Delete on t2 t1_2
+ Delete on t3 t1_3
+ -> Append
+ -> Seq Scan on t1 t1_1
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t2 t1_2
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ -> Seq Scan on t3 t1_3
+ Filter: (((a % 2) = 0) AND f_leak(b))
+ Optimizer: Postgres query optimizer
+(12 rows)
DELETE FROM only t1 WHERE f_leak(b) RETURNING tableoid::regclass, *, t1;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
@@ -2607,6 +2577,8 @@ INSERT INTO z1 VALUES
CREATE POLICY p1 ON z1 TO regress_rls_group1 USING (a % 2 = 0);
CREATE POLICY p2 ON z1 TO regress_rls_group2 USING (a % 2 = 1);
ALTER TABLE z1 ENABLE ROW LEVEL SECURITY;
+analyze z1;
+analyze z2;
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM z1 WHERE f_leak(b);
NOTICE: f_leak => bbb
@@ -2662,11 +2634,12 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
-> Nested Loop
Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
+ -> Materialize
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on z2
Optimizer: GPORCA
-(8 rows)
+(9 rows)
SET ROLE regress_rls_group1;
SELECT * FROM z1 WHERE f_leak(b);
@@ -2720,11 +2693,12 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
-> Nested Loop
Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
+ -> Materialize
-> Seq Scan on z1
Filter: (((a % 2) = 0) AND f_leak(b))
- -> Seq Scan on z2
Optimizer: GPORCA
-(8 rows)
+(9 rows)
SET SESSION AUTHORIZATION regress_rls_carol;
SELECT * FROM z1 WHERE f_leak(b);
@@ -2778,11 +2752,12 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
-> Nested Loop
Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
+ -> Materialize
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- -> Seq Scan on z2
Optimizer: GPORCA
-(8 rows)
+(9 rows)
SET ROLE regress_rls_group2;
SELECT * FROM z1 WHERE f_leak(b);
@@ -2836,11 +2811,12 @@ EXPLAIN (COSTS OFF) EXECUTE plancache_test3;
-> Nested Loop
Join Filter: true
-> Broadcast Motion 3:3 (slice2; segments: 3)
+ -> Seq Scan on z2
+ -> Materialize
-> Seq Scan on z1
Filter: (((a % 2) = 1) AND f_leak(b))
- -> Seq Scan on z2
Optimizer: GPORCA
-(8 rows)
+(9 rows)
--
-- Views should follow policy for view owner.
@@ -4107,7 +4083,7 @@ SELECT refclassid::regclass, deptype
WHERE classid = 'pg_policy'::regclass
AND refobjid = 'tbl1'::regclass;
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
refclassid | deptype
------------+---------
pg_class | a
@@ -4118,7 +4094,7 @@ SELECT refclassid::regclass, deptype
WHERE classid = 'pg_policy'::regclass
AND refobjid IN ('regress_rls_eve'::regrole, 'regress_rls_frank'::regrole);
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
refclassid | deptype
------------+---------
pg_authid | r
@@ -4162,7 +4138,7 @@ CREATE POLICY p ON t USING (c % 2 = 1);
ALTER TABLE t ENABLE ROW LEVEL SECURITY;
SAVEPOINT q;
CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD
- SELECT * FROM generate_series(1,5) t0(c); -- fails due to row level security enabled
+ SELECT * FROM generate_series(1,5) t0(c); -- fails due to row-level security enabled
ERROR: could not convert table "t" to a view because it has row security enabled
ROLLBACK TO q;
ALTER TABLE t DISABLE ROW LEVEL SECURITY;
@@ -4343,7 +4319,6 @@ CREATE TABLE r1 (a int PRIMARY KEY);
CREATE TABLE r2 (a int REFERENCES r1);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
-WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
-- Create policies on r2 which prevent the
@@ -4380,7 +4355,6 @@ CREATE TABLE r1 (a int PRIMARY KEY);
CREATE TABLE r2 (a int REFERENCES r1 ON DELETE CASCADE);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
-WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
-- Create policies on r2 which prevent the
@@ -4410,7 +4384,6 @@ CREATE TABLE r1 (a int PRIMARY KEY);
CREATE TABLE r2 (a int REFERENCES r1 ON UPDATE CASCADE);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
-WARNING: referential integrity (FOREIGN KEY) constraints are not supported in Greenplum Database, will not be enforced
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
-- Create policies on r2 which prevent the
@@ -4546,7 +4519,7 @@ SELECT count(*) = 1 FROM pg_depend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_class WHERE relname = 'dep2');
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
?column?
----------
t
@@ -4558,7 +4531,7 @@ SELECT count(*) = 1 FROM pg_shdepend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_authid WHERE rolname = 'regress_rls_bob');
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
?column?
----------
t
@@ -4569,7 +4542,7 @@ SELECT count(*) = 1 FROM pg_shdepend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_authid WHERE rolname = 'regress_rls_carol');
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
?column?
----------
t
@@ -4580,7 +4553,7 @@ SELECT count(*) = 0 FROM pg_depend
WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1')
AND refobjid = (SELECT oid FROM pg_class WHERE relname = 'dep2');
INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
-DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on master-only tables
?column?
----------
t
diff --git a/src/test/regress/sql/gporca.sql b/src/test/regress/sql/gporca.sql
index d2d5c4645c..731035f6a2 100644
--- a/src/test/regress/sql/gporca.sql
+++ b/src/test/regress/sql/gporca.sql
@@ -3488,12 +3488,6 @@ ON t1.tradingday = t2.tradingday;
DROP TABLE t_clientinstrumentind2, t_clientproductind2;
----------------------------------------------------------------------------------
--- Test ALL NULL scalar array compare
-create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
-explain select * from DatumSortedSet_core where b in (NULL, NULL);
----------------------------------------------------------------------------------
-
-- Test ORCA not falling back to Postgres planner during
-- SimplifySelectOnOuterJoin stage. Previously, we could get assertion error
-- trying to EberEvaluate() strict function with zero arguments.
diff --git a/src/test/regress/sql/rowhints.sql b/src/test/regress/sql/rowhints.sql
index d9e9b3cb2f..4818f4fce0 100644
--- a/src/test/regress/sql/rowhints.sql
+++ b/src/test/regress/sql/rowhints.sql
@@ -1,7 +1,7 @@
-- Test Optimizer Row Hints Feature
--
-- Purpose: Test that row hints may be used to edit cardinality estimates
-
+-- Row hints have not implments in Postgres-based planner
LOAD 'pg_hint_plan';
DROP SCHEMA IF EXISTS rowhints CASCADE;
diff --git a/src/test/regress/sql/rowsecurity.sql b/src/test/regress/sql/rowsecurity.sql
index ecfddbb819..e828368a4e 100644
--- a/src/test/regress/sql/rowsecurity.sql
+++ b/src/test/regress/sql/rowsecurity.sql
@@ -846,6 +846,8 @@ CREATE POLICY p1 ON z1 TO regress_rls_group1 USING (a % 2 = 0);
CREATE POLICY p2 ON z1 TO regress_rls_group2 USING (a % 2 = 1);
ALTER TABLE z1 ENABLE ROW LEVEL SECURITY;
+analyze z1;
+analyze z2;
SET SESSION AUTHORIZATION regress_rls_bob;
SELECT * FROM z1 WHERE f_leak(b);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 07/30: Port reltuples to Relation
Posted by ma...@apache.org.
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 9d5bf9aec772fcbc8bab0185ad70b04e3eb2e0e4
Author: Jingyu Wang <wj...@vmware.com>
AuthorDate: Tue Dec 19 10:37:46 2023 -0800
Port reltuples to Relation
Port reltuples to Metadata Relation for row count retrieval without relying on
RelStats. The latter is notably slower, possibly due to hash key collisions and
requires further investigation. Note that the row count stored in Relation
objects pertains to non-partition tables and leaf partitions of partition
tables. Access RelStats for root stats of partition tables.
MDP tests underwent batch changes with the row count attribute added to Relation
(copied from RelationStatistics). This is needed for tests involving partition
tables, where we now access row count from Relation objects for cardinality
estimate in dynamic table scans.
---
.../gpopt/translate/CTranslatorRelcacheToDXL.cpp | 2 +-
.../3WayJoinOnMultiDistributionColumnsTables.mdp | 6 +++---
...yJoinOnMultiDistributionColumnsTablesNoMotion.mdp | 6 +++---
.../3WayJoinUsingOperatorsOfNonDefaultOpfamily.mdp | 6 +++---
.../4WayJoinInferredPredsRemovedWith2Motion.mdp | 8 ++++----
.../data/dxl/minidump/AddEqualityPredicates.mdp | 2 +-
.../data/dxl/minidump/AddPredsInSubqueries.mdp | 4 ++--
.../dxl/minidump/AddRedistributeBeforeInsert-1.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-2.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-3.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-4.mdp | 2 +-
.../dxl/minidump/AddRedistributeBeforeInsert-5.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/Agg-Limit.mdp | 2 +-
.../gporca/data/dxl/minidump/Agg-NonSplittable.mdp | 2 +-
.../gporca/data/dxl/minidump/AggWithSubqArgs.mdp | 4 ++--
.../gporca/data/dxl/minidump/AggWithVolatileFunc.mdp | 2 +-
.../data/dxl/minidump/AggonExternalTableNoMotion.mdp | 2 +-
.../gporca/data/dxl/minidump/AggregateWithSkew.mdp | 2 +-
.../minidump/AggregatesConstraintDeriveNegation.mdp | 2 +-
.../dxl/minidump/AllSubqueryWithSubqueryInScalar.mdp | 4 ++--
.../minidump/AllowIndexOnlyScanOnAppendOnlyTable.mdp | 2 +-
...ndexOnlyScanOnMixedAppendOnlyPartitionedTable.mdp | 2 +-
.../AllowIndexOnlyScanOnMixedPartitionedTable.mdp | 2 +-
.../data/dxl/minidump/AntiSemiJoin2Select-1.mdp | 4 ++--
.../data/dxl/minidump/AntiSemiJoin2Select-2.mdp | 4 ++--
.../AnySubq-With-NonScalarSubqueryChild-1.mdp | 6 +++---
.../AnySubq-With-NonScalarSubqueryChild-2.mdp | 6 +++---
.../AnySubq-With-NonScalarSubqueryChild-3.mdp | 6 +++---
.../minidump/AnySubqueryWithAllSubqueryInScalar.mdp | 6 +++---
.../dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp | 4 ++--
.../dxl/minidump/AnySubqueryWithVolatileComp.mdp | 4 ++--
.../dxl/minidump/AnySubqueryWithVolatileFunc.mdp | 4 ++--
.../data/dxl/minidump/ArrayCmp-IN-ManyElements.mdp | 2 +-
.../data/dxl/minidump/ArrayCmpAll-Disjunct.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCmpAllEmpty.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCmpInList.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCoerceCast.mdp | 2 +-
.../gporca/data/dxl/minidump/ArrayCoerceExpr.mdp | 2 +-
.../data/dxl/minidump/ArrayCoerceImplicitCast.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/ArrayRef.mdp | 2 +-
.../gporca/data/dxl/minidump/AssertMaxOneRow.mdp | 6 +++---
.../dxl/minidump/AssertOneRowWithCorrelation.mdp | 2 +-
.../minidump/AvoidConstraintDerivationForLike.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp | 2 +-
.../data/dxl/minidump/BTreeIndex-Against-InList.mdp | 2 +-
.../dxl/minidump/BTreeIndex-Against-InListLarge.mdp | 2 +-
.../minidump/BTreeIndex-Against-ScalarSubquery.mdp | 2 +-
...kward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
.../Backward-IndexScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
...Backward-IndexScan-OrderBy-on-SingleCol-Index.mdp | 2 +-
.../gporca/data/dxl/minidump/BitmapBoolAnd.mdp | 4 ++--
.../data/dxl/minidump/BitmapBoolOp-DeepTree.mdp | 4 ++--
.../data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp | 4 ++--
.../data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp | 4 ++--
.../data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp | 4 ++--
.../gporca/data/dxl/minidump/BitmapBoolOr.mdp | 4 ++--
.../data/dxl/minidump/BitmapIndex-Against-InList.mdp | 2 +-
.../data/dxl/minidump/BitmapIndex-ChooseHashJoin.mdp | 4 ++--
.../dxl/minidump/BitmapIndexApply-Basic-SelfJoin.mdp | 4 ++--
.../minidump/BitmapIndexApply-Basic-TwoTables.mdp | 6 +++---
.../minidump/BitmapIndexApply-Complex-Condition.mdp | 6 +++---
.../minidump/BitmapIndexApply-InnerSelect-Basic.mdp | 6 +++---
.../BitmapIndexApply-InnerSelect-PartTable.mdp | 6 +++---
.../data/dxl/minidump/BitmapIndexApply-PartTable.mdp | 6 +++---
.../data/dxl/minidump/BitmapIndexNLJWithProject.mdp | 4 ++--
.../dxl/minidump/BitmapIndexNLJWithProjectNoFilt.mdp | 4 ++--
.../data/dxl/minidump/BitmapIndexNLOJWithProject.mdp | 4 ++--
.../minidump/BitmapIndexNLOJWithProjectNonPart.mdp | 4 ++--
...BitmapIndexScan-WithUnsupportedOperatorFilter.mdp | 4 ++--
.../gporca/data/dxl/minidump/BitmapIndexScan.mdp | 6 +++---
.../data/dxl/minidump/BitmapIndexScanChooseIndex.mdp | 2 +-
.../gporca/data/dxl/minidump/BitmapIndexScanCost.mdp | 2 +-
.../dxl/minidump/BitmapIndexUnsupportedOperator.mdp | 2 +-
.../minidump/BitmapScan-Hetrogeneous-Partitioned.mdp | 2 +-
.../BitmapTableScan-AO-Btree-PickIndexWithNoGap.mdp | 2 +-
.../BitmapTableScan-AO-Btree-PickOnlyHighNDV.mdp | 2 +-
.../data/dxl/minidump/BitmapTableScan-AO-Btree.mdp | 4 ++--
.../gporca/data/dxl/minidump/BitmapTableScan-AO.mdp | 4 ++--
.../dxl/minidump/BitmapTableScan-AndCondition.mdp | 4 ++--
.../data/dxl/minidump/BitmapTableScan-Basic.mdp | 4 ++--
.../minidump/BitmapTableScan-ColumnOnRightSide.mdp | 4 ++--
.../dxl/minidump/BitmapTableScan-ComplexConjDisj.mdp | 2 +-
.../BitmapTableScan-ConjDisjWithOuterRefs.mdp | 4 ++--
.../minidump/Blocking-Spool-Parallel-Union-All.mdp | 8 ++++----
.../data/dxl/minidump/BpCharMCVCardinalityEquals.mdp | 2 +-
.../dxl/minidump/BpCharMCVCardinalityGreaterThan.mdp | 2 +-
.../data/dxl/minidump/BroadcastSkewedHashjoin.mdp | 4 ++--
.../dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp | 4 ++--
.../data/dxl/minidump/BtreeIndexNLOJWithProject.mdp | 4 ++--
.../gporca/data/dxl/minidump/CSQ-VolatileTVF.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTAS-Random.mdp | 2 +-
.../data/dxl/minidump/CTAS-With-Global-Local-Agg.mdp | 2 +-
...distributed-from-replicated-distributed-table.mdp | 2 +-
.../gporca/data/dxl/minidump/CTAS-with-Limit.mdp | 2 +-
.../CTAS-with-hashed-distributed-external-table.mdp | 2 +-
...CTAS-with-randomly-distributed-external-table.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTAS.mdp | 2 +-
.../dxl/minidump/CTAS_OrderedAgg_multiple_cols.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-1.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-10.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-11.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-2.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-3.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-4.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-5.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/CTE-6.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-7.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/CTE-8.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-9.mdp | 4 ++--
.../dxl/minidump/CTE-Join-Redistribute-Producer.mdp | 2 +-
.../dxl/minidump/CTE-NestedWithPrunedProducer.mdp | 2 +-
.../data/dxl/minidump/CTE-NoPushProperties.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-Preds1.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CTE-Preds2.mdp | 2 +-
.../gporca/data/dxl/minidump/CTE-PushProperties.mdp | 2 +-
.../gporca/data/dxl/minidump/CTE-volatile.mdp | 2 +-
.../data/dxl/minidump/CTE-with-random-filter.mdp | 2 +-
.../gporca/data/dxl/minidump/CTE15HAReplicated.mdp | 4 ++--
.../gporca/data/dxl/minidump/CTE15Replicated.mdp | 4 ++--
.../gporca/data/dxl/minidump/CTE2HAReplicated.mdp | 4 ++--
.../gporca/data/dxl/minidump/CTE2Replicated.mdp | 4 ++--
.../dxl/minidump/CTEConstraintDeriveNegation.mdp | 2 +-
.../minidump/CTEMergeGroupsCircularDeriveStats.mdp | 4 ++--
.../dxl/minidump/CTEMisAlignedProducerConsumer.mdp | 2 +-
.../gporca/data/dxl/minidump/CTEWithMergedGroup.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/CTEinlining.mdp | 2 +-
.../dxl/minidump/CannotCollapseCascadeProjects.mdp | 2 +-
.../data/dxl/minidump/CannotPullGrpColAboveAgg.mdp | 4 ++--
.../data/dxl/minidump/CapGbCardToSelectCard.mdp | 6 +++---
.../Cascaded-UnionAll-Differing-Cols-Order.mdp | 6 +++---
.../minidump/Cascaded-UnionAll-Differing-Cols.mdp | 6 +++---
.../minidump/Cascaded-UnionAll-Same-Cols-Order.mdp | 2 +-
.../gporca/data/dxl/minidump/CastOnSubquery.mdp | 4 ++--
.../data/dxl/minidump/CastedInClauseWithMCV.mdp | 2 +-
.../dxl/minidump/CastedScalarIf-On-Index-Key.mdp | 2 +-
.../gporca/data/dxl/minidump/Char-Cardinality.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CheckAsUser.mdp | 2 +-
.../gporca/data/dxl/minidump/Citext-Cardinality.mdp | 2 +-
.../data/dxl/minidump/Coalesce-With-Subquery.mdp | 8 ++++----
.../gporca/data/dxl/minidump/CoerceToDomain.mdp | 16 ++++++++--------
src/backend/gporca/data/dxl/minidump/CoerceViaIO.mdp | 2 +-
.../dxl/minidump/CollapseCascadeProjects2of2.mdp | 2 +-
.../dxl/minidump/CollapseCascadeProjects2of3.mdp | 2 +-
.../data/dxl/minidump/CollapseGb-MultipleColumn.mdp | 2 +-
.../gporca/data/dxl/minidump/CollapseGb-Nested.mdp | 2 +-
.../data/dxl/minidump/CollapseGb-SingleColumn.mdp | 2 +-
.../data/dxl/minidump/CollapseGb-With-Agg-Funcs.mdp | 2 +-
.../dxl/minidump/CollapseGb-Without-Agg-Funcs.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CollapseNot.mdp | 2 +-
.../minidump/CollapseProject-SetReturning-CTE.mdp | 2 +-
.../dxl/minidump/CollapseProject-SetReturning.mdp | 2 +-
.../data/dxl/minidump/CompositeTypeRelMdId.mdp | 2 +-
.../gporca/data/dxl/minidump/ComputedGroupByCol.mdp | 2 +-
.../minidump/ConstScalarFuncNotPushedBelowGather.mdp | 2 +-
.../ConstTblGetUnderSubqUnderProjectWithOuterRef.mdp | 2 +-
.../minidump/ConstTblGetUnderSubqWithNoOuterRef.mdp | 4 ++--
.../minidump/ConstTblGetUnderSubqWithOuterRef.mdp | 4 ++--
.../dxl/minidump/ConstraintIntervalIncludesNull.mdp | 2 +-
.../ConstraintIntervalWithBoolIncludesNull.mdp | 2 +-
.../ConstraintIntervalWithInIncludesNull.mdp | 2 +-
.../ConstraintIntervalWithInIncludesNullArray.mdp | 2 +-
...ConstraintIntervalWithMultiColumnsIncludeNull.mdp | 2 +-
.../ConstraintIntervalWithNotIncludesNull.mdp | 2 +-
.../data/dxl/minidump/ConvertHashToRandomInsert.mdp | 4 ++--
.../data/dxl/minidump/ConvertHashToRandomSelect.mdp | 4 ++--
.../data/dxl/minidump/Correlated-AntiSemiJoin.mdp | 4 ++--
.../dxl/minidump/Correlated-LASJ-With-Outer-Col.mdp | 4 ++--
.../minidump/Correlated-LASJ-With-Outer-Const.mdp | 4 ++--
.../dxl/minidump/Correlated-LASJ-With-Outer-Expr.mdp | 4 ++--
.../gporca/data/dxl/minidump/Correlated-SemiJoin.mdp | 4 ++--
.../Correlated-Stat-Function-Dependency-2.mdp | 2 +-
.../Correlated-Stat-Function-Dependency-3.mdp | 2 +-
.../minidump/Correlated-Stat-Function-Dependency.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-2.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-3.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-4.mdp | 2 +-
.../dxl/minidump/Correlated-Stat-NDistinct-5.mdp | 2 +-
.../data/dxl/minidump/Correlated-Stat-NDistinct.mdp | 2 +-
.../dxl/minidump/CorrelatedAntiSemiJoin-True.mdp | 12 ++++++------
.../dxl/minidump/CorrelatedIN-LeftSemiJoin-Limit.mdp | 4 ++--
.../dxl/minidump/CorrelatedIN-LeftSemiJoin-True.mdp | 4 ++--
.../dxl/minidump/CorrelatedIN-LeftSemiNotIn-True.mdp | 6 +++---
.../minidump/CorrelatedLeftSemiNLJoinWithLimit.mdp | 4 ++--
.../minidump/CorrelatedNLJ-PartSelector-Subplan.mdp | 4 ++--
.../dxl/minidump/CorrelatedNLJWithStreamingSpool.mdp | 4 ++--
.../dxl/minidump/CorrelatedNLJWithTrueCondition.mdp | 4 ++--
.../data/dxl/minidump/CorrelatedSemiJoin-True.mdp | 12 ++++++------
.../minidump/CorrelatedSubqueryWithAggWindowFunc.mdp | 4 ++--
.../data/dxl/minidump/Correlation-With-Casting-1.mdp | 2 +-
.../data/dxl/minidump/Correlation-With-Casting-2.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/CountAny.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/CountStar.mdp | 4 ++--
.../gporca/data/dxl/minidump/CoveringIndex-1.mdp | 2 +-
.../gporca/data/dxl/minidump/CoveringIndex-2.mdp | 2 +-
.../gporca/data/dxl/minidump/CoveringIndex-3.mdp | 2 +-
.../data/dxl/minidump/CoveringIndex-Cost-1.mdp | 2 +-
.../data/dxl/minidump/CoveringIndex-Cost-2.mdp | 2 +-
.../minidump/CoveringIndex-DoesNotSupport-Gin.mdp | 2 +-
.../dxl/minidump/CoveringIndex-DoesSupport-Gist.mdp | 2 +-
.../dxl/minidump/DML-ComputeScalar-With-Outerref.mdp | 4 ++--
.../data/dxl/minidump/DML-Filter-With-OuterRef.mdp | 4 ++--
.../data/dxl/minidump/DML-Replicated-Input.mdp | 2 +-
.../data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp | 6 +++---
.../minidump/DML-UnionAll-With-Universal-Child.mdp | 2 +-
.../data/dxl/minidump/DML-Volatile-Function.mdp | 2 +-
.../dxl/minidump/DML-With-CoordinatorOnlyTable-1.mdp | 4 ++--
.../DML-With-CorrelatedNLJ-With-Universal-Child.mdp | 2 +-
.../dxl/minidump/DML-With-HJ-And-UniversalChild.mdp | 4 ++--
.../minidump/DML-With-Join-With-Universal-Child.mdp | 2 +-
.../dxl/minidump/DML-With-WindowFunc-OuterRef.mdp | 4 ++--
.../gporca/data/dxl/minidump/DMLCollapseProject.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/DPE-IN.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/DPE-NOT-IN.mdp | 4 ++--
.../gporca/data/dxl/minidump/DPE-SemiJoin.mdp | 4 ++--
.../data/dxl/minidump/DPE-with-unsupported-pred.mdp | 6 +++---
.../gporca/data/dxl/minidump/DPv2GreedyOnly.mdp | 8 ++++----
.../gporca/data/dxl/minidump/DPv2MinCardOnly.mdp | 8 ++++----
.../gporca/data/dxl/minidump/DPv2QueryOnly.mdp | 8 ++++----
.../gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp | 2 +-
.../gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp | 2 +-
.../data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp | 2 +-
.../data/dxl/minidump/DQA-GroupBy-HashAggregate2.mdp | 2 +-
.../minidump/DQA-InnerJoin-GroupBy-HashAggregate.mdp | 4 ++--
.../data/dxl/minidump/DQA-KeepOuterReference.mdp | 2 +-
.../data/dxl/minidump/DQA-NonRedistributableCol.mdp | 2 +-
.../gporca/data/dxl/minidump/DQA-SplitScalar.mdp | 2 +-
.../data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp | 2 +-
.../dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp | 2 +-
.../data/dxl/minidump/DQA-SplitScalarWithGuc.mdp | 2 +-
.../dxl/minidump/DTS-Hetrogeneous-Partitioned.mdp | 2 +-
.../data/dxl/minidump/Date-TimeStamp-HashJoin.mdp | 4 ++--
.../data/dxl/minidump/DeduplicatePredicates.mdp | 2 +-
.../Delete-Check-AssignedQueryIdForTargetRel.mdp | 2 +-
.../dxl/minidump/Delete-With-Limit-In-Subquery.mdp | 4 ++--
.../dxl/minidump/DeleteMismatchedDistribution.mdp | 4 ++--
.../gporca/data/dxl/minidump/DeleteRandomDistr.mdp | 2 +-
.../dxl/minidump/DeleteRandomlyDistributedTable.mdp | 2 +-
.../minidump/DeleteRandomlyDistributedTableJoin.mdp | 4 ++--
.../dxl/minidump/DirectDispatch-DynamicIndexScan.mdp | 4 ++--
...rectDispatch-GpSegmentId-MultiCol-Conjunction.mdp | 2 +-
...ectDispatch-GpSegmentId-SingleCol-Conjunction.mdp | 2 +-
.../data/dxl/minidump/DirectDispatch-GpSegmentId.mdp | 2 +-
.../data/dxl/minidump/DirectDispatch-IndexScan.mdp | 4 ++--
.../minidump/DirectDispatch-MultiCol-Disjunction.mdp | 2 +-
.../minidump/DirectDispatch-MultiCol-Negative.mdp | 2 +-
.../data/dxl/minidump/DirectDispatch-MultiCol.mdp | 2 +-
.../DirectDispatch-RandDistTable-Disjunction.mdp | 2 +-
.../dxl/minidump/DirectDispatch-RandDistTable.mdp | 2 +-
.../DirectDispatch-SingleCol-Disjunction-IsNull.mdp | 2 +-
...DirectDispatch-SingleCol-Disjunction-Negative.mdp | 2 +-
.../DirectDispatch-SingleCol-Disjunction.mdp | 2 +-
.../data/dxl/minidump/DirectDispatch-SingleCol.mdp | 2 +-
.../data/dxl/minidump/DisableBroadcastThreshold.mdp | 4 ++--
.../dxl/minidump/DiscardRedistributeHashJoin.mdp | 4 ++--
.../data/dxl/minidump/Distinct-LegacyOpfamily.mdp | 2 +-
.../data/dxl/minidump/DistinctAgg-NonSplittable.mdp | 2 +-
.../data/dxl/minidump/DistinctQueryWithMotions.mdp | 2 +-
.../dxl/minidump/DonotPushPartConstThruLimit.mdp | 2 +-
.../minidump/DontAddRedistributeBeforeInsert-1.mdp | 2 +-
.../minidump/DontAddRedistributeBeforeInsert-2.mdp | 2 +-
.../data/dxl/minidump/DoubleNDVCardinalityEquals.mdp | 2 +-
.../gporca/data/dxl/minidump/DqaHavingMax.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/DqaMax.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/DqaMin.mdp | 2 +-
.../gporca/data/dxl/minidump/DqaNoRedistribute.mdp | 2 +-
.../gporca/data/dxl/minidump/DqaSubqueryMax.mdp | 2 +-
.../gporca/data/dxl/minidump/DuplicateGrpCol.mdp | 2 +-
.../gporca/data/dxl/minidump/DynamicBitmapBoolOp.mdp | 4 ++--
.../data/dxl/minidump/DynamicBitmapIndexScan.mdp | 6 +++---
.../dxl/minidump/DynamicBitmapTableScan-Basic.mdp | 2 +-
.../DynamicBitmapTableScan-Heterogeneous.mdp | 4 ++--
.../dxl/minidump/DynamicBitmapTableScan-UUID.mdp | 2 +-
.../data/dxl/minidump/DynamicIndexGet-OuterRefs.mdp | 10 +++++-----
.../data/dxl/minidump/DynamicIndexGetDroppedCols.mdp | 2 +-
.../dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp | 2 +-
.../dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp | 6 +++---
.../dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp | 6 +++---
.../dxl/minidump/DynamicIndexOnlyScanCosting.mdp | 4 ++--
.../data/dxl/minidump/DynamicIndexScan-BoolFalse.mdp | 4 ++--
.../data/dxl/minidump/DynamicIndexScan-BoolTrue.mdp | 4 ++--
.../minidump/DynamicIndexScan-DefaultPartition-2.mdp | 2 +-
.../minidump/DynamicIndexScan-DefaultPartition.mdp | 2 +-
.../dxl/minidump/DynamicIndexScan-DroppedCols.mdp | 2 +-
.../dxl/minidump/DynamicIndexScan-DroppedColumns.mdp | 4 ++--
...cIndexScan-Heterogenous-EnabledDateConstraint.mdp | 2 +-
...amicIndexScan-Heterogenous-PartSelectEquality.mdp | 4 ++--
...DynamicIndexScan-Heterogenous-PartSelectRange.mdp | 4 ++--
.../minidump/DynamicIndexScan-Heterogenous-Union.mdp | 2 +-
...cIndexScan-Heterogenous-UnsupportedConstraint.mdp | 2 +-
...icIndexScan-Heterogenous-UnsupportedPredicate.mdp | 4 ++--
.../dxl/minidump/DynamicIndexScan-Heterogenous.mdp | 2 +-
...micIndexScan-Homogenous-EnabledDateConstraint.mdp | 2 +-
...micIndexScan-Homogenous-UnsupportedConstraint.mdp | 2 +-
.../dxl/minidump/DynamicIndexScan-Homogenous.mdp | 2 +-
.../DynamicIndexScan-OpenEndedPartitions.mdp | 4 ++--
.../data/dxl/minidump/DynamicIndexScan-Relabel.mdp | 4 ++--
.../data/dxl/minidump/DynamicIndexScanCosting.mdp | 4 ++--
.../gporca/data/dxl/minidump/EagerAggEmptyInput.mdp | 4 ++--
.../gporca/data/dxl/minidump/EagerAggExpression.mdp | 4 ++--
.../data/dxl/minidump/EagerAggGroupColumnInJoin.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp | 4 ++--
.../data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp | 6 +++---
.../gporca/data/dxl/minidump/EagerAggMinMax.mdp | 4 ++--
.../gporca/data/dxl/minidump/EagerAggSubquery.mdp | 4 ++--
.../data/dxl/minidump/EagerAggUnsupportedAgg.mdp | 4 ++--
.../data/dxl/minidump/EffectOfLocalPredOnJoin.mdp | 6 +++---
.../data/dxl/minidump/EffectOfLocalPredOnJoin3.mdp | 6 +++---
.../gporca/data/dxl/minidump/EffectsOfJoinFilter.mdp | 4 ++--
.../gporca/data/dxl/minidump/EqualityJoin.mdp | 4 ++--
.../data/dxl/minidump/EqualityPredicateOverDate.mdp | 2 +-
.../data/dxl/minidump/EquiJoinOnExpr-Supported.mdp | 2 +-
.../data/dxl/minidump/EquiJoinOnExpr-Unsupported.mdp | 2 +-
.../gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp | 4 ++--
.../gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp | 4 ++--
.../gporca/data/dxl/minidump/EquivClassesAndOr.mdp | 6 +++---
.../data/dxl/minidump/EquivClassesIntersect.mdp | 4 ++--
.../gporca/data/dxl/minidump/EquivClassesLimit.mdp | 2 +-
.../gporca/data/dxl/minidump/EquivClassesUnion.mdp | 4 ++--
.../minidump/Equivalence-class-project-over-LOJ.mdp | 6 +++---
.../minidump/EstimateJoinRowsForCastPredicates.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/Except.mdp | 4 ++--
.../dxl/minidump/ExceptAllCompatibleDataType.mdp | 6 +++---
.../ExistentialSubquriesInsideScalarExpression.mdp | 6 +++---
.../data/dxl/minidump/Exists-SuperfluousEquality.mdp | 2 +-
.../data/dxl/minidump/ExistsSubqInsideExpr.mdp | 4 ++--
.../gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp | 4 ++--
.../data/dxl/minidump/ExpandFullOuterJoin2.mdp | 2 +-
.../gporca/data/dxl/minidump/ExpandJoinOrder.mdp | 10 +++++-----
.../dxl/minidump/ExpandNAryJoinGreedyWithLOJOnly.mdp | 12 ++++++------
.../dxl/minidump/ExprOnScSubqueryWithOuterRef.mdp | 4 ++--
.../gporca/data/dxl/minidump/ExternalTable1.mdp | 2 +-
.../gporca/data/dxl/minidump/ExternalTable2.mdp | 2 +-
.../gporca/data/dxl/minidump/ExternalTable3.mdp | 2 +-
.../gporca/data/dxl/minidump/ExternalTable4.mdp | 2 +-
.../data/dxl/minidump/ExternalTableWithFilter.mdp | 2 +-
.../minidump/ExtractOneBindingFromScalarGroups.mdp | 8 ++++----
.../ExtractPredicateFromDisjWithComputedColumns.mdp | 6 +++---
.../gporca/data/dxl/minidump/Factorized-Preds.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/FieldSelect.mdp | 2 +-
.../gporca/data/dxl/minidump/FilterScalarCast.mdp | 2 +-
.../gporca/data/dxl/minidump/FoldedArrayCmp.mdp | 2 +-
.../dxl/minidump/ForeignPartOneTimeFilterDPE.mdp | 4 ++--
.../gporca/data/dxl/minidump/ForeignPartUniform.mdp | 2 +-
.../data/dxl/minidump/ForeignScanExecLocAnyJoin.mdp | 4 ++--
.../dxl/minidump/ForeignScanExecLocAnySimpleScan.mdp | 2 +-
...rward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
.../Forward-IndexScan-OrderBy-on-MultiCol-Index.mdp | 2 +-
.../Forward-IndexScan-OrderBy-on-SingleCol-Index.mdp | 2 +-
.../minidump/FullJoin-2PredicateOnDistColumns.mdp | 4 ++--
.../gporca/data/dxl/minidump/FullJoin-Caps.mdp | 2 +-
.../FullJoin-InnerNotOnDistributionColumn.mdp | 4 ++--
.../dxl/minidump/FullJoin-NonDefaultOpfamily.mdp | 4 ++--
.../minidump/FullJoin-NotOnDistributionColumn.mdp | 4 ++--
.../data/dxl/minidump/FullJoin-NullPredicate.mdp | 4 ++--
.../dxl/minidump/FullJoin-OnDistributionColumn.mdp | 4 ++--
.../dxl/minidump/FullJoin-PredicateOnSameTable.mdp | 4 ++--
.../gporca/data/dxl/minidump/FullJoin-Replicated.mdp | 4 ++--
.../minidump/FullJoin-Subquery-CastedPredicates.mdp | 8 ++++----
.../data/dxl/minidump/FullJoin-SubquerySingleton.mdp | 4 ++--
.../minidump/FullJoin-SubqueryWithRedistribute.mdp | 4 ++--
.../data/dxl/minidump/FullJoin-SwappedPredicates.mdp | 4 ++--
.../dxl/minidump/FullOuterJoin-NullRejectingLHS1.mdp | 4 ++--
.../dxl/minidump/FullOuterJoin-NullRejectingLHS2.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/Gb-on-keys.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/GinIndex.mdp | 2 +-
.../data/dxl/minidump/GinIndexPathOpfamily.mdp | 2 +-
.../data/dxl/minidump/GinIndexSearchModeAll.mdp | 2 +-
.../Gist-AOCOTable-NonLossy-BitmapIndexPlan.mdp | 2 +-
.../minidump/Gist-NestedLoopJoin-Lossy-IndexPlan.mdp | 4 ++--
.../Gist-NestedLoopJoin-Postgis-IndexPlan.mdp | 4 ++--
.../minidump/Gist-NonPart-Lossy-BitmapIndexPlan.mdp | 2 +-
.../dxl/minidump/Gist-NonPart-Lossy-IndexPlan.mdp | 2 +-
.../data/dxl/minidump/Gist-OrderBy-BitmapPlan.mdp | 8 ++++----
.../data/dxl/minidump/Gist-OrderBy-IndexPlan.mdp | 8 ++++----
.../dxl/minidump/Gist-PartTable-Lossy-IndexPlan.mdp | 6 +++---
.../Gist-PartTable-NonLossy-BitmapIndexPlan.mdp | 2 +-
.../dxl/minidump/Gist-PartialIndex-TableScan.mdp | 2 +-
.../data/dxl/minidump/GreedyNAryDelayCrossJoin.mdp | 8 ++++----
.../gporca/data/dxl/minidump/GreedyNAryJoin.mdp | 6 +++---
.../minidump/GreedyNAryJoinWithDisconnectedEdges.mdp | 16 ++++++++--------
.../data/dxl/minidump/GreedyNAryOnlyCrossJoins.mdp | 6 +++---
.../data/dxl/minidump/GroupByEmptySetNoAgg.mdp | 2 +-
.../gporca/data/dxl/minidump/GroupByOuterRef.mdp | 4 ++--
.../data/dxl/minidump/GroupingOnSameTblCol-1.mdp | 8 ++++----
.../data/dxl/minidump/GroupingOnSameTblCol-2.mdp | 4 ++--
.../gporca/data/dxl/minidump/GroupingSets.mdp | 2 +-
.../data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp | 10 +++++-----
.../data/dxl/minidump/HJN-DPE-Bitmap-Outer-Child.mdp | 6 +++---
.../gporca/data/dxl/minidump/HJN-DeeperOuter.mdp | 6 +++---
.../data/dxl/minidump/HJN-Redistribute-One-Side.mdp | 4 ++--
.../data/dxl/minidump/Hash-BitmapScan-InArray.mdp | 2 +-
.../gporca/data/dxl/minidump/Hash-BitmapScan.mdp | 2 +-
.../gporca/data/dxl/minidump/Hash-IndexScan.mdp | 2 +-
.../data/dxl/minidump/Hash-TableScan-AllArray.mdp | 2 +-
.../data/dxl/minidump/HashJoinOnRelabeledColumns.mdp | 4 ++--
.../gporca/data/dxl/minidump/IDF-NotNullConstant.mdp | 2 +-
.../gporca/data/dxl/minidump/IDF-NullConstant.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/IN-ArrayCmp.mdp | 4 ++--
.../data/dxl/minidump/IN-Nulls-ArrayCmpAny.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/IN-Numeric.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/IN.mdp | 2 +-
.../data/dxl/minidump/INDF-NotNullConstant.mdp | 2 +-
.../gporca/data/dxl/minidump/INDF-NullConstant.mdp | 2 +-
.../gporca/data/dxl/minidump/InClauseWithMCV.mdp | 2 +-
.../gporca/data/dxl/minidump/InEqualityJoin.mdp | 4 ++--
.../InSubqWithPrjListOuterRefNoInnerRefColumnIn.mdp | 4 ++--
...ithPrjListOuterRefNoInnerRefColumnPlusConstIn.mdp | 4 ++--
.../InSubqWithPrjListOuterRefNoInnerRefConstIn.mdp | 4 ++--
.../data/dxl/minidump/InSubqueryWithNotNullCol.mdp | 4 ++--
.../minidump/Index-Join-With-Subquery-In-Pred.mdp | 4 ++--
...IndexApply-Heterogeneous-BothSidesPartitioned.mdp | 8 ++++----
.../dxl/minidump/IndexApply-Heterogeneous-DTS.mdp | 6 +++---
.../dxl/minidump/IndexApply-Heterogeneous-NoDTS.mdp | 6 +++---
.../IndexApply-IndexCondDisjointWithHashedDistr.mdp | 6 +++---
.../IndexApply-IndexCondIntersectWithHashedDistr.mdp | 6 +++---
.../IndexApply-IndexCondMatchHashedDistr.mdp | 6 +++---
.../IndexApply-IndexCondSubsetOfHashedDistr.mdp | 6 +++---
.../IndexApply-IndexCondSupersetOfHashedDistr.mdp | 6 +++---
.../IndexApply-IndexOnCoordinatorOnlyTable.mdp | 6 +++---
.../dxl/minidump/IndexApply-InnerSelect-Basic.mdp | 6 +++---
.../IndexApply-InnerSelect-Heterogeneous-DTS.mdp | 6 +++---
.../minidump/IndexApply-InnerSelect-PartTable.mdp | 6 +++---
.../minidump/IndexApply-InnerSelect-PartTable2.mdp | 4 ++--
.../dxl/minidump/IndexApply-LeftOuter-NLJoin.mdp | 10 +++++-----
.../IndexApply-MultiDistKey-WithComplexPreds.mdp | 4 ++--
...exApply-MultiDistKeys-Bitmap-WithComplexPreds.mdp | 4 ++--
.../dxl/minidump/IndexApply-MultiDistKeys-Bitmap.mdp | 4 ++--
...xApply-MultiDistKeys-IncompletePDS-3-DistCols.mdp | 4 ++--
.../dxl/minidump/IndexApply-No-Motion-Below-Join.mdp | 4 ++--
.../dxl/minidump/IndexApply-PartKey-Is-IndexKey.mdp | 8 ++++----
.../dxl/minidump/IndexApply-PartResolverExpand.mdp | 6 +++---
.../data/dxl/minidump/IndexApply-PartTable.mdp | 6 +++---
.../minidump/IndexApply-Redistribute-Const-Table.mdp | 4 ++--
.../dxl/minidump/IndexApply1-CalibratedCostModel.mdp | 6 +++---
src/backend/gporca/data/dxl/minidump/IndexApply1.mdp | 6 +++---
src/backend/gporca/data/dxl/minidump/IndexApply2.mdp | 6 +++---
src/backend/gporca/data/dxl/minidump/IndexApply3.mdp | 6 +++---
src/backend/gporca/data/dxl/minidump/IndexApply4.mdp | 6 +++---
.../IndexApply_NestLoopWithNestParamTrue.mdp | 4 ++--
.../data/dxl/minidump/IndexConstraintsMDidCache.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexGet-OuterRefs.mdp | 4 ++--
.../data/dxl/minidump/IndexNLJ-IndexGet-OuterRef.mdp | 4 ++--
.../data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp | 8 ++++----
...rtitionToRootTableContainingHeterogenousIndex.mdp | 2 +-
...xOnLeaf-AddPartitionToRootWithHomogenousIndex.mdp | 2 +-
...af-IndexOnPartitionsWithDifferentStorageTypes.mdp | 2 +-
...nOverlappingHeterogenousIndex-ANDPredicate-AO.mdp | 2 +-
...verlappingHeterogenousIndex-ANDPredicate-HEAP.mdp | 2 +-
...appingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp | 2 +-
...lappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp | 2 +-
...-OverlappingHeterogenousIndex-ANDPredicate-AO.mdp | 2 +-
...verlappingHeterogenousIndex-ANDPredicate-HEAP.mdp | 2 +-
...f-OverlappingHeterogenousIndex-ORPredicate-AO.mdp | 2 +-
...appingHomogenousIndexesOnRoot-ANDPredicate-AO.mdp | 2 +-
...xOnLeaf-OverlappingHomogenousIndexesOnRoot-AO.mdp | 2 +-
...lappingHomogenousIndexesOnRoot-ORPredicate-AO.mdp | 2 +-
...Leaf-SingleColumnHeterogenousIndexOnRoot-1-AO.mdp | 2 +-
...af-SingleColumnHeterogenousIndexOnRoot-1-HEAP.mdp | 2 +-
...Leaf-SingleColumnHeterogenousIndexOnRoot-2-AO.mdp | 2 +-
...af-SingleColumnHeterogenousIndexOnRoot-2-HEAP.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexOnlyScan-CTE.mdp | 2 +-
.../dxl/minidump/IndexOnlyScan-NoDistKeyInIndex.mdp | 2 +-
.../IndexOnlyScan-OrderBy-on-MultiCol-NonIndex.mdp | 2 +-
.../data/dxl/minidump/IndexOnlyScanCosting.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexScan-AOTable.mdp | 4 ++--
.../gporca/data/dxl/minidump/IndexScan-AndedIn.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexScan-BoolFalse.mdp | 4 ++--
.../gporca/data/dxl/minidump/IndexScan-BoolTrue.mdp | 4 ++--
.../data/dxl/minidump/IndexScan-DroppedColumns.mdp | 2 +-
.../data/dxl/minidump/IndexScan-IsNotNullPred.mdp | 2 +-
.../data/dxl/minidump/IndexScan-IsNullPred.mdp | 2 +-
.../data/dxl/minidump/IndexScan-ORPredsAOPart.mdp | 2 +-
.../data/dxl/minidump/IndexScan-ORPredsNonPart.mdp | 2 +-
.../IndexScan-OrderBy-on-MultiCol-NonIndex.mdp | 2 +-
.../IndexScan-OrderBy-on-Multiple-IndexCols.mdp | 2 +-
.../minidump/IndexScan-OrderBy-on-NonIndexCol.mdp | 2 +-
.../IndexScan-OrderBy-on-Single-IndexCol.mdp | 2 +-
.../gporca/data/dxl/minidump/IndexScan-Relabel.mdp | 4 ++--
.../gporca/data/dxl/minidump/IndexScanCosting.mdp | 2 +-
.../dxl/minidump/IndexScanWithNestedCTEAndSetOp.mdp | 4 ++--
.../gporca/data/dxl/minidump/IndexedNLJBitmap.mdp | 4 ++--
.../gporca/data/dxl/minidump/InferPredicates.mdp | 4 ++--
.../data/dxl/minidump/InferPredicatesBCC-oid-oid.mdp | 2 +-
.../data/dxl/minidump/InferPredicatesBCC-txt-txt.mdp | 2 +-
.../data/dxl/minidump/InferPredicatesBCC-vc-txt.mdp | 4 ++--
.../data/dxl/minidump/InferPredicatesBCC-vc-vc.mdp | 2 +-
.../dxl/minidump/InferPredicatesBCC-vcpart-txt.mdp | 4 ++--
.../data/dxl/minidump/InferPredicatesForLimit.mdp | 2 +-
.../data/dxl/minidump/InferPredicatesForPartSQ.mdp | 4 ++--
.../minidump/InferPredicatesForProcessedColumn.mdp | 6 +++---
.../dxl/minidump/InferPredicatesForQuantifiedSQ.mdp | 4 ++--
.../minidump/InferPredicatesFromExistsSubquery.mdp | 4 ++--
.../minidump/InferPredicatesFromMultiSubquery.mdp | 4 ++--
.../data/dxl/minidump/InferPredicatesInnerOfLOJ.mdp | 6 +++---
.../InferPredicatesIntFromExistsSubquery.mdp | 4 ++--
.../dxl/minidump/InferPredicatesIntFromSubquery.mdp | 4 ++--
.../dxl/minidump/InferPredicatesJoinSubquery.mdp | 6 +++---
.../dxl/minidump/InferPredicatesMultiColumns.mdp | 4 ++--
.../InferredPredicatesConstraintSimplification.mdp | 6 +++---
.../data/dxl/minidump/InnerJoin-With-OuterRefs.mdp | 6 +++---
.../dxl/minidump/InnerJoinBroadcastTableHashSpec.mdp | 4 ++--
.../data/dxl/minidump/InnerJoinOverJoinExcept.mdp | 2 +-
.../data/dxl/minidump/InnerJoinOverJoinExceptAll.mdp | 2 +-
.../minidump/InnerJoinReplicatedTableHashSpec.mdp | 4 ++--
.../minidump/Insert-AO-Partitioned-SortDisabled.mdp | 2 +-
.../data/dxl/minidump/Insert-AO-Partitioned.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/Insert-AO.mdp | 2 +-
.../data/dxl/minidump/Insert-With-HJ-CTE-Agg.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/Insert.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertAssertSort.mdp | 2 +-
.../data/dxl/minidump/InsertCoordinatorOnlyTable.mdp | 2 +-
.../dxl/minidump/InsertMismatchedDistrubution-2.mdp | 2 +-
.../dxl/minidump/InsertMismatchedDistrubution.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertNonSingleton.mdp | 4 ++--
.../gporca/data/dxl/minidump/InsertNotNullCols.mdp | 2 +-
.../dxl/minidump/InsertPrimaryKeyFromMOTable.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertProjectSort.mdp | 2 +-
.../gporca/data/dxl/minidump/InsertRandomDistr.mdp | 2 +-
...nsertReplicatedIntoSerialHashDistributedTable.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/InsertSort.mdp | 2 +-
.../InsertSortDistributed2CoordinatorOnly.mdp | 2 +-
.../gporca/data/dxl/minidump/Int2Predicate.mdp | 2 +-
.../gporca/data/dxl/minidump/Intersect-OuterRefs.mdp | 6 +++---
.../gporca/data/dxl/minidump/InvalidDeleteGather.mdp | 6 +++---
.../dxl/minidump/InvalidPlan_CTE-2-all-plans.mdp | 2 +-
...idPlan_IncompatibleDistributionOnJoinBranches.mdp | 4 ++--
...Plan_MotionGatherFromMasterToMaster-ScalarDQA.mdp | 2 +-
.../InvalidPlan_MotionGatherFromMasterToMaster.mdp | 4 ++--
.../gporca/data/dxl/minidump/InvalidUpdatePlan.mdp | 4 ++--
.../data/dxl/minidump/IsNullUnionAllIsNotNull.mdp | 2 +-
.../data/dxl/minidump/JOIN-NonRedistributableCol.mdp | 4 ++--
.../gporca/data/dxl/minidump/JOIN-Pred-Cast-Int4.mdp | 4 ++--
.../data/dxl/minidump/JOIN-Pred-Cast-Varchar.mdp | 4 ++--
.../JOIN-cast2text-int4-Eq-cast2text-double.mdp | 4 ++--
.../gporca/data/dxl/minidump/JOIN-int4-Eq-double.mdp | 4 ++--
.../gporca/data/dxl/minidump/JOIN-int4-Eq-int2.mdp | 4 ++--
.../gporca/data/dxl/minidump/Join-Disj-Subqs.mdp | 6 +++---
src/backend/gporca/data/dxl/minidump/Join-IDF.mdp | 4 ++--
.../data/dxl/minidump/Join-INDF-NoBroadcast.mdp | 4 ++--
.../dxl/minidump/Join-INDF-Nulls-Not-Collocated.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/Join-INDF.mdp | 4 ++--
.../data/dxl/minidump/Join-Varchar-Equality.mdp | 8 ++++----
.../gporca/data/dxl/minidump/Join-WinFunc-Preds.mdp | 4 ++--
.../data/dxl/minidump/Join-With-Subq-Preds-1.mdp | 4 ++--
.../data/dxl/minidump/Join-With-Subq-Preds-2.mdp | 4 ++--
.../data/dxl/minidump/JoinAbsEqWithoutOpfamilies.mdp | 4 ++--
...JoinArityAssociativityCommutativityAboveLimit.mdp | 6 +++---
.../JoinArityAssociativityCommutativityAtLimit.mdp | 6 +++---
...JoinArityAssociativityCommutativityBelowLimit.mdp | 6 +++---
.../gporca/data/dxl/minidump/JoinBelowUnionAll.mdp | 12 ++++++------
.../gporca/data/dxl/minidump/JoinCitextVarchar.mdp | 4 ++--
.../gporca/data/dxl/minidump/JoinColWithOnlyNDV.mdp | 8 ++++----
...oinDefaultOpfamiliesUsingNonDefaultOpfamilyOp.mdp | 4 ++--
.../gporca/data/dxl/minidump/JoinNDVRemain.mdp | 8 ++++----
.../data/dxl/minidump/JoinOnReplicatedUniversal.mdp | 2 +-
.../data/dxl/minidump/JoinOnViewWithCastedColumn.mdp | 4 ++--
...nOnViewWithCastedColumnAndSubqueryInPredicate.mdp | 4 ++--
...ViewWithMixOfPushableAndNonpushablePredicates.mdp | 4 ++--
.../minidump/JoinOnViewWithSetReturningColumn.mdp | 4 ++--
.../dxl/minidump/JoinOnViewWithVolatileColumn.mdp | 4 ++--
...oinOptimizationLevelGreedyNonPartTblInnerJoin.mdp | 8 ++++----
...JoinOptimizationLevelQuery3WayHashJoinPartTbl.mdp | 6 +++---
...JoinOptimizationLevelQueryNonPartTblInnerJoin.mdp | 8 ++++----
.../gporca/data/dxl/minidump/JoinOrderDPE.mdp | 12 ++++++------
src/backend/gporca/data/dxl/minidump/JoinPlan.mdp | 6 +++---
.../data/dxl/minidump/JoinPlanWithRedistribute.mdp | 4 ++--
.../gporca/data/dxl/minidump/JoinTinterval.mdp | 2 +-
.../JoinWithSingletonAndSingletonBranches.mdp | 2 +-
.../JoinWithSingletonAndUniversalBranches.mdp | 2 +-
.../dxl/minidump/JoinWithSubqueryProjectColumn.mdp | 4 ++--
.../dxl/minidump/Join_OuterChild_DistUniversal.mdp | 2 +-
.../dxl/minidump/LASJ-Not-In-Force-Broadcast.mdp | 4 ++--
.../gporca/data/dxl/minidump/LIKE-Pattern-Empty.mdp | 2 +-
.../data/dxl/minidump/LIKE-Pattern-green-2.mdp | 2 +-
.../gporca/data/dxl/minidump/LIKE-Pattern-green.mdp | 2 +-
.../gporca/data/dxl/minidump/LOJ-Condition-False.mdp | 2 +-
.../gporca/data/dxl/minidump/LOJ-DynBitmapIndex.mdp | 4 ++--
.../dxl/minidump/LOJ-DynBitmapIndexWithSelect.mdp | 4 ++--
.../gporca/data/dxl/minidump/LOJ-DynBtreeIndex.mdp | 4 ++--
.../dxl/minidump/LOJ-DynBtreeIndexWithSelect.mdp | 4 ++--
.../LOJ-HashJoin-MultiDistKeys-WithComplexPreds.mdp | 4 ++--
.../minidump/LOJ-IndexApply-CompsiteKey-Equiv.mdp | 6 +++---
.../minidump/LOJ-IndexApply-CompsiteKey-NoMotion.mdp | 6 +++---
.../LOJ-IndexApply-CoordinatorOnly-Table.mdp | 8 ++++----
.../LOJ-IndexApply-DistKey-Multiple-Predicates.mdp | 6 +++---
...pply-MultiDistKey-MultiIndexKey-NoExtraFilter.mdp | 4 ++--
.../LOJ-IndexApply-MultiDistKey-MultiIndexKey.mdp | 4 ++--
...exApply-MultiDistKeys-Bitmap-WithComplexPreds.mdp | 4 ++--
.../minidump/LOJ-IndexApply-MultiDistKeys-Bitmap.mdp | 4 ++--
.../LOJ-IndexApply-MultiDistKeys-IndexKeys.mdp | 6 +++---
...LOJ-IndexApply-MultiDistKeys-WithComplexPreds.mdp | 4 ++--
.../dxl/minidump/LOJ-IndexApply-MultiIndexes.mdp | 6 +++---
.../LOJ-IndexApply-Negative-NonEqual-Predicate.mdp | 6 +++---
.../data/dxl/minidump/LOJ-IndexApply-NonDistKey.mdp | 4 ++--
.../LOJ-IndexApply-WithComplexPredicates.mdp | 4 ++--
.../gporca/data/dxl/minidump/LOJ-IsNullPred.mdp | 4 ++--
.../gporca/data/dxl/minidump/LOJ-PushDown.mdp | 6 +++---
.../gporca/data/dxl/minidump/LOJ-With-Agg.mdp | 4 ++--
.../dxl/minidump/LOJ-With-Single-Pred-On-Outer.mdp | 4 ++--
.../dxl/minidump/LOJNonNullRejectingPredicates.mdp | 8 ++++----
.../data/dxl/minidump/LOJNullRejectingPredicates.mdp | 8 ++++----
.../minidump/LOJNullRejectingZeroPlacePredicates.mdp | 4 ++--
.../dxl/minidump/LOJReorderComplexNestedLOJs.mdp | 6 +++---
.../dxl/minidump/LOJReorderWithComplexPredicate.mdp | 6 +++---
.../gporca/data/dxl/minidump/LOJReorderWithIDF.mdp | 6 +++---
.../minidump/LOJReorderWithNestedLOJAndFilter.mdp | 6 +++---
.../dxl/minidump/LOJReorderWithOneSidedFilter.mdp | 6 +++---
.../dxl/minidump/LOJReorderWithSimplePredicate.mdp | 6 +++---
..._IDF_no_convert_outer_ref_predicate_with_NULL.mdp | 4 ++--
...no_convert_outer_ref_predicate_with_inner_ref.mdp | 4 ++--
.../dxl/minidump/LOJ_NULLTEST-On-SelfCheck-Pred.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp | 8 ++++----
.../LOJ_convert_to_inner_with_and_predicate.mdp | 4 ++--
...LOJ_convert_to_inner_with_inner_predicate_IDF.mdp | 4 ++--
.../LOJ_convert_to_inner_with_or_predicate.mdp | 4 ++--
...nvert_to_inner_with_inner_predicate_IDF_const.mdp | 4 ++--
...nt_convert_to_inner_with_outer_predicate_INDF.mdp | 4 ++--
...vert_to_inner_with_outer_predicate_INDF_const.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/LargeJoins.mdp | 16 ++++++++--------
.../data/dxl/minidump/LargeMultiColumnInList.mdp | 2 +-
.../gporca/data/dxl/minidump/Lead-Lag-WinFuncs.mdp | 2 +-
.../data/dxl/minidump/Least-Greatest-Subselect.mdp | 2 +-
.../gporca/data/dxl/minidump/Least-Greatest.mdp | 2 +-
.../data/dxl/minidump/LeftJoin-DPv2-With-Select.mdp | 6 +++---
.../LeftJoin-UnsupportedFilter-Cardinality.mdp | 6 +++---
.../data/dxl/minidump/LeftJoin-With-Coalesce.mdp | 6 +++---
.../dxl/minidump/LeftJoin-With-Col-Const-Pred.mdp | 10 +++++-----
.../dxl/minidump/LeftJoin-With-Pred-On-Inner.mdp | 4 ++--
.../dxl/minidump/LeftJoin-With-Pred-On-Inner2.mdp | 4 ++--
.../dxl/minidump/LeftJoinBroadcastTableHashSpec.mdp | 4 ++--
.../data/dxl/minidump/LeftJoinDPv2JoinOrder.mdp | 8 ++++----
.../data/dxl/minidump/LeftJoinNullsNotColocated.mdp | 6 +++---
.../gporca/data/dxl/minidump/LeftJoinPruning.mdp | 2 +-
.../minidump/LeftJoinPruningInOuterInnerQuery.mdp | 4 ++--
.../data/dxl/minidump/LeftJoinPruningInnerQuery.mdp | 4 ++--
.../data/dxl/minidump/LeftJoinPruningOuterQuery.mdp | 4 ++--
.../LeftOuter2InnerUnionAllAntiSemiJoin-Tpcds.mdp | 6 +++---
.../minidump/LeftOuter2InnerUnionAllAntiSemiJoin.mdp | 4 ++--
.../data/dxl/minidump/LikePredStatsNotComparable.mdp | 2 +-
.../gporca/data/dxl/minidump/ListPartLossyCastEq.mdp | 2 +-
.../gporca/data/dxl/minidump/ListPartLossyCastLT.mdp | 2 +-
.../data/dxl/minidump/ListPartLossyCastNEq.mdp | 2 +-
.../data/dxl/minidump/LogicalIndexGetDroppedCols.mdp | 2 +-
.../gporca/data/dxl/minidump/MDQA-SameDQAColumn.mdp | 2 +-
.../data/dxl/minidump/MDQAs-Grouping-OrderBy.mdp | 2 +-
.../gporca/data/dxl/minidump/MDQAs-Grouping.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/MDQAs-Union.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/MDQAs1.mdp | 2 +-
.../data/dxl/minidump/ManyTextUnionsInSubquery.mdp | 4 ++--
.../Max-Aggregate-uses-IndexScan-and-Limit.mdp | 2 +-
.../Min-Aggregate-uses-IndexScan-and-Limit.mdp | 2 +-
.../gporca/data/dxl/minidump/MissingBoolColStats.mdp | 2 +-
.../gporca/data/dxl/minidump/MissingStats.mdp | 2 +-
.../minidump/MotionHazard-MaterializeUnderResult.mdp | 6 +++---
.../MotionHazard-NoMaterializeGatherUnderResult.mdp | 6 +++---
.../MotionHazard-NoMaterializeHashAggUnderResult.mdp | 6 +++---
.../MotionHazard-NoMaterializeSortUnderResult.mdp | 6 +++---
.../minidump/MultiColumnAggWithDefaultOpfamilies.mdp | 4 ++--
...ultiColumnDQA-InnerJoin-GroupBy-HashAggregate.mdp | 4 ++--
.../dxl/minidump/MultiDistKeyJoinCardinality.mdp | 6 +++---
.../MultiDistKeyWithOtherPredsJoinCardinality.mdp | 4 ++--
.../data/dxl/minidump/MultiLevel-CorrelatedExec.mdp | 6 +++---
.../data/dxl/minidump/MultiLevel-IN-Subquery.mdp | 6 +++---
.../data/dxl/minidump/MultiLevel-NOT-IN-Subquery.mdp | 6 +++---
.../MultiLevelDecorrelationWithSemiJoins.mdp | 8 ++++----
.../data/dxl/minidump/MultiLevelPartLossyCastNEq.mdp | 2 +-
.../minidump/MultipleDampedPredJoinCardinality.mdp | 4 ++--
.../MultipleIndependentPredJoinCardinality.mdp | 6 +++---
.../data/dxl/minidump/MultipleIndexPredicate.mdp | 2 +-
.../minidump/MultipleSubqueriesInSelectClause.mdp | 2 +-
.../dxl/minidump/MultipleUpdateWithJoinOnDistCol.mdp | 4 ++--
.../data/dxl/minidump/NLJ-BC-Outer-Spool-Inner.mdp | 2 +-
.../dxl/minidump/NLJ-Broadcast-DPE-Outer-Child.mdp | 2 +-
.../data/dxl/minidump/NLJ-DistCol-No-Broadcast.mdp | 4 ++--
.../data/dxl/minidump/NLJ-EqAllCol-No-Broadcast.mdp | 4 ++--
.../NLJ-EqDistCol-InEqNonDistCol-No-Broadcast.mdp | 4 ++--
.../NLJ-InEqDistCol-EqNonDistCol-Redistribute.mdp | 4 ++--
.../data/dxl/minidump/NLJ-Rewindability-CTAS.mdp | 10 +++++-----
.../gporca/data/dxl/minidump/NLJ-Rewindability.mdp | 6 +++---
.../gporca/data/dxl/minidump/NOT-IN-ArrayCmp.mdp | 4 ++--
.../gporca/data/dxl/minidump/NOT-IN-NotNullBoth.mdp | 2 +-
.../gporca/data/dxl/minidump/NOT-IN-NullInner.mdp | 4 ++--
.../gporca/data/dxl/minidump/NOT-IN-NullOuter.mdp | 4 ++--
.../gporca/data/dxl/minidump/Name-Cardinality.mdp | 2 +-
.../data/dxl/minidump/NaryWithLojAndNonLojChilds.mdp | 10 +++++-----
.../minidump/NdvPreservingExprProjectionEquiJoin.mdp | 4 ++--
.../NdvPreservingExprProjectionNonEquiJoin.mdp | 4 ++--
.../data/dxl/minidump/Negative-IndexApply1.mdp | 4 ++--
.../data/dxl/minidump/Negative-IndexApply2.mdp | 4 ++--
.../data/dxl/minidump/Nested-Or-Predicates.mdp | 2 +-
.../gporca/data/dxl/minidump/Nested-Setops-2.mdp | 4 ++--
.../gporca/data/dxl/minidump/Nested-Setops.mdp | 6 +++---
.../NestedInSubqWithPrjListOuterRefNoInnerRef.mdp | 6 +++---
.../data/dxl/minidump/NestedJoinWithCastedColumn.mdp | 8 ++++----
.../data/dxl/minidump/NestedNLJWithBlockingSpool.mdp | 4 ++--
.../minidump/NestedProjectCountStarWithOuterRefs.mdp | 4 ++--
.../data/dxl/minidump/NestedSubqLimitBindings.mdp | 2 +-
.../data/dxl/minidump/NewBtreeIndexScanCost.mdp | 4 ++--
.../NoBroadcastUnderGatherForWindowFunction.mdp | 2 +-
.../minidump/NoDistKeyMultiPredJoinCardinality.mdp | 6 +++---
.../data/dxl/minidump/NoHashAggWithoutPrelimFunc.mdp | 2 +-
.../gporca/data/dxl/minidump/NoMissingStats.mdp | 2 +-
.../dxl/minidump/NoMissingStatsAfterDroppedCol.mdp | 2 +-
.../minidump/NoMissingStatsAskingForSystemColFOJ.mdp | 4 ++--
.../dxl/minidump/NoMissingStatsForEmptyTable.mdp | 2 +-
.../gporca/data/dxl/minidump/NoMotionsPlan.mdp | 4 ++--
...NoPartConstraint-WhenNoDefaultPartsAndIndices.mdp | 2 +-
.../data/dxl/minidump/NoPartPropagationPlan.mdp | 4 ++--
.../minidump/NoPushdownPredicateWithCTEAnchor.mdp | 2 +-
.../data/dxl/minidump/NoRedistributeOnAppend.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/NoSortPlan.mdp | 4 ++--
.../data/dxl/minidump/Non-Hashjoinable-Pred-2.mdp | 4 ++--
.../data/dxl/minidump/Non-Hashjoinable-Pred.mdp | 4 ++--
...pingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp | 2 +-
.../gporca/data/dxl/minidump/NonSingleton.mdp | 4 ++--
.../gporca/data/dxl/minidump/NonSplittableAgg.mdp | 2 +-
.../NotExists-SuperflousOuterRefWithGbAgg.mdp | 4 ++--
.../dxl/minidump/NotExists-SuperfluousEquality.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/NotInToLASJ.mdp | 2 +-
.../NotWellDefinedDisjunctConjunctPredicates.mdp | 2 +-
.../data/dxl/minidump/NullConstant-INDF-Col.mdp | 2 +-
.../data/dxl/minidump/NullIf-With-Subquery.mdp | 4 ++--
.../gporca/data/dxl/minidump/OR-WithIsNullPred.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/OR.mdp | 2 +-
.../minidump/OneDistKeyMultiPredJoinCardinality.mdp | 6 +++---
.../data/dxl/minidump/OneLevel-CorrelatedExec.mdp | 6 +++---
.../gporca/data/dxl/minidump/OneSegmentGather.mdp | 2 +-
.../OptimizerConfigWithSegmentsForCosting.mdp | 2 +-
.../data/dxl/minidump/OrderByNoRedundantSort.mdp | 4 ++--
.../gporca/data/dxl/minidump/OrderByNullsFirst.mdp | 2 +-
.../gporca/data/dxl/minidump/OrderByOuterRef.mdp | 4 ++--
.../data/dxl/minidump/OrderedAgg_array_fraction.mdp | 2 +-
.../data/dxl/minidump/OrderedAgg_computed_col.mdp | 2 +-
.../dxl/minidump/OrderedAgg_multiple_diffcol.mdp | 2 +-
.../dxl/minidump/OrderedAgg_multiple_samecol.mdp | 2 +-
.../OrderedAgg_multiple_samecol_difforderespec.mdp | 2 +-
.../gporca/data/dxl/minidump/OrderedAgg_single.mdp | 2 +-
.../data/dxl/minidump/OrderedAgg_skewed_data.mdp | 2 +-
.../data/dxl/minidump/OrderedAgg_with_groupby.mdp | 2 +-
.../dxl/minidump/OrderedAgg_with_nonOrderedAgg.mdp | 2 +-
.../minidump/OrderedAgg_with_nonconst_fraction.mdp | 2 +-
.../data/dxl/minidump/OuterJoin-With-OuterRefs.mdp | 6 +++---
.../dxl/minidump/OuterJoinOnViewWithCastedColumn.mdp | 4 ++--
...pingHomogenousIndexesOnRoot-ANDPredicate-HEAP.mdp | 2 +-
.../OverlappingHomogenousIndexesOnRoot-HEAP.mdp | 2 +-
.../dxl/minidump/Part-Selection-ConstArray-1.mdp | 2 +-
.../dxl/minidump/Part-Selection-ConstArray-2.mdp | 2 +-
.../gporca/data/dxl/minidump/Part-Selection-IN.mdp | 2 +-
.../data/dxl/minidump/Part-Selection-NOT-IN.mdp | 2 +-
.../PartConstraint-WhenDefaultPartsAndIndices.mdp | 2 +-
.../PartConstraint-WhenIndicesAndNoDefaultParts.mdp | 2 +-
.../PartConstraint-WithOnlyDefaultPartInfo.mdp | 2 +-
.../minidump/PartForeignDifferentExecLocation.mdp | 2 +-
.../data/dxl/minidump/PartForeignDifferentServer.mdp | 2 +-
.../gporca/data/dxl/minidump/PartForeignMixed.mdp | 2 +-
.../gporca/data/dxl/minidump/PartForeignMixedDPE.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartForeignMixedSPE.mdp | 2 +-
.../data/dxl/minidump/PartForeignUniformSPE.mdp | 2 +-
.../gporca/data/dxl/minidump/PartPredsWithRandom.mdp | 2 +-
.../data/dxl/minidump/PartSelectorOnJoinSide.mdp | 4 ++--
.../data/dxl/minidump/PartSelectorOnJoinSide2.mdp | 4 ++--
.../minidump/PartTbl-AggWithExistentialSubquery.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-ArrayCoerce.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-ArrayIn.mdp | 2 +-
.../minidump/PartTbl-AsymmetricRangePredicate.mdp | 2 +-
.../data/dxl/minidump/PartTbl-AvoidRangePred-DPE.mdp | 6 +++---
.../data/dxl/minidump/PartTbl-CSQ-NonPartKey.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-CSQ-PartKey.mdp | 2 +-
.../data/dxl/minidump/PartTbl-ComplexPredicate1.mdp | 2 +-
.../data/dxl/minidump/PartTbl-ComplexPredicate2.mdp | 2 +-
.../data/dxl/minidump/PartTbl-ComplexPredicate3.mdp | 2 +-
.../data/dxl/minidump/PartTbl-ComplexPredicate4.mdp | 2 +-
.../data/dxl/minidump/PartTbl-ComplexPredicate5.mdp | 2 +-
.../PartTbl-ComplexRangePredicate-DefaultPart.mdp | 2 +-
.../PartTbl-ComplexRangePredicate-NoDefaultPart.mdp | 2 +-
.../dxl/minidump/PartTbl-DPE-Correlated-NLOuter.mdp | 4 ++--
.../PartTbl-DPE-DynamicIndexOnlyScan-Range.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-DPE-GroupBy.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-DPE-Limit.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-DPE-Opfamily.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-DPE-WindowFunction.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/PartTbl-DPE.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-DateTime.mdp | 2 +-
.../dxl/minidump/PartTbl-DisablePartSelection.mdp | 2 +-
.../minidump/PartTbl-DisablePartSelectionJoin.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-Disjunction.mdp | 2 +-
.../minidump/PartTbl-EqPredicateWithCastRange.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/PartTbl-HJ2.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/PartTbl-HJ3.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/PartTbl-HJ4.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/PartTbl-HJ5.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-IDFList.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-IDFNull.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-IDFWithCast.mdp | 2 +-
.../data/dxl/minidump/PartTbl-IndexOnDefPartOnly.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-IsNotNullPredicate.mdp | 2 +-
.../data/dxl/minidump/PartTbl-IsNullPredicate.mdp | 2 +-
.../data/dxl/minidump/PartTbl-JoinOverExcept.mdp | 6 +++---
.../data/dxl/minidump/PartTbl-JoinOverGbAgg-2.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-JoinOverGbAgg.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-JoinOverIntersect.mdp | 6 +++---
.../data/dxl/minidump/PartTbl-JoinOverUnion-1.mdp | 6 +++---
.../data/dxl/minidump/PartTbl-JoinOverUnion-2.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-LASJ.mdp | 4 ++--
.../PartTbl-LeftOuterHashJoin-DPE-IsNull.mdp | 4 ++--
.../minidump/PartTbl-LeftOuterNLJoin-DPE-IsNull.mdp | 4 ++--
.../dxl/minidump/PartTbl-List-DPE-Int-Predicates.mdp | 2 +-
.../minidump/PartTbl-List-DPE-Varchar-Predicates.mdp | 2 +-
.../data/dxl/minidump/PartTbl-MultiWayJoin.mdp | 4 ++--
.../dxl/minidump/PartTbl-MultiWayJoinWithDPE-2.mdp | 4 ++--
.../dxl/minidump/PartTbl-MultipleEqPredicates.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-NEqPredicate.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/PartTbl-NLJ.mdp | 2 +-
.../data/dxl/minidump/PartTbl-NonConstSelect.mdp | 2 +-
.../data/dxl/minidump/PartTbl-PredicateWithCast.mdp | 2 +-
.../dxl/minidump/PartTbl-PredicateWithCastList.mdp | 2 +-
.../PartTbl-PredicateWithCastMultiLevelList.mdp | 2 +-
.../data/dxl/minidump/PartTbl-RangeJoinPred.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-Relabel-Equality.mdp | 2 +-
.../data/dxl/minidump/PartTbl-Relabel-Range.mdp | 2 +-
.../PartTbl-RightOuterHashJoin-DPE-IsNull-V2.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-SPE-Boolean1.mdp | 2 +-
.../data/dxl/minidump/PartTbl-SPE-Boolean2.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost1.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost2.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost3.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost4.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-List-Cost5.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost1.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost2.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost3.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost4.mdp | 2 +-
.../PartTbl-SPE-DynamicTableScan-Range-Cost5.mdp | 2 +-
.../gporca/data/dxl/minidump/PartTbl-SQAll.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-SQAny.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-SQExists.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-SQNotExists.mdp | 4 ++--
.../gporca/data/dxl/minidump/PartTbl-SQScalar.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-SubqueryOuterRef.mdp | 4 ++--
.../data/dxl/minidump/PartTbl-VolatileFunc.mdp | 2 +-
.../PartTbl-WindowFuncNoDisjunctPredPushDown.mdp | 2 +-
.../minidump/PartTbl-WindowFuncNoPredPushDown.mdp | 2 +-
.../PartTbl-WindowFuncPartialPredPushDown.mdp | 2 +-
.../dxl/minidump/PartTbl-WindowFuncPredPushDown.mdp | 2 +-
.../PartTbl-WindowFuncSinglePredPushDown.mdp | 2 +-
.../data/dxl/minidump/PartTbl-WindowFunction.mdp | 4 ++--
.../data/dxl/minidump/PredStatsNotComparable.mdp | 2 +-
.../minidump/PredicateWithConjunctsAndDisjuncts.mdp | 2 +-
.../minidump/PredicateWithConjunctsOfDisjuncts.mdp | 2 +-
.../dxl/minidump/PredicateWithLongConjunction.mdp | 2 +-
.../gporca/data/dxl/minidump/Preds-Over-WinFunc1.mdp | 2 +-
.../gporca/data/dxl/minidump/Preds-Over-WinFunc2.mdp | 2 +-
.../gporca/data/dxl/minidump/Preds-Over-WinFunc3.mdp | 2 +-
.../gporca/data/dxl/minidump/Preds-Over-WinFunc4.mdp | 2 +-
.../gporca/data/dxl/minidump/Preds-Over-WinFunc5.mdp | 2 +-
...ndexOnlyScanOnAppendOnlyVersion6UpgradedTable.mdp | 2 +-
...itionedTableContainingAppendOnlyVersion6Child.mdp | 2 +-
...itionedTableContainingAppendOnlyVersion6Child.mdp | 2 +-
.../gporca/data/dxl/minidump/ProjectCountStar.mdp | 4 ++--
.../dxl/minidump/ProjectCountStarWithOuterRefs.mdp | 4 ++--
.../data/dxl/minidump/ProjectOutsideCountStar.mdp | 4 ++--
.../data/dxl/minidump/ProjectRepeatedColumn1.mdp | 2 +-
.../data/dxl/minidump/ProjectRepeatedColumn2.mdp | 2 +-
.../gporca/data/dxl/minidump/ProjectUnderSubq.mdp | 4 ++--
.../gporca/data/dxl/minidump/ProjectWithConstant.mdp | 2 +-
.../data/dxl/minidump/ProjectWithTextConstant.mdp | 2 +-
.../data/dxl/minidump/Push-Subplan-Below-Union.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-1.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-10.mdp | 6 +++---
.../PushConstantSelectPredicateThruJoin-11.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-12.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-13.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-14.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-15.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-16.mdp | 2 +-
.../PushConstantSelectPredicateThruJoin-17.mdp | 2 +-
.../PushConstantSelectPredicateThruJoin-2.mdp | 6 +++---
.../PushConstantSelectPredicateThruJoin-3.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-4.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-5.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-6.mdp | 6 +++---
.../PushConstantSelectPredicateThruJoin-7.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-8.mdp | 4 ++--
.../PushConstantSelectPredicateThruJoin-9.mdp | 10 +++++-----
.../dxl/minidump/PushFilterToSemiJoinLeftChild.mdp | 4 ++--
.../dxl/minidump/PushGbBelowJoin-NegativeCase.mdp | 2 +-
.../data/dxl/minidump/PushGbBelowNaryUnion-1.mdp | 6 +++---
.../data/dxl/minidump/PushGbBelowNaryUnion-2.mdp | 6 +++---
.../data/dxl/minidump/PushGbBelowNaryUnionAll.mdp | 6 +++---
.../gporca/data/dxl/minidump/PushGbBelowUnion.mdp | 4 ++--
.../gporca/data/dxl/minidump/PushGbBelowUnionAll.mdp | 4 ++--
.../minidump/PushSelectWithOuterRefBelowUnion.mdp | 4 ++--
.../QueryMismatchedDistribution-DynamicIndexScan.mdp | 4 ++--
.../dxl/minidump/QueryMismatchedDistribution.mdp | 2 +-
.../gporca/data/dxl/minidump/RTErequiredPerms.mdp | 4 ++--
.../RangePartLossyCastEqInPartitionRange.mdp | 2 +-
.../RangePartLossyCastEqOnEndPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTEqInPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTEqOnEndPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTInPartitionRange.mdp | 2 +-
.../RangePartLossyCastLTOnEndPartitionRange.mdp | 2 +-
.../dxl/minidump/Remove-Distinct-From-Subquery.mdp | 4 ++--
.../minidump/RemoveImpliedPredOnBCCPredicates.mdp | 2 +-
.../data/dxl/minidump/RemoveUnusedProjElements.mdp | 2 +-
.../dxl/minidump/RemoveUnusedProjElementsInGbAgg.mdp | 2 +-
.../dxl/minidump/ReplicatedHashJoinReplicated.mdp | 4 ++--
.../minidump/ReplicatedJoinHashDistributedTable.mdp | 4 ++--
.../dxl/minidump/ReplicatedJoinPartitionedTable.mdp | 4 ++--
.../ReplicatedJoinRandomDistributedTable.mdp | 4 ++--
.../minidump/ReplicatedLOJHashDistributedTable.mdp | 4 ++--
.../minidump/ReplicatedLOJRandomDistributedTable.mdp | 4 ++--
.../data/dxl/minidump/ReplicatedLOJReplicated.mdp | 4 ++--
.../data/dxl/minidump/ReplicatedNLJReplicated.mdp | 4 ++--
.../data/dxl/minidump/ReplicatedTableAggregate.mdp | 2 +-
.../gporca/data/dxl/minidump/ReplicatedTableCTE.mdp | 4 ++--
.../data/dxl/minidump/ReplicatedTableGroupBy.mdp | 2 +-
.../data/dxl/minidump/ReplicatedTableInClause.mdp | 4 ++--
.../data/dxl/minidump/ReplicatedTableSelect.mdp | 2 +-
.../dxl/minidump/ReplicatedTableSequenceInsert.mdp | 2 +-
.../dxl/minidump/ReplicatedTableWithAggNoMotion.mdp | 2 +-
.../data/dxl/minidump/RightJoinBothReplicated.mdp | 4 ++--
.../gporca/data/dxl/minidump/RightJoinDPE.mdp | 4 ++--
.../dxl/minidump/RightJoinDpeWithWhereClause.mdp | 4 ++--
.../gporca/data/dxl/minidump/RightJoinHashed.mdp | 4 ++--
.../data/dxl/minidump/RightJoinNoDPSNonDistKey.mdp | 4 ++--
.../data/dxl/minidump/RightJoinRedistribute.mdp | 4 ++--
.../gporca/data/dxl/minidump/RightJoinReplicated.mdp | 4 ++--
.../gporca/data/dxl/minidump/RightJoinTVF.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/RollupNoAgg.mdp | 2 +-
.../data/dxl/minidump/ScSubqueryWithOuterRef.mdp | 4 ++--
.../minidump/ScalarCorrelatedSubqueryCountStar.mdp | 4 ++--
.../data/dxl/minidump/ScalarDQAWithNonScalarAgg.mdp | 2 +-
.../dxl/minidump/ScalarFuncPushedBelowGather.mdp | 2 +-
.../data/dxl/minidump/ScalarSubqueryCountStar.mdp | 4 ++--
.../dxl/minidump/ScalarSubqueryCountStarInJoin.mdp | 6 +++---
.../data/dxl/minidump/Select-Over-CTEAnchor.mdp | 4 ++--
.../gporca/data/dxl/minidump/Select-Over-PartTbl.mdp | 2 +-
.../data/dxl/minidump/Select-Proj-OuterJoin.mdp | 8 ++++----
.../gporca/data/dxl/minidump/SelectOnBpchar.mdp | 2 +-
.../gporca/data/dxl/minidump/SelectOnCastedCol.mdp | 4 ++--
.../data/dxl/minidump/Self-Comparison-Nullable.mdp | 2 +-
.../gporca/data/dxl/minidump/Self-Comparison.mdp | 2 +-
.../minidump/SelfJoinDampedPredJoinCardinality.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/SelfUpdate.mdp | 2 +-
.../gporca/data/dxl/minidump/SemiJoin2InnerJoin.mdp | 4 ++--
.../gporca/data/dxl/minidump/SemiJoin2Select-1.mdp | 4 ++--
.../gporca/data/dxl/minidump/SemiJoin2Select-2.mdp | 4 ++--
.../dxl/minidump/SemiJoin2Select-EnforceSubplan.mdp | 4 ++--
src/backend/gporca/data/dxl/minidump/SemiJoinDPE.mdp | 4 ++--
.../minidump/SemiJoinWithWindowsFuncInSubquery.mdp | 4 ++--
.../dxl/minidump/SimplifyExistsSubquery2Limit.mdp | 4 ++--
.../SingleColumnHomogenousIndexOnRoot-AO.mdp | 2 +-
.../SingleColumnHomogenousIndexOnRoot-HEAP.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/SixWayDPv2.mdp | 12 ++++++------
.../gporca/data/dxl/minidump/SortOverStreamAgg.mdp | 2 +-
.../SpoolShouldInvalidateUnresolvedDynamicScans.mdp | 6 +++---
.../gporca/data/dxl/minidump/SqlFuncDmlScalar.mdp | 2 +-
.../gporca/data/dxl/minidump/SqlFuncDmlTvf.mdp | 2 +-
.../gporca/data/dxl/minidump/SqlFuncNullReject.mdp | 4 ++--
.../data/dxl/minidump/SqlFuncPredFactorize.mdp | 4 ++--
.../minidump/Stats-For-Select-With-Outer-Refs.mdp | 4 ++--
.../dxl/minidump/StatsFilter-AnyWithNewColStats.mdp | 2 +-
.../data/dxl/minidump/Subq-JoinWithOuterRef.mdp | 6 +++---
.../gporca/data/dxl/minidump/Subq-NoParams.mdp | 4 ++--
.../gporca/data/dxl/minidump/Subq-On-OuterRef.mdp | 4 ++--
.../data/dxl/minidump/Subq-With-OuterRefCol.mdp | 4 ++--
.../gporca/data/dxl/minidump/Subq2CorrSQInLOJOn.mdp | 6 +++---
.../gporca/data/dxl/minidump/Subq2NotInWhereLOJ.mdp | 6 +++---
.../data/dxl/minidump/Subq2OuterRef2InJoin.mdp | 6 +++---
.../dxl/minidump/Subq2OuterRefMultiLevelInOn.mdp | 6 +++---
.../data/dxl/minidump/Subq2PartialDecorrelate.mdp | 6 +++---
.../dxl/minidump/SubqAll-InsideScalarExpression.mdp | 4 ++--
.../gporca/data/dxl/minidump/SubqAll-Limit1.mdp | 4 ++--
.../data/dxl/minidump/SubqAll-To-ScalarSubq.mdp | 2 +-
.../dxl/minidump/SubqAny-InsideScalarExpression.mdp | 4 ++--
.../gporca/data/dxl/minidump/SubqEnforceSubplan.mdp | 4 ++--
.../dxl/minidump/SubqExists-With-External-Corrs.mdp | 6 +++---
.../minidump/SubqExists-Without-External-Corrs.mdp | 6 +++---
.../gporca/data/dxl/minidump/SubqInIndexPred.mdp | 8 ++++----
.../data/dxl/minidump/SubqOuterReferenceInClause.mdp | 4 ++--
.../data/dxl/minidump/Subquery-AnyAllAggregates.mdp | 4 ++--
.../dxl/minidump/Subquery-ExistsAllAggregates.mdp | 4 ++--
.../Subquery-ExistsAllAggregatesWithDisjuncts.mdp | 6 +++---
.../data/dxl/minidump/SubqueryInsideArrayRef.mdp | 2 +-
.../dxl/minidump/SubqueryInsideArrayRefIndexList.mdp | 2 +-
.../data/dxl/minidump/SubqueryInsideScalarIf.mdp | 6 +++---
.../gporca/data/dxl/minidump/SubqueryNullTest.mdp | 4 ++--
.../data/dxl/minidump/SubqueryOuterRefLimit.mdp | 4 ++--
.../gporca/data/dxl/minidump/SubqueryOuterRefTVF.mdp | 2 +-
.../data/dxl/minidump/Switch-With-Subquery.mdp | 4 ++--
.../dxl/minidump/TPCDS-39-InnerJoin-JoinEstimate.mdp | 4 ++--
.../data/dxl/minidump/TPCH-Partitioned-256GB.mdp | 8 ++++----
.../data/dxl/minidump/TVF-With-Deep-Subq-Args.mdp | 2 +-
.../gporca/data/dxl/minidump/TVFVolatileJoin.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedAgg.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedFilter.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedLimit.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedTablesCTE.mdp | 2 +-
.../data/dxl/minidump/TaintedReplicatedWindowAgg.mdp | 2 +-
.../data/dxl/minidump/TextMCVCardinalityEquals.mdp | 2 +-
.../dxl/minidump/TextMCVCardinalityGreaterThan.mdp | 2 +-
.../minidump/ThreeStageAgg-DistinctOnComputedCol.mdp | 2 +-
.../minidump/ThreeStageAgg-DistinctOnDistrCol.mdp | 2 +-
.../ThreeStageAgg-DistinctOnSameNonDistrCol.mdp | 2 +-
...hreeStageAgg-GbMultipleCol-DistinctOnDistrCol.mdp | 2 +-
.../ThreeStageAgg-GbandDistinctOnDistrCol.mdp | 2 +-
.../ThreeStageAgg-ScalarAgg-DistinctComputedCol.mdp | 2 +-
.../ThreeStageAgg-ScalarAgg-DistinctDistrCol.mdp | 2 +-
.../ThreeStageAgg-ScalarAgg-DistinctNonDistrCol.mdp | 2 +-
.../gporca/data/dxl/minidump/ThreeStageAgg.mdp | 2 +-
.../data/dxl/minidump/TimeStamp-Date-HashJoin.mdp | 4 ++--
.../data/dxl/minidump/Tpcds-10TB-Q37-NoIndexJoin.mdp | 16 ++++++++--------
.../gporca/data/dxl/minidump/Tpcds-NonPart-Q70a.mdp | 12 ++++++------
.../dxl/minidump/TranslateFilterDisjunctQuals.mdp | 6 +++---
...WithCTEAndTableScanIntoFilterAndOneTimeFilter.mdp | 4 ++--
.../minidump/TranslateOneTimeFilterConjunctQuals.mdp | 6 +++---
.../data/dxl/minidump/TypeModifierArrayRef.mdp | 2 +-
.../gporca/data/dxl/minidump/TypeModifierCast.mdp | 2 +-
.../gporca/data/dxl/minidump/TypeModifierColumn.mdp | 2 +-
.../gporca/data/dxl/minidump/UDA-AnyArray.mdp | 2 +-
.../gporca/data/dxl/minidump/UDA-AnyElement-1.mdp | 2 +-
.../gporca/data/dxl/minidump/UDA-AnyElement-2.mdp | 2 +-
.../Union-Distributed-Table-With-Const-Table.mdp | 2 +-
.../dxl/minidump/Union-OuterRefs-Casting-Output.mdp | 4 ++--
.../data/dxl/minidump/Union-OuterRefs-InnerChild.mdp | 4 ++--
.../data/dxl/minidump/Union-OuterRefs-Output.mdp | 4 ++--
.../gporca/data/dxl/minidump/Union-Over-UnionAll.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/UnionAll.mdp | 6 +++---
.../data/dxl/minidump/UnionAllCompatibleDataType.mdp | 6 +++---
.../dxl/minidump/UnionAllWithTruncatedOutput.mdp | 4 ++--
.../gporca/data/dxl/minidump/UnionGbSubquery.mdp | 2 +-
.../gporca/data/dxl/minidump/UnionOfDQAQueries.mdp | 2 +-
.../gporca/data/dxl/minidump/UnionWithCTE.mdp | 2 +-
.../gporca/data/dxl/minidump/UnionWithOuterRefs.mdp | 4 ++--
.../gporca/data/dxl/minidump/UnnestSQJoins.mdp | 10 +++++-----
.../data/dxl/minidump/UnsupportedStatsPredicate.mdp | 4 ++--
.../data/dxl/minidump/UpdateCardinalityAssert.mdp | 4 ++--
.../data/dxl/minidump/UpdateCheckConstraint.mdp | 4 ++--
.../minidump/UpdateDistKeyMismatchedDistribution.mdp | 4 ++--
.../dxl/minidump/UpdateDistKeyWithNestedJoin.mdp | 2 +-
.../gporca/data/dxl/minidump/UpdateDistrKey.mdp | 4 ++--
.../gporca/data/dxl/minidump/UpdateDroppedCols.mdp | 2 +-
.../data/dxl/minidump/UpdateNoCardinalityAssert.mdp | 2 +-
.../UpdateNoDistKeyMismatchedDistribution.mdp | 4 ++--
.../data/dxl/minidump/UpdateNoEnforceConstraints.mdp | 2 +-
.../gporca/data/dxl/minidump/UpdateNotNullCols.mdp | 4 ++--
.../gporca/data/dxl/minidump/UpdatePartTable.mdp | 2 +-
.../gporca/data/dxl/minidump/UpdateRandomDistr.mdp | 2 +-
.../data/dxl/minidump/UpdateUniqueConstraint-2.mdp | 6 +++---
.../data/dxl/minidump/UpdateUniqueConstraint.mdp | 2 +-
.../data/dxl/minidump/UpdateVolatileFunction.mdp | 2 +-
.../data/dxl/minidump/UpdateWindowGatherMerge.mdp | 2 +-
.../gporca/data/dxl/minidump/UpdateWithHashJoin.mdp | 4 ++--
.../data/dxl/minidump/UpdatingDistributionColumn.mdp | 2 +-
.../data/dxl/minidump/UpdatingMultipleColumn.mdp | 2 +-
.../dxl/minidump/UpdatingNonDistColSameTable.mdp | 2 +-
.../minidump/UpdatingNonDistributionColumnFunc.mdp | 2 +-
.../dxl/minidump/VarcharMCVCardinalityEquals.mdp | 2 +-
.../minidump/VarcharMCVCardinalityGreaterThan.mdp | 2 +-
.../data/dxl/minidump/VariadicFlagWithJson.mdp | 2 +-
.../WinFunc-Redistribute-Sort-CTE-Producer.mdp | 2 +-
.../gporca/data/dxl/minidump/WinFunc-Simple.mdp | 2 +-
.../gporca/data/dxl/minidump/WinFuncWithSubqArgs.mdp | 4 ++--
.../data/dxl/minidump/WindowFrame-SingleEdged.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-1.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-2.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-3.mdp | 2 +-
.../data/dxl/minidump/cte-duplicate-columns-4.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/retail_28.mdp | 4 ++--
.../gporca/data/dxl/minidump/window-count-gpdb6.mdp | 2 +-
.../naucrates/dxl/parser/CParseHandlerMDRelation.h | 3 +++
.../include/naucrates/md/CMDRelationCtasGPDB.h | 7 +++++++
.../include/naucrates/md/CMDRelationGPDB.h | 7 ++++++-
.../libnaucrates/include/naucrates/md/IMDRelation.h | 3 +++
.../gporca/libnaucrates/src/md/CMDRelationGPDB.cpp | 17 +++++++++++++++--
.../src/parser/CParseHandlerMDRelation.cpp | 20 ++++++++++++++++++--
1078 files changed, 1947 insertions(+), 1900 deletions(-)
diff --git a/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp b/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
index 2bce1f4eba..9807905e8a 100644
--- a/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
+++ b/src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp
@@ -629,7 +629,7 @@ CTranslatorRelcacheToDXL::RetrieveRel(CMemoryPool *mp, CMDAccessor *md_accessor,
mdcol_array, distr_cols, distr_op_families, part_keys, part_types,
partition_oids, convert_hash_to_random, keyset_array,
md_index_info_array, check_constraint_mdids, mdpart_constraint,
- foreign_server_mdid);
+ foreign_server_mdid, rel->rd_rel->reltuples);
return md_rel;
}
diff --git a/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTables.mdp b/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTables.mdp
index f8ed1e30e3..33196849dd 100644
--- a/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTables.mdp
+++ b/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTables.mdp
@@ -945,7 +945,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.524298.1.0" Name="t1" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.524298.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.524298.1.0" Name="t1" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -972,7 +972,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.524301.1.0" Name="t2" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.524301.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.524301.1.0" Name="t2" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -999,7 +999,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.524304.1.0" Name="t3" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.524304.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.524304.1.0" Name="t3" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTablesNoMotion.mdp b/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTablesNoMotion.mdp
index 8ea1372840..72a1435f90 100644
--- a/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTablesNoMotion.mdp
+++ b/src/backend/gporca/data/dxl/minidump/3WayJoinOnMultiDistributionColumnsTablesNoMotion.mdp
@@ -941,7 +941,7 @@ t1.a = t2.a and t2.a = t3.a and t1.b = t3.b and t2.b = t3.b;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.524298.1.0" Name="t1" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.524298.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.524298.1.0" Name="t1" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -968,7 +968,7 @@ t1.a = t2.a and t2.a = t3.a and t1.b = t3.b and t2.b = t3.b;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.524301.1.0" Name="t2" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.524301.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.524301.1.0" Name="t2" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -995,7 +995,7 @@ t1.a = t2.a and t2.a = t3.a and t1.b = t3.b and t2.b = t3.b;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.524304.1.0" Name="t3" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.524304.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.524304.1.0" Name="t3" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/3WayJoinUsingOperatorsOfNonDefaultOpfamily.mdp b/src/backend/gporca/data/dxl/minidump/3WayJoinUsingOperatorsOfNonDefaultOpfamily.mdp
index 596dc12824..10fd3c304a 100644
--- a/src/backend/gporca/data/dxl/minidump/3WayJoinUsingOperatorsOfNonDefaultOpfamily.mdp
+++ b/src/backend/gporca/data/dxl/minidump/3WayJoinUsingOperatorsOfNonDefaultOpfamily.mdp
@@ -118,7 +118,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.16399.1.0" Name="atab_old_hash" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16399.1.0" Name="atab_old_hash" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16399.1.0" Name="atab_old_hash" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -161,7 +161,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16402.1.0" Name="btab_old_hash" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16402.1.0" Name="btab_old_hash" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -271,7 +271,7 @@
</dxl:Type>
<dxl:ColumnStatistics Mdid="1.106691.1.0.0" Name="c" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.106691.1.0" Name="ctab_old_hash" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.106691.1.0" Name="ctab_old_hash" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106691.1.0" Name="ctab_old_hash" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/4WayJoinInferredPredsRemovedWith2Motion.mdp b/src/backend/gporca/data/dxl/minidump/4WayJoinInferredPredsRemovedWith2Motion.mdp
index 50fb22c00b..dc12842f03 100644
--- a/src/backend/gporca/data/dxl/minidump/4WayJoinInferredPredsRemovedWith2Motion.mdp
+++ b/src/backend/gporca/data/dxl/minidump/4WayJoinInferredPredsRemovedWith2Motion.mdp
@@ -55,7 +55,7 @@ explain select * from cs catalog_sales, it item, sr store_returns, ss store_sale
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.81923.1.0" Name="ss" Rows="270.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.81923.1.0" Name="ss" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.81923.1.0" Name="ss" IsTemporary="false" Rows="270.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="ss_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -82,7 +82,7 @@ explain select * from cs catalog_sales, it item, sr store_returns, ss store_sale
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.81920.1.0" Name="cs" Rows="13000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.81920.1.0" Name="cs" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.81920.1.0" Name="cs" IsTemporary="false" Rows="13000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="cs_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -109,7 +109,7 @@ explain select * from cs catalog_sales, it item, sr store_returns, ss store_sale
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.81926.1.0" Name="it" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.81926.1.0" Name="it" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.81926.1.0" Name="it" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -134,7 +134,7 @@ explain select * from cs catalog_sales, it item, sr store_returns, ss store_sale
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.81929.1.0" Name="sr" Rows="10200.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.81929.1.0" Name="sr" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.81929.1.0" Name="sr" IsTemporary="false" Rows="10200.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="sr_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AddEqualityPredicates.mdp b/src/backend/gporca/data/dxl/minidump/AddEqualityPredicates.mdp
index b9db8ab40e..51be3cdf36 100644
--- a/src/backend/gporca/data/dxl/minidump/AddEqualityPredicates.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AddEqualityPredicates.mdp
@@ -116,7 +116,7 @@
<dxl:ColumnStatistics Mdid="1.64035.1.1.1" Name="b" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.64035.1.1.0" Name="a" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.64035.1.1" Name="r" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.64035.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.64035.1.1" Name="r" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AddPredsInSubqueries.mdp b/src/backend/gporca/data/dxl/minidump/AddPredsInSubqueries.mdp
index e113a5f956..550a01f32e 100644
--- a/src/backend/gporca/data/dxl/minidump/AddPredsInSubqueries.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AddPredsInSubqueries.mdp
@@ -32,7 +32,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.114694.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.114694.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.114694.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -61,7 +61,7 @@
</dxl:Relation>
<dxl:ColumnStatistics Mdid="1.114694.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.114697.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.114697.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.114697.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-1.mdp b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-1.mdp
index 474a8f2f25..510cabb423 100644
--- a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-1.mdp
@@ -161,7 +161,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16464.1.0" Name="t2_random" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16464.1.0" Name="t2_random" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
+ <dxl:Relation Mdid="6.16464.1.0" Name="t2_random" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-2.mdp b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-2.mdp
index 7dde0d3c53..0816f1c69b 100644
--- a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-2.mdp
@@ -59,7 +59,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="t1_random" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="t1_random" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
+ <dxl:Relation Mdid="6.16391.1.0" Name="t1_random" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-3.mdp b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-3.mdp
index 19dd5ff716..aef3334a12 100644
--- a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-3.mdp
@@ -169,7 +169,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16467.1.0" Name="part_random_t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16467.1.0" Name="part_random_t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16467.1.0" Name="part_random_t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-4.mdp b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-4.mdp
index 20ab01b030..53eed1641f 100644
--- a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-4.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-4.mdp
@@ -186,7 +186,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16467.1.0" Name="part_random_t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16467.1.0" Name="part_random_t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16467.1.0" Name="part_random_t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-5.mdp b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-5.mdp
index 8d934841ef..8db1a491d5 100644
--- a/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-5.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AddRedistributeBeforeInsert-5.mdp
@@ -167,7 +167,7 @@
</dxl:Relation>
<dxl:ColumnStatistics Mdid="1.16511.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.16511.1.0" Name="part1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16511.1.0" Name="part1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r" ConvertHashToRandom="true">
+ <dxl:Relation Mdid="6.16511.1.0" Name="part1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r" ConvertHashToRandom="true">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Agg-Limit.mdp b/src/backend/gporca/data/dxl/minidump/Agg-Limit.mdp
index 8c77e4316c..3c98ec8894 100644
--- a/src/backend/gporca/data/dxl/minidump/Agg-Limit.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Agg-Limit.mdp
@@ -176,7 +176,7 @@
<dxl:ColumnStatistics Mdid="1.32779.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.32779.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.32779.1.1" Name="x" Rows="10.000000"/>
- <dxl:Relation Mdid="6.32779.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32779.1.1" Name="x" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Agg-NonSplittable.mdp b/src/backend/gporca/data/dxl/minidump/Agg-NonSplittable.mdp
index eb671914cd..11d28b57a5 100644
--- a/src/backend/gporca/data/dxl/minidump/Agg-NonSplittable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Agg-NonSplittable.mdp
@@ -145,7 +145,7 @@
<dxl:ColumnStatistics Mdid="1.109045.1.1.7" Name="thousand" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.109045.1.1.6" Name="hundred" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.109045.1.1" Name="onek" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.109045.1.1" Name="onek" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
+ <dxl:Relation Mdid="6.109045.1.1" Name="onek" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
<dxl:Columns>
<dxl:Column Name="unique1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AggWithSubqArgs.mdp b/src/backend/gporca/data/dxl/minidump/AggWithSubqArgs.mdp
index 690374ef53..cd11e82aa7 100644
--- a/src/backend/gporca/data/dxl/minidump/AggWithSubqArgs.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AggWithSubqArgs.mdp
@@ -135,7 +135,7 @@
<dxl:ColumnStatistics Mdid="1.1018227.1.1.7" Name="tableoid" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1018227.1.1.6" Name="cmax" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.1018204.1.1" Name="a" Rows="1.000000"/>
- <dxl:Relation Mdid="6.1018204.1.1" Name="a" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.1018204.1.1" Name="a" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="a1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -186,7 +186,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1018227.1.1" Name="b" Rows="1.000000"/>
- <dxl:Relation Mdid="6.1018227.1.1" Name="b" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.1018227.1.1" Name="b" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="b1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AggWithVolatileFunc.mdp b/src/backend/gporca/data/dxl/minidump/AggWithVolatileFunc.mdp
index 64bfee7587..f84beb4776 100644
--- a/src/backend/gporca/data/dxl/minidump/AggWithVolatileFunc.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AggWithVolatileFunc.mdp
@@ -202,7 +202,7 @@
<dxl:Opfamily Mdid="0.7027.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.215779.1.0" Name="tenk1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.215779.1.0" Name="tenk1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AggonExternalTableNoMotion.mdp b/src/backend/gporca/data/dxl/minidump/AggonExternalTableNoMotion.mdp
index 2dfbb04409..5bef8f5791 100644
--- a/src/backend/gporca/data/dxl/minidump/AggonExternalTableNoMotion.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AggonExternalTableNoMotion.mdp
@@ -141,7 +141,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.196638.1.0" Name="ext_expenses" Rows="1000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.196638.1.0" Name="ext_expenses" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Random" Keys="11,5" ForeignServer="0.91908.1.0">
+ <dxl:Relation Mdid="6.196638.1.0" Name="ext_expenses" IsTemporary="false" Rows="1000000.000000" StorageType="Foreign" DistributionPolicy="Random" Keys="11,5" ForeignServer="0.91908.1.0">
<dxl:Columns>
<dxl:Column Name="name" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AggregateWithSkew.mdp b/src/backend/gporca/data/dxl/minidump/AggregateWithSkew.mdp
index 8274ced66f..3257951a32 100644
--- a/src/backend/gporca/data/dxl/minidump/AggregateWithSkew.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AggregateWithSkew.mdp
@@ -52,7 +52,7 @@ group by b;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="tsk" Rows="2000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" Rows="2000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AggregatesConstraintDeriveNegation.mdp b/src/backend/gporca/data/dxl/minidump/AggregatesConstraintDeriveNegation.mdp
index 801e74033e..a5cbb89123 100644
--- a/src/backend/gporca/data/dxl/minidump/AggregatesConstraintDeriveNegation.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AggregatesConstraintDeriveNegation.mdp
@@ -30,7 +30,7 @@ explain select distinct a from t1 where a is not null and not (a = b);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AllSubqueryWithSubqueryInScalar.mdp b/src/backend/gporca/data/dxl/minidump/AllSubqueryWithSubqueryInScalar.mdp
index 1db1278f65..463df42a5b 100644
--- a/src/backend/gporca/data/dxl/minidump/AllSubqueryWithSubqueryInScalar.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AllSubqueryWithSubqueryInScalar.mdp
@@ -40,7 +40,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.377093.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.377093.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.377093.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -63,7 +63,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.377090.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.377090.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.377090.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnAppendOnlyTable.mdp b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnAppendOnlyTable.mdp
index 0150f64b4d..c720df4db8 100644
--- a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnAppendOnlyTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnAppendOnlyTable.mdp
@@ -569,7 +569,7 @@
</dxl:GPDBScalarOp>
<dxl:RelationExtendedStatistics Mdid="10.90470.1.0" Name="mytable"/>
<dxl:RelationStatistics Mdid="2.90470.1.0" Name="mytable" Rows="1000.000000" RelPages="1" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90470.1.0" Name="mytable" IsTemporary="false" StorageType="AppendOnly, Row-oriented" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.90470.1.0" Name="mytable" IsTemporary="false" Rows="1000.000000" StorageType="AppendOnly, Row-oriented" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedAppendOnlyPartitionedTable.mdp b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedAppendOnlyPartitionedTable.mdp
index 7318822263..555e982cf9 100644
--- a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedAppendOnlyPartitionedTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedAppendOnlyPartitionedTable.mdp
@@ -209,7 +209,7 @@
</dxl:Partitions>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.172033.1.0" Name="mypt" Rows="0.000000" RelPages="3" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.172033.1.0" Name="mypt" IsTemporary="false" StorageType="MixedPartitioned" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,7,1" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.172033.1.0" Name="mypt" IsTemporary="false" Rows="0.000000" StorageType="MixedPartitioned" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,7,1" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp
index a5f1c66637..bc2fc43f5e 100644
--- a/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AllowIndexOnlyScanOnMixedPartitionedTable.mdp
@@ -334,7 +334,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.172061.1.0" Name="mypt" Rows="300.000000" RelPages="7" RelAllVisible="6" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.172061.1.0" Name="mypt" IsTemporary="false" StorageType="MixedPartitioned" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,7,1" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.172061.1.0" Name="mypt" IsTemporary="false" Rows="300.000000" StorageType="MixedPartitioned" AppendOnlyVersion="2" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,7,1" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-1.mdp b/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-1.mdp
index 26443f1dd3..acd1a6f193 100644
--- a/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-1.mdp
@@ -174,7 +174,7 @@
</dxl:GPDBAgg>
<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:RelationStatistics Mdid="2.32780.1.1" Name="x" Rows="500.000000"/>
- <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" Rows="500.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -203,7 +203,7 @@
<dxl:ColumnStatistics Mdid="1.32780.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.32780.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-2.mdp b/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-2.mdp
index b51254e6dc..3cfa36184e 100644
--- a/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AntiSemiJoin2Select-2.mdp
@@ -174,7 +174,7 @@
</dxl:GPDBAgg>
<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:RelationStatistics Mdid="2.32780.1.1" Name="x" Rows="500.000000"/>
- <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" Rows="500.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -203,7 +203,7 @@
<dxl:ColumnStatistics Mdid="1.32780.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.32780.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-1.mdp b/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-1.mdp
index e5aa91f47c..922a591999 100644
--- a/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-1.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="t2" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -83,7 +83,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16394.1.0" Name="t3" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-2.mdp b/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-2.mdp
index f24dd6dc44..34bb3ff09d 100644
--- a/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-2.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="t2" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -83,7 +83,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16394.1.0" Name="t3" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-3.mdp b/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-3.mdp
index 6feeb5d8cd..9943742e93 100644
--- a/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AnySubq-With-NonScalarSubqueryChild-3.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="t2" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -83,7 +83,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16394.1.0" Name="t3" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithAllSubqueryInScalar.mdp b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithAllSubqueryInScalar.mdp
index ae624fc153..c74e40e646 100644
--- a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithAllSubqueryInScalar.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithAllSubqueryInScalar.mdp
@@ -23,7 +23,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.377093.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.377093.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.377093.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -46,7 +46,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.377090.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.377090.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.377090.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -77,7 +77,7 @@
<dxl:InverseOp Mdid="0.96.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.377096.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.377096.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.377096.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp
index 0d8416a64f..f0e39305b4 100644
--- a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithSubqueryInScalar.mdp
@@ -21,7 +21,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.377093.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.377093.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.377093.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -44,7 +44,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.377090.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.377090.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.377090.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileComp.mdp b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileComp.mdp
index 345c777873..3e1d79de15 100644
--- a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileComp.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileComp.mdp
@@ -96,7 +96,7 @@ Physical plan:
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.24583.1.0" Name="t1n" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24583.1.0" Name="t1n" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24583.1.0" Name="t1n" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c1n" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -119,7 +119,7 @@ Physical plan:
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.24580.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24580.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24580.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp
index 044bcd9c13..56dcb66d34 100644
--- a/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AnySubqueryWithVolatileFunc.mdp
@@ -68,7 +68,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.40960.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.40960.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.40960.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -91,7 +91,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.40963.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.40963.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.40963.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCmp-IN-ManyElements.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCmp-IN-ManyElements.mdp
index 1eea6370a3..476ee4f3d5 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCmp-IN-ManyElements.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCmp-IN-ManyElements.mdp
@@ -76,7 +76,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24579.1.0" Name="arrycmp" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24579.1.0" Name="arrycmp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.24579.1.0" Name="arrycmp" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCmpAll-Disjunct.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCmpAll-Disjunct.mdp
index 26abb22891..481e53e7ba 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCmpAll-Disjunct.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCmpAll-Disjunct.mdp
@@ -28,7 +28,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.98308.1.0" Name="t" Rows="400.000000" RelPages="2" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.98308.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.98308.1.0" Name="t" IsTemporary="false" Rows="400.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp
index bc3ba49574..b290148899 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp
@@ -1078,7 +1078,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17165.1.1" Name="lineitem" Rows="60421.000000"/>
- <dxl:Relation Mdid="6.17165.1.1" Name="lineitem" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
+ <dxl:Relation Mdid="6.17165.1.1" Name="lineitem" IsTemporary="false" Rows="60421.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
<dxl:Columns>
<dxl:Column Name="l_orderkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCmpAllEmpty.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCmpAllEmpty.mdp
index 26af0ec3f1..3007785378 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCmpAllEmpty.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCmpAllEmpty.mdp
@@ -131,7 +131,7 @@ explain select 1 from foo where foo.a = all('{}');
</dxl:Type>
<dxl:ColumnStatistics Mdid="1.7420245.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.7420245.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.7420245.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.7420245.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCmpInList.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCmpInList.mdp
index 1cc13683a4..4e87f0c78d 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCmpInList.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCmpInList.mdp
@@ -53,7 +53,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.122880.1.0" Name="foo" Rows="100039.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122880.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122880.1.0" Name="foo" IsTemporary="false" Rows="100039.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCoerceCast.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCoerceCast.mdp
index 7ff0775083..dfd8edfe36 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCoerceCast.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCoerceCast.mdp
@@ -23,7 +23,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.98304.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.98304.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.98304.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCoerceExpr.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCoerceExpr.mdp
index 2b3ab5f7d5..6c7016efab 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCoerceExpr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCoerceExpr.mdp
@@ -20,7 +20,7 @@ explain select * from foo where d in ('a', 'b');
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.97283.1.1" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.97283.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.97283.1.1" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCoerceImplicitCast.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCoerceImplicitCast.mdp
index 80c9535f4e..b95daccee0 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCoerceImplicitCast.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCoerceImplicitCast.mdp
@@ -179,7 +179,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16393.1.0" Name="bar" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16393.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16393.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayRef.mdp b/src/backend/gporca/data/dxl/minidump/ArrayRef.mdp
index a65d829baf..df0880664b 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayRef.mdp
@@ -119,7 +119,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.5060573.1.1" Name="arrtest" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="13,7">
+ <dxl:Relation Mdid="6.5060573.1.1" Name="arrtest" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.1005.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AssertMaxOneRow.mdp b/src/backend/gporca/data/dxl/minidump/AssertMaxOneRow.mdp
index aa3947db62..7eb8819c63 100644
--- a/src/backend/gporca/data/dxl/minidump/AssertMaxOneRow.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AssertMaxOneRow.mdp
@@ -760,7 +760,7 @@ where oid= (select reltoastrelid from pg_class where relname='fsts_alter_set_sto
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.1259.1.1" Name="pg_class" Rows="337.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1259.1.0" Name="pg_class" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
+ <dxl:Relation Mdid="6.1259.1.0" Name="pg_class" IsTemporary="false" Rows="337.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
<dxl:Columns>
<dxl:Column Name="relname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -845,7 +845,7 @@ where oid= (select reltoastrelid from pg_class where relname='fsts_alter_set_sto
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1259.1.1" Name="pg_class" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
+ <dxl:Relation Mdid="6.1259.1.1" Name="pg_class" IsTemporary="false" Rows="337.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
<dxl:Columns>
<dxl:Column Name="relname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -1585,7 +1585,7 @@ where oid= (select reltoastrelid from pg_class where relname='fsts_alter_set_sto
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.93.1.0">
<dxl:Ident ColId="76" ColName="relname" TypeMdid="0.19.1.0"/>
- <dxl:ConstValue TypeMdid="0.19.1.0" Value="ZnN0c19hbHRlcl9zZXRfc3RvcmFnZV90YWJsZQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
+ <dxl:ConstValue TypeMdid="0.19.1.0" Value="ZnN0c19hbHRlcl9zZXRfc3RvcmFnZV90YWJsZQAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions/>
diff --git a/src/backend/gporca/data/dxl/minidump/AssertOneRowWithCorrelation.mdp b/src/backend/gporca/data/dxl/minidump/AssertOneRowWithCorrelation.mdp
index 1d04c57ca7..2ae1ae7a28 100644
--- a/src/backend/gporca/data/dxl/minidump/AssertOneRowWithCorrelation.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AssertOneRowWithCorrelation.mdp
@@ -128,7 +128,7 @@ select (select a from x x2 where x2.a=x1.a) from x x1;
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.24719017.1.1" Name="x" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/AvoidConstraintDerivationForLike.mdp b/src/backend/gporca/data/dxl/minidump/AvoidConstraintDerivationForLike.mdp
index 7a2aa846c0..d9cc1e0bf2 100644
--- a/src/backend/gporca/data/dxl/minidump/AvoidConstraintDerivationForLike.mdp
+++ b/src/backend/gporca/data/dxl/minidump/AvoidConstraintDerivationForLike.mdp
@@ -20,7 +20,7 @@ select * from like_error where some_text LIKE ANY (ARRAY['%text1%']);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="like_error" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="like_error" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16385.1.0" Name="like_error" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="some_text" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp b/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp
index e51b840f13..59958e8c1a 100644
--- a/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp
@@ -222,7 +222,7 @@
<dxl:Opfamily Mdid="0.10009.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.180248.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,6">
+ <dxl:Relation Mdid="6.180248.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,6">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InList.mdp b/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InList.mdp
index 060aea4fda..35d9674873 100644
--- a/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InList.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InList.mdp
@@ -217,7 +217,7 @@ SELECT * FROM test WHERE a in (1, 47);
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.41665.1.1" Name="test" Rows="1000809.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41665.1.1" Name="test" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.41665.1.1" Name="test" IsTemporary="false" Rows="1000809.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InListLarge.mdp b/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InListLarge.mdp
index b78a453910..62e0df6c27 100644
--- a/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InListLarge.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-InListLarge.mdp
@@ -89,7 +89,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.65590.1.0" Name="test" Rows="1000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.65590.1.0" Name="test" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,1">
+ <dxl:Relation Mdid="6.65590.1.0" Name="test" IsTemporary="false" Rows="1000000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-ScalarSubquery.mdp b/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-ScalarSubquery.mdp
index fa69ff29b5..178753c382 100644
--- a/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-ScalarSubquery.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BTreeIndex-Against-ScalarSubquery.mdp
@@ -237,7 +237,7 @@ SELECT * FROM btree_test WHERE a in (select 1);
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.4524666.1.1" Name="btree_test" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.4524666.1.1" Name="btree_test" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.4524666.1.1" Name="btree_test" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Backward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp b/src/backend/gporca/data/dxl/minidump/Backward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp
index d50ca1dac5..1e28a27091 100644
--- a/src/backend/gporca/data/dxl/minidump/Backward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Backward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp
@@ -224,7 +224,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.21292.1.0" Name="test_index_with_sort_directions_on_orderby_limit" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.21292.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.21292.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-MultiCol-Index.mdp b/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-MultiCol-Index.mdp
index a13dee650e..31d8f29cac 100644
--- a/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-MultiCol-Index.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-MultiCol-Index.mdp
@@ -54,7 +54,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" Rows="0.000000" RelPages="1" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-SingleCol-Index.mdp b/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-SingleCol-Index.mdp
index bdda9f55cf..7553990613 100644
--- a/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-SingleCol-Index.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Backward-IndexScan-OrderBy-on-SingleCol-Index.mdp
@@ -54,7 +54,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" Rows="0.000000" RelPages="1" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolAnd.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolAnd.mdp
index 1c5c1f10a5..5d31099f56 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolAnd.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolAnd.mdp
@@ -11,7 +11,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.145159.1.1" Name="r" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.145159.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.145159.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -44,7 +44,7 @@
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.145159.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.145159.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree.mdp
index 675893dd06..f64f3b17d8 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree.mdp
@@ -11,7 +11,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.145159.1.1" Name="r" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.145159.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.145159.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -44,7 +44,7 @@
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.145159.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.145159.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp
index abf62685e9..0da9b81d24 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp
@@ -656,7 +656,7 @@ explain select * from t where c1 = 10 or (c2 = '4' and c5> 100);
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.1632545.1.1" Name="t" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1632545.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.1632545.1.0" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -693,7 +693,7 @@ explain select * from t where c1 = 10 or (c2 = '4' and c5> 100);
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1632545.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.1632545.1.1" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp
index 3c019fa7db..f833ae6c85 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp
@@ -669,7 +669,7 @@ explain select * from t where (c1 = 10 and c5 < 20) or (c2 = '4' and c5> 100);
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.1632545.1.1" Name="t" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1632545.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.1632545.1.0" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -706,7 +706,7 @@ explain select * from t where (c1 = 10 and c5 < 20) or (c2 = '4' and c5> 100);
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1632545.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.1632545.1.1" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp
index a3bbc1b923..d5dbb431a8 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp
@@ -516,7 +516,7 @@ explain select * from t where c2 = 'HEAP' or c4 = 't' or c5 = 'f';
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.21849009.1.1" Name="t" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.21849009.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.21849009.1.0" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -554,7 +554,7 @@ explain select * from t where c2 = 'HEAP' or c4 = 't' or c5 = 'f';
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.21849009.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.21849009.1.1" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOr.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOr.mdp
index de917fff09..f1bd6cf9ba 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOr.mdp
@@ -30,7 +30,7 @@ explain select * from r where a = 1 or b = 2;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.145159.1.1" Name="r" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.145159.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.145159.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -63,7 +63,7 @@ explain select * from r where a = 1 or b = 2;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.145159.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.145159.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndex-Against-InList.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndex-Against-InList.mdp
index 7f5e6f0841..f30ed431fe 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndex-Against-InList.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndex-Against-InList.mdp
@@ -236,7 +236,7 @@ SELECT * FROM bitmap_test WHERE a in (1, 47);
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.4513648.1.1" Name="bitmap_test" Rows="1000809.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.4513648.1.1" Name="bitmap_test" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.4513648.1.1" Name="bitmap_test" IsTemporary="false" Rows="1000809.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndex-ChooseHashJoin.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndex-ChooseHashJoin.mdp
index eb374eac99..fd23ae29bc 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndex-ChooseHashJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndex-ChooseHashJoin.mdp
@@ -3327,7 +3327,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.677683.1.0" Name="bar" Rows="1000809.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.677683.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.677683.1.0" Name="bar" IsTemporary="false" Rows="1000809.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -3354,7 +3354,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.677680.1.0" Name="foo" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.677680.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.677680.1.0" Name="foo" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-SelfJoin.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-SelfJoin.mdp
index 9bfb9395e5..9d29c55d32 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-SelfJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-SelfJoin.mdp
@@ -168,7 +168,7 @@ explain SELECT * FROM t i1, t t2 where t2.c2 = i1.c2;
<dxl:ColumnStatistics Mdid="1.29237539.1.1.5" Name="c6" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.29237539.1.1.4" Name="c5" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.29237539.1.1" Name="t" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.29237539.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.29237539.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -220,7 +220,7 @@ explain SELECT * FROM t i1, t t2 where t2.c2 = i1.c2;
<dxl:Opfamily Mdid="0.3040.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.29237539.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.29237539.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-TwoTables.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-TwoTables.mdp
index 63654d4fa3..b898eeafa9 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-TwoTables.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Basic-TwoTables.mdp
@@ -30,7 +30,7 @@ explain SELECT * FROM s i1, t t2 where t2.c2 = i1.c2;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.29842177.1.1" Name="s" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.29842177.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.29842177.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -251,7 +251,7 @@ explain SELECT * FROM s i1, t t2 where t2.c2 = i1.c2;
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.29842149.1.1" Name="t" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.29842149.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.29842149.1.0" Name="t" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -287,7 +287,7 @@ explain SELECT * FROM s i1, t t2 where t2.c2 = i1.c2;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.29842149.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.29842149.1.1" Name="t" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
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 cf93e13c11..af50b5aff7 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp
@@ -224,7 +224,7 @@ EXPLAIN SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c3 > i1.c3 or t2.c1
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.31264029.1.1" Name="t" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.31264029.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.31264029.1.0" Name="t" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -261,7 +261,7 @@ EXPLAIN SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c3 > i1.c3 or t2.c1
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.31264029.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.31264029.1.1" Name="t" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -351,7 +351,7 @@ EXPLAIN SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c3 > i1.c3 or t2.c1
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.31264057.1.1" Name="s" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.31264057.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.31264057.1.1" Name="s" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-Basic.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-Basic.mdp
index 6dbaf2ba12..d58060e172 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-Basic.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-Basic.mdp
@@ -136,7 +136,7 @@ select * from x, y where x.i > y.j and y.k = 10;
<dxl:ColumnStatistics Mdid="1.52975747.1.1.1" Name="j" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.52975747.1.1.0" Name="i" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.52975721.1.1" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.52975721.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.52975721.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -167,7 +167,7 @@ select * from x, y where x.i > y.j and y.k = 10;
<dxl:ColumnStatistics Mdid="1.52975721.1.1.5" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.52975721.1.1.4" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.52975747.1.1" Name="y" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.52975747.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.52975747.1.0" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -197,7 +197,7 @@ select * from x, y where x.i > y.j and y.k = 10;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.52975747.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.52975747.1.1" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-PartTable.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-PartTable.mdp
index 2f4a0def4e..0f1c133977 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-PartTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-InnerSelect-PartTable.mdp
@@ -147,7 +147,7 @@ select * from x, y where x.i > y.j and y.k = 10;
<dxl:ColumnStatistics Mdid="1.53062540.1.1.7" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.53062540.1.1.6" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.53062514.1.1" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.53062514.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.53062514.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -180,7 +180,7 @@ select * from x, y where x.i > y.j and y.k = 10;
<dxl:ColumnStatistics Mdid="1.53062514.1.1.1" Name="j" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.53062514.1.1.0" Name="i" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.53062540.1.1" Name="y" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.53062540.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.53062540.1.0" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -350,7 +350,7 @@ select * from x, y where x.i > y.j and y.k = 10;
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.53062540.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.53062540.1.1" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-PartTable.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-PartTable.mdp
index 5b667e54e4..1d295cbe32 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-PartTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-PartTable.mdp
@@ -53,7 +53,7 @@ ORDER BY 1 asc ;
<dxl:TraceFlags Value="102001,102002,102003,102024,103046,103045,102115,102116,102117,102119,102144,103027,103033"/>
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
- <dxl:Relation Mdid="6.16166659.1.0" Name="my_tq_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16166659.1.0" Name="my_tq_agg_small" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -232,7 +232,7 @@ ORDER BY 1 asc ;
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16166659.1.1" Name="my_tq_agg_small" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16166659.1.1" Name="my_tq_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16166659.1.1" Name="my_tq_agg_small" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -1489,7 +1489,7 @@ ORDER BY 1 asc ;
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.16166631.1.1" Name="my_tt_agg_small" Rows="420.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16166631.1.1" Name="my_tt_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.16166631.1.1" Name="my_tt_agg_small" IsTemporary="false" Rows="420.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="symbol" Attno="1" Mdid="0.1042.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProject.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProject.mdp
index bb8dde4189..c88edc0305 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProject.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProject.mdp
@@ -584,7 +584,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.32977.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32977.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
+ <dxl:Relation Mdid="6.32977.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="dist_a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1692,7 +1692,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.33001.1.0" Name="bar" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.33001.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.33001.1.0" Name="bar" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_e" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProjectNoFilt.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProjectNoFilt.mdp
index 105e4be159..3007cb61c7 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProjectNoFilt.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLJWithProjectNoFilt.mdp
@@ -86,7 +86,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.33173.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.33173.1.0" Name="bar" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_e" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -661,7 +661,7 @@
<dxl:ColumnStatistics Mdid="1.33149.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.33149.1.0.0" Name="dist_a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.33149.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.33149.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
+ <dxl:Relation Mdid="6.33149.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="dist_a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProject.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProject.mdp
index 5d395eb93a..e16e7eeb15 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProject.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProject.mdp
@@ -580,7 +580,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32922.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32922.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
+ <dxl:Relation Mdid="6.32922.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="dist_a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -861,7 +861,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32946.1.0" Name="bar" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32946.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.32946.1.0" Name="bar" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_e" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp
index cc9fdcea66..e4e99edefa 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexNLOJWithProjectNonPart.mdp
@@ -183,7 +183,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.33101.1.0" Name="t2" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.33101.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.33101.1.0" Name="t2" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_e" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -255,7 +255,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.33098.1.0" Name="t1" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.33098.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.33098.1.0" Name="t1" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp
index 202b1a3240..950caa3356 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp
@@ -398,7 +398,7 @@ inferred from the second operator (c4 = 'f')
<dxl:InverseOp Mdid="0.91.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.22226519.1.1" Name="t" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.22226519.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.22226519.1.0" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -434,7 +434,7 @@ inferred from the second operator (c4 = 'f')
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.22226519.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.22226519.1.1" Name="t" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexScan.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexScan.mdp
index fd281aa4ec..31c5717948 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexScan.mdp
@@ -144,7 +144,7 @@ see sql/BitmapIndexScan.sql
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.24732.1.1" Name="inner_table" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24732.1.1" Name="inner_table" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="5,3">
+ <dxl:Relation Mdid="6.24732.1.1" Name="inner_table" IsTemporary="false" Rows="1.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="5,3">
<dxl:Columns>
<dxl:Column Name="flex_value_set_id" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="9">
</dxl:Column>
@@ -221,7 +221,7 @@ see sql/BitmapIndexScan.sql
<dxl:ColumnStatistics Mdid="1.24702.1.1.3" Name="last_updated_by" Width="0.000000" NullFreq="1.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false"/>
<dxl:ColumnStatistics Mdid="1.24702.1.1.2" Name="last_update_date" Width="4.000000" NullFreq="1.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.24783.1.1" Name="foo" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24783.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24783.1.1" Name="foo" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="fid" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="9">
</dxl:Column>
@@ -284,7 +284,7 @@ see sql/BitmapIndexScan.sql
<dxl:ColumnStatistics Mdid="1.24732.1.1.1" Name="flex_value_id" Width="9.000000" NullFreq="0.000000" NdvRemain="1.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:ColumnStatistics Mdid="1.24732.1.1.0" Name="flex_value_set_id" Width="9.000000" NullFreq="0.000000" NdvRemain="1.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.24702.1.1" Name="outer_table" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24702.1.1" Name="outer_table" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,14">
+ <dxl:Relation Mdid="6.24702.1.1" Name="outer_table" IsTemporary="false" Rows="1.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,14">
<dxl:Columns>
<dxl:Column Name="flex_value_id" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="9">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexScanChooseIndex.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexScanChooseIndex.mdp
index a315ec1c2c..126d217e76 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexScanChooseIndex.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexScanChooseIndex.mdp
@@ -125,7 +125,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.857982.1.0" Name="foo" Rows="100190.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.857982.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.857982.1.0" Name="foo" IsTemporary="false" Rows="100190.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexScanCost.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexScanCost.mdp
index b204ce451f..cd69aa5f75 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexScanCost.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexScanCost.mdp
@@ -211,7 +211,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16434.1.0" Name="ix_test" Rows="15877726.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16434.1.0" Name="ix_test" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="5,3">
+ <dxl:Relation Mdid="6.16434.1.0" Name="ix_test" IsTemporary="false" Rows="15877726.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="5,3">
<dxl:Columns>
<dxl:Column Name="message_id" Attno="1" Mdid="0.25.1.0" Nullable="false" ColWidth="33">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexUnsupportedOperator.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexUnsupportedOperator.mdp
index 4d280c0d90..e3241cdcff 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexUnsupportedOperator.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexUnsupportedOperator.mdp
@@ -37,7 +37,7 @@ undefined for Bitmap Index Scan. ORCA should find a plan transforming
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.32778.1.0" Name="t" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32778.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.32778.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapScan-Hetrogeneous-Partitioned.mdp b/src/backend/gporca/data/dxl/minidump/BitmapScan-Hetrogeneous-Partitioned.mdp
index 0e604600ad..2ba2836db1 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapScan-Hetrogeneous-Partitioned.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapScan-Hetrogeneous-Partitioned.mdp
@@ -190,7 +190,7 @@ explain select * from t where b=3;
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.181434.1.0" Name="t" Rows="1000.000000" RelPages="0" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.181434.1.0" Name="t" IsTemporary="false" StorageType="MixedPartitioned" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="l">
+ <dxl:Relation Mdid="6.181434.1.0" Name="t" IsTemporary="false" Rows="1000.000000" StorageType="MixedPartitioned" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="l">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickIndexWithNoGap.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickIndexWithNoGap.mdp
index aaf634f43d..ba128025ca 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickIndexWithNoGap.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickIndexWithNoGap.mdp
@@ -503,7 +503,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.55591.1.0" Name="t1" Rows="10000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.55591.1.0" Name="t1" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="5,3">
+ <dxl:Relation Mdid="6.55591.1.0" Name="t1" IsTemporary="false" Rows="10000000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="5,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickOnlyHighNDV.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickOnlyHighNDV.mdp
index 159ba192ad..7aeaa70930 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickOnlyHighNDV.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree-PickOnlyHighNDV.mdp
@@ -48,7 +48,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49547.1.0" Name="jazz" Rows="10000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.49547.1.0" Name="jazz" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
+ <dxl:Relation Mdid="6.49547.1.0" Name="jazz" IsTemporary="false" Rows="10000000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
<dxl:Columns>
<dxl:Column Name="hi_ndv" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree.mdp
index 74ce48025c..aa3167d11f 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO-Btree.mdp
@@ -30,7 +30,7 @@ explain select * from indexonao where a = 21;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.22227328.1.1" Name="indexonao" Rows="100000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.22227328.1.0" Name="indexonao" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,1">
+ <dxl:Relation Mdid="6.22227328.1.0" Name="indexonao" IsTemporary="false" Rows="100000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -46,7 +46,7 @@ explain select * from indexonao where a = 21;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.22227328.1.1" Name="indexonao" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,1">
+ <dxl:Relation Mdid="6.22227328.1.1" Name="indexonao" IsTemporary="false" Rows="100000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp
index 034a108320..12fd7c66c2 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp
@@ -205,7 +205,7 @@ explain select * from t_ao where c2 = 'HEAP';
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.21846751.1.1" Name="t_ao" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.21846751.1.0" Name="t_ao" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,7">
+ <dxl:Relation Mdid="6.21846751.1.0" Name="t_ao" IsTemporary="false" Rows="100.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -233,7 +233,7 @@ explain select * from t_ao where c2 = 'HEAP';
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.21846751.1.1" Name="t_ao" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,7">
+ <dxl:Relation Mdid="6.21846751.1.1" Name="t_ao" IsTemporary="false" Rows="100.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AndCondition.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AndCondition.mdp
index ccb6dd9e53..7a9dcdd556 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AndCondition.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AndCondition.mdp
@@ -119,7 +119,7 @@ explain select * from xfoo where j = 1 and k = 2;
<dxl:ColumnStatistics Mdid="1.51565256.1.1.5" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.51565256.1.1.4" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.51565256.1.1" Name="xfoo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.51565256.1.0" Name="xfoo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.51565256.1.0" Name="xfoo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -149,7 +149,7 @@ explain select * from xfoo where j = 1 and k = 2;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.51565256.1.1" Name="xfoo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.51565256.1.1" Name="xfoo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-Basic.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-Basic.mdp
index 35bc21b81c..34c4dccb7b 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-Basic.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-Basic.mdp
@@ -126,7 +126,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.9459819.1.1" Name="foobar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.9459819.1.0" Name="foobar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.9459819.1.0" Name="foobar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="x1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -154,7 +154,7 @@
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.9459819.1.1" Name="foobar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.9459819.1.1" Name="foobar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="x1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ColumnOnRightSide.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ColumnOnRightSide.mdp
index c6d7d7f0de..758ae12544 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ColumnOnRightSide.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ColumnOnRightSide.mdp
@@ -46,7 +46,7 @@ SELECT * FROM my_tq_agg_small tq WHERE 110 >= tq.ets;
<dxl:Opfamily Mdid="0.3027.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.31763855.1.0" Name="my_tq_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.31763855.1.0" Name="my_tq_agg_small" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -78,7 +78,7 @@ SELECT * FROM my_tq_agg_small tq WHERE 110 >= tq.ets;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.31763855.1.1" Name="my_tq_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.31763855.1.1" Name="my_tq_agg_small" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ComplexConjDisj.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ComplexConjDisj.mdp
index 146fc0ff3a..e8c7eaf705 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ComplexConjDisj.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ComplexConjDisj.mdp
@@ -116,7 +116,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.55580.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.55580.1.0" Name="t1" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ConjDisjWithOuterRefs.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ConjDisjWithOuterRefs.mdp
index bb16eb6f11..31017cbb4c 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ConjDisjWithOuterRefs.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-ConjDisjWithOuterRefs.mdp
@@ -148,7 +148,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.55604.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.55604.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.55604.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -178,7 +178,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.55615.1.0" Name="o" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.55615.1.0" Name="o" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.55615.1.0" Name="o" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="o1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp b/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp
index 290e026042..5680e5de82 100644
--- a/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp
@@ -33,7 +33,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32768.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32768.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32768.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -82,7 +82,7 @@
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="t2" Rows="3002427.000000" EmptyRelation="false"/>
<dxl:RelationStatistics Mdid="2.32771.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16388.1.0" Name="t2" IsTemporary="false" Rows="3002427.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -104,7 +104,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.32771.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32771.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityEquals.mdp b/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityEquals.mdp
index 0b58eae7c3..7f8a56da3c 100644
--- a/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityEquals.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityEquals.mdp
@@ -24,7 +24,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.19598.1.0" Name="bpchar_table" Rows="2000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.19598.1.0" Name="bpchar_table" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.19598.1.0" Name="bpchar_table" IsTemporary="false" Rows="2000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.1042.1.0" Nullable="true" ColWidth="3">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityGreaterThan.mdp b/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityGreaterThan.mdp
index cfba5ca706..74e99c1e71 100644
--- a/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityGreaterThan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BpCharMCVCardinalityGreaterThan.mdp
@@ -24,7 +24,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.19598.1.0" Name="bpchar_table" Rows="2000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.19598.1.0" Name="bpchar_table" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.19598.1.0" Name="bpchar_table" IsTemporary="false" Rows="2000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.1042.1.0" Nullable="true" ColWidth="3">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BroadcastSkewedHashjoin.mdp b/src/backend/gporca/data/dxl/minidump/BroadcastSkewedHashjoin.mdp
index fef648145b..3a14badf6e 100644
--- a/src/backend/gporca/data/dxl/minidump/BroadcastSkewedHashjoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BroadcastSkewedHashjoin.mdp
@@ -2462,7 +2462,7 @@ Intent: The join should pick up a Broadcast over Redistribute. The hashjoin is s
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16403.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16403.1.0" Name="foo" IsTemporary="false" Rows="400000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -2487,7 +2487,7 @@ Intent: The join should pick up a Broadcast over Redistribute. The hashjoin is s
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16406.1.0" Name="bar" Rows="20000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16406.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16406.1.0" Name="bar" IsTemporary="false" Rows="20000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp b/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp
index 35a176b382..bd8a505e69 100644
--- a/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BtreeIndexNLJWithProjectNoPart.mdp
@@ -632,7 +632,7 @@
<dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
- <dxl:Relation Mdid="6.33087.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.33087.1.0" Name="t1" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -679,7 +679,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.33090.1.0" Name="t2" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.33090.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.33090.1.0" Name="t2" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_e" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/BtreeIndexNLOJWithProject.mdp b/src/backend/gporca/data/dxl/minidump/BtreeIndexNLOJWithProject.mdp
index 26b64cced3..5209fc0cd2 100644
--- a/src/backend/gporca/data/dxl/minidump/BtreeIndexNLOJWithProject.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BtreeIndexNLOJWithProject.mdp
@@ -189,7 +189,7 @@
<dxl:ColumnStatistics Mdid="1.33112.1.0.0" Name="dist_a" 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" CoercePathType="0"/>
<dxl:RelationStatistics Mdid="2.33112.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.33112.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
+ <dxl:Relation Mdid="6.33112.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="3" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="dist_a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -501,7 +501,7 @@
</dxl:GPDBScalarOp>
<dxl:ColumnStatistics Mdid="1.33112.1.0.3" Name="part_d" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.33136.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.33136.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.33136.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="dist_e" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CSQ-VolatileTVF.mdp b/src/backend/gporca/data/dxl/minidump/CSQ-VolatileTVF.mdp
index d63d19d83c..77ae573f2a 100644
--- a/src/backend/gporca/data/dxl/minidump/CSQ-VolatileTVF.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CSQ-VolatileTVF.mdp
@@ -697,7 +697,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.222867.1.1" Name="x" Rows="10010.000000"/>
- <dxl:Relation Mdid="6.222867.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.222867.1.1" Name="x" IsTemporary="false" Rows="10010.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS-Random.mdp b/src/backend/gporca/data/dxl/minidump/CTAS-Random.mdp
index 0c33417507..561377fe6f 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS-Random.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS-Random.mdp
@@ -123,7 +123,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.57379.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.57379.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57379.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS-With-Global-Local-Agg.mdp b/src/backend/gporca/data/dxl/minidump/CTAS-With-Global-Local-Agg.mdp
index 7646a73d12..681a77bb16 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS-With-Global-Local-Agg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS-With-Global-Local-Agg.mdp
@@ -47,7 +47,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.57363.1.0" Name="test1" Rows="100000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57363.1.0" Name="test1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57363.1.0" Name="test1" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS-random-distributed-from-replicated-distributed-table.mdp b/src/backend/gporca/data/dxl/minidump/CTAS-random-distributed-from-replicated-distributed-table.mdp
index aa56408b52..fe39cb7f74 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS-random-distributed-from-replicated-distributed-table.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS-random-distributed-from-replicated-distributed-table.mdp
@@ -40,7 +40,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.CTAS,0.GPDB">
<dxl:RelationStatistics Mdid="2.24577.1.0" Name="test_replicated" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24577.1.0" Name="test_replicated" IsTemporary="false" StorageType="Heap" DistributionPolicy="Replicated" Keys="8,2">
+ <dxl:Relation Mdid="6.24577.1.0" Name="test_replicated" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Replicated" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS-with-Limit.mdp b/src/backend/gporca/data/dxl/minidump/CTAS-with-Limit.mdp
index 73053a24d6..013242cf91 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS-with-Limit.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS-with-Limit.mdp
@@ -41,7 +41,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.CTAS,0.GPDB">
<dxl:RelationStatistics Mdid="2.57359.1.0" Name="test1" Rows="10000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57359.1.0" Name="test1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57359.1.0" Name="test1" IsTemporary="false" Rows="10000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS-with-hashed-distributed-external-table.mdp b/src/backend/gporca/data/dxl/minidump/CTAS-with-hashed-distributed-external-table.mdp
index d7012ab220..15ae720807 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS-with-hashed-distributed-external-table.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS-with-hashed-distributed-external-table.mdp
@@ -25,7 +25,7 @@ EXPLAIN CREATE TABLE Test AS SELECT * FROM test_gpfdist_ext DISTRIBUTED BY (a);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.CTAS,0.GPDB">
<dxl:RelationStatistics Mdid="2.57353.1.0" Name="test_gpfdist_ext" Rows="1000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57353.1.0" Name="test_gpfdist_ext" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
+ <dxl:Relation Mdid="6.57353.1.0" Name="test_gpfdist_ext" IsTemporary="false" Rows="1000000.000000" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS-with-randomly-distributed-external-table.mdp b/src/backend/gporca/data/dxl/minidump/CTAS-with-randomly-distributed-external-table.mdp
index 41063ff9fe..d29433dbab 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS-with-randomly-distributed-external-table.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS-with-randomly-distributed-external-table.mdp
@@ -22,7 +22,7 @@ EXPLAIN CREATE TABLE Test AS SELECT * FROM test_ext DISTRIBUTED RANDOMLY;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.CTAS,0.GPDB">
<dxl:RelationStatistics Mdid="2.57349.1.0" Name="test_ext" Rows="1000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57349.1.0" Name="test_ext" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
+ <dxl:Relation Mdid="6.57349.1.0" Name="test_ext" IsTemporary="false" Rows="1000000.000000" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS.mdp b/src/backend/gporca/data/dxl/minidump/CTAS.mdp
index 9067154cdd..b3f0a0d5ea 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS.mdp
@@ -123,7 +123,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.57379.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.57379.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57379.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTAS_OrderedAgg_multiple_cols.mdp b/src/backend/gporca/data/dxl/minidump/CTAS_OrderedAgg_multiple_cols.mdp
index 5d2f24f463..917288e160 100644
--- a/src/backend/gporca/data/dxl/minidump/CTAS_OrderedAgg_multiple_cols.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTAS_OrderedAgg_multiple_cols.mdp
@@ -111,7 +111,7 @@ EXPLAIN CREATE TABLE test AS
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.CTAS,0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo1" Rows="100.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo1" IsTemporary="false" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo1" IsTemporary="false" Rows="100.000000" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-1.mdp b/src/backend/gporca/data/dxl/minidump/CTE-1.mdp
index f551dd7cfd..1654d8aac0 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-1.mdp
@@ -461,7 +461,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17028.1.1" Name="r" Rows="100.000000"/>
- <dxl:Relation Mdid="6.17028.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.17028.1.1" Name="r" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-10.mdp b/src/backend/gporca/data/dxl/minidump/CTE-10.mdp
index 0be4ae6073..fee1c9cfa6 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-10.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-10.mdp
@@ -106,7 +106,7 @@
<dxl:ColumnStatistics Mdid="1.1002596.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1002596.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1002596.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.1002596.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1002596.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-11.mdp b/src/backend/gporca/data/dxl/minidump/CTE-11.mdp
index 04e44bd96a..387ea9e579 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-11.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-11.mdp
@@ -106,7 +106,7 @@
<dxl:ColumnStatistics Mdid="1.1002596.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1002596.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1002596.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.1002596.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1002596.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-2.mdp b/src/backend/gporca/data/dxl/minidump/CTE-2.mdp
index 0df843f071..e7d30f8e45 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-2.mdp
@@ -477,7 +477,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17028.1.1" Name="r" Rows="100.000000"/>
- <dxl:Relation Mdid="6.17028.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.17028.1.1" Name="r" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-3.mdp b/src/backend/gporca/data/dxl/minidump/CTE-3.mdp
index bfa78569ec..d30b8cc716 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-3.mdp
@@ -124,7 +124,7 @@
<dxl:ColumnStatistics Mdid="1.25382.1.1.5" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.25382.1.1.4" Name="xmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.25382.1.1" Name="s" Rows="0.000000"/>
- <dxl:Relation Mdid="6.25382.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.25382.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="s1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-4.mdp b/src/backend/gporca/data/dxl/minidump/CTE-4.mdp
index abdf2bf6f3..d140aed61c 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-4.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-4.mdp
@@ -194,7 +194,7 @@
<dxl:ColumnStatistics Mdid="1.1418258.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1418258.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.1418258.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.1418258.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1418258.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-5.mdp b/src/backend/gporca/data/dxl/minidump/CTE-5.mdp
index 63380e18d3..0fe1abc20c 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-5.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-5.mdp
@@ -288,7 +288,7 @@
<dxl:ColumnStatistics Mdid="1.1418258.1.1.7" Name="tableoid" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1418258.1.1.6" Name="cmax" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.1418281.1.1" Name="bar" Rows="10.000000"/>
- <dxl:Relation Mdid="6.1418281.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1418281.1.1" Name="bar" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -317,7 +317,7 @@
<dxl:ColumnStatistics Mdid="1.1418258.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1418258.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.1418258.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.1418258.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1418258.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-6.mdp b/src/backend/gporca/data/dxl/minidump/CTE-6.mdp
index 75ad49868a..888687c4de 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-6.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-6.mdp
@@ -115,7 +115,7 @@
<dxl:ColumnStatistics Mdid="1.824686.1.1.7" Name="tableoid" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.824686.1.1.6" Name="cmax" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.824686.1.1" Name="s" Rows="0.000000"/>
- <dxl:Relation Mdid="6.824686.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.824686.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-7.mdp b/src/backend/gporca/data/dxl/minidump/CTE-7.mdp
index 5ec3222a84..b50f336b96 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-7.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-7.mdp
@@ -274,7 +274,7 @@
<dxl:ColumnStatistics Mdid="1.999569.1.1.3" Name="xmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.999569.1.1.2" Name="ctid" Width="6.000000"/>
<dxl:RelationStatistics Mdid="2.999592.1.1" Name="y" Rows="10.000000"/>
- <dxl:Relation Mdid="6.999592.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.999592.1.1" Name="y" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -303,7 +303,7 @@
<dxl:ColumnStatistics Mdid="1.999569.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.999569.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.999569.1.1" Name="x" Rows="10.000000"/>
- <dxl:Relation Mdid="6.999569.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.999569.1.1" Name="x" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-8.mdp b/src/backend/gporca/data/dxl/minidump/CTE-8.mdp
index 352a1a4180..8bb002220a 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-8.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-8.mdp
@@ -189,7 +189,7 @@
<dxl:ColumnStatistics Mdid="1.242075.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.242075.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.242075.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.242075.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.242075.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-9.mdp b/src/backend/gporca/data/dxl/minidump/CTE-9.mdp
index c27263d09a..df9a54458d 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-9.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-9.mdp
@@ -113,7 +113,7 @@
<dxl:ColumnStatistics Mdid="1.1002596.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1002622.1.1" Name="bar" Rows="10.000000"/>
<dxl:RelationStatistics Mdid="2.1002596.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.1002622.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1002622.1.1" Name="bar" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -137,7 +137,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1002596.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1002596.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-Join-Redistribute-Producer.mdp b/src/backend/gporca/data/dxl/minidump/CTE-Join-Redistribute-Producer.mdp
index 221f8fad2b..41af2a88c1 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-Join-Redistribute-Producer.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-Join-Redistribute-Producer.mdp
@@ -23,7 +23,7 @@ with v as (select * from t1) select * from v v1, v v2 where v1.b=v2.b;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.44875465.1.1" Name="t1" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.44875465.1.1" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.44875465.1.1" Name="t1" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-NestedWithPrunedProducer.mdp b/src/backend/gporca/data/dxl/minidump/CTE-NestedWithPrunedProducer.mdp
index 4c3d0401e8..44ae824992 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-NestedWithPrunedProducer.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-NestedWithPrunedProducer.mdp
@@ -161,7 +161,7 @@
<dxl:RelationExtendedStatistics Mdid="10.206819.1.0" Name="foo"/>
<dxl:ColumnStatistics Mdid="1.206819.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.206819.1.0" Name="foo" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.206819.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.206819.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-NoPushProperties.mdp b/src/backend/gporca/data/dxl/minidump/CTE-NoPushProperties.mdp
index f2e8f0ff4b..ae65e85b5c 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-NoPushProperties.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-NoPushProperties.mdp
@@ -26,7 +26,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="1000.000000" RelPages="0" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp b/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp
index 683d74d97b..e2449256d3 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp
@@ -144,7 +144,7 @@
<dxl:ColumnStatistics Mdid="1.250652.1.1.3" Name="y" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.250652.1.1.2" Name="x" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.250652.1.1" Name="r6756" Rows="0.000000"/>
- <dxl:Relation Mdid="6.250652.1.1" Name="r6756" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.250652.1.1" Name="r6756" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-Preds1.mdp b/src/backend/gporca/data/dxl/minidump/CTE-Preds1.mdp
index ea1bdeee37..7b08025eaf 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-Preds1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-Preds1.mdp
@@ -121,7 +121,7 @@
<dxl:ColumnStatistics Mdid="1.32780.1.1.3" Name="xmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.32780.1.1.2" Name="ctid" Width="6.000000"/>
<dxl:RelationStatistics Mdid="2.32780.1.1" Name="x" Rows="0.000000"/>
- <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-Preds2.mdp b/src/backend/gporca/data/dxl/minidump/CTE-Preds2.mdp
index 3aa989b9cd..d71746432e 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-Preds2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-Preds2.mdp
@@ -128,7 +128,7 @@
<dxl:ColumnStatistics Mdid="1.32780.1.1.3" Name="xmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.32780.1.1.2" Name="ctid" Width="6.000000"/>
<dxl:RelationStatistics Mdid="2.32780.1.1" Name="x" Rows="0.000000"/>
- <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-PushProperties.mdp b/src/backend/gporca/data/dxl/minidump/CTE-PushProperties.mdp
index 1e7043cdb9..d71903d6ee 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-PushProperties.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-PushProperties.mdp
@@ -26,7 +26,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="1000.000000" RelPages="0" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-volatile.mdp b/src/backend/gporca/data/dxl/minidump/CTE-volatile.mdp
index 17bfea72aa..e76ba9c5e9 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-volatile.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-volatile.mdp
@@ -329,7 +329,7 @@
<dxl:ColumnStatistics Mdid="1.17121.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17121.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.17121.1.1" Name="r" Rows="100.000000"/>
- <dxl:Relation Mdid="6.17121.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17121.1.1" Name="r" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-with-random-filter.mdp b/src/backend/gporca/data/dxl/minidump/CTE-with-random-filter.mdp
index 90a92d7ea8..3878200d0f 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-with-random-filter.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-with-random-filter.mdp
@@ -262,7 +262,7 @@ explain with t as (select * from foo) select count(*) from t where random() < 0.
<dxl:ColumnStatistics Mdid="1.729127.1.1.7" Name="gp_segment_id" Width="4.000000" NullFreq="0.000000" NdvRemain="3.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:ColumnStatistics Mdid="1.729127.1.1.6" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="1.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.729127.1.1" Name="foo" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.729127.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.729127.1.1" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE15HAReplicated.mdp b/src/backend/gporca/data/dxl/minidump/CTE15HAReplicated.mdp
index 0ee9a18a31..d21a895d05 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE15HAReplicated.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE15HAReplicated.mdp
@@ -177,7 +177,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16399.1.0" Name="r" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16399.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
+ <dxl:Relation Mdid="6.16399.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -204,7 +204,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16396.1.0" Name="d" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16396.1.0" Name="d" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16396.1.0" Name="d" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE15Replicated.mdp b/src/backend/gporca/data/dxl/minidump/CTE15Replicated.mdp
index d70a6f10f7..044a45fc71 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE15Replicated.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE15Replicated.mdp
@@ -178,7 +178,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.49179.1.0" Name="r" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49179.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
+ <dxl:Relation Mdid="6.49179.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -205,7 +205,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.49176.1.0" Name="d" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49176.1.0" Name="d" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.49176.1.0" Name="d" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE2HAReplicated.mdp b/src/backend/gporca/data/dxl/minidump/CTE2HAReplicated.mdp
index 983ca42ea6..b7f438ec67 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE2HAReplicated.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE2HAReplicated.mdp
@@ -186,7 +186,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16402.1.0" Name="d" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16402.1.0" Name="d" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16402.1.0" Name="d" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -216,7 +216,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16405.1.0" Name="r" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16405.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
+ <dxl:Relation Mdid="6.16405.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTE2Replicated.mdp b/src/backend/gporca/data/dxl/minidump/CTE2Replicated.mdp
index 0e31182235..136a5e3baf 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE2Replicated.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE2Replicated.mdp
@@ -119,7 +119,7 @@
<dxl:SumAgg Mdid="0.2108.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.49185.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
+ <dxl:Relation Mdid="6.49185.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Replicated" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -212,7 +212,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.49182.1.0" Name="d" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49182.1.0" Name="d" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.49182.1.0" Name="d" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTEConstraintDeriveNegation.mdp b/src/backend/gporca/data/dxl/minidump/CTEConstraintDeriveNegation.mdp
index d45e15581d..61ca1a64a9 100644
--- a/src/backend/gporca/data/dxl/minidump/CTEConstraintDeriveNegation.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTEConstraintDeriveNegation.mdp
@@ -132,7 +132,7 @@ pivotal=# explain with negcte as (select distinct a from t1 where a is not null
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16416.1.0" Name="t1" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16416.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16416.1.0" Name="t1" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTEMergeGroupsCircularDeriveStats.mdp b/src/backend/gporca/data/dxl/minidump/CTEMergeGroupsCircularDeriveStats.mdp
index 09139300af..b005051efb 100644
--- a/src/backend/gporca/data/dxl/minidump/CTEMergeGroupsCircularDeriveStats.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTEMergeGroupsCircularDeriveStats.mdp
@@ -22,7 +22,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24579.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24579.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24579.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -47,7 +47,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.24582.1.0" Name="t2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24582.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24582.1.0" Name="t2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTEMisAlignedProducerConsumer.mdp b/src/backend/gporca/data/dxl/minidump/CTEMisAlignedProducerConsumer.mdp
index 3001d6089e..b70c421737 100644
--- a/src/backend/gporca/data/dxl/minidump/CTEMisAlignedProducerConsumer.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTEMisAlignedProducerConsumer.mdp
@@ -20,7 +20,7 @@ SELECT 1 FROM (SELECT * FROM foo) t2 FULL JOIN (SELECT 1) t1 ON true;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTEWithMergedGroup.mdp b/src/backend/gporca/data/dxl/minidump/CTEWithMergedGroup.mdp
index 1c9dd288da..06f9712ccb 100644
--- a/src/backend/gporca/data/dxl/minidump/CTEWithMergedGroup.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTEWithMergedGroup.mdp
@@ -173,7 +173,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16425.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16425.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16425.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -200,7 +200,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16428.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16428.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16428.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="d" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CTEinlining.mdp b/src/backend/gporca/data/dxl/minidump/CTEinlining.mdp
index b98a8eb418..57a35d742e 100644
--- a/src/backend/gporca/data/dxl/minidump/CTEinlining.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTEinlining.mdp
@@ -129,7 +129,7 @@ explain with v as (select x,y from bar) select v1.x from v v1, v v2 where v1.x =
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.221152.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.221152.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.221152.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="x" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CannotCollapseCascadeProjects.mdp b/src/backend/gporca/data/dxl/minidump/CannotCollapseCascadeProjects.mdp
index f8d92dbee5..e10d70f52b 100644
--- a/src/backend/gporca/data/dxl/minidump/CannotCollapseCascadeProjects.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CannotCollapseCascadeProjects.mdp
@@ -246,7 +246,7 @@
<dxl:ColumnStatistics Mdid="1.262336.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.262336.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="100.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.262336.1.1" Name="foo" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.262336.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.262336.1.1" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp b/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp
index 503b2fe718..4f8759122b 100644
--- a/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp
@@ -1707,7 +1707,7 @@ The SQL along with the DDL are in TINC repo. In the aggregates directory under q
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.15754823.1.1" Name="s_co_plew_persl" Rows="24569200.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.15754823.1.1" Name="s_co_plew_persl" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="14,12">
+ <dxl:Relation Mdid="6.15754823.1.1" Name="s_co_plew_persl" IsTemporary="false" Rows="24569200.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="14,12">
<dxl:Columns>
<dxl:Column Name="dtime" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="20">
</dxl:Column>
@@ -3261,7 +3261,7 @@ The SQL along with the DDL are in TINC repo. In the aggregates directory under q
<dxl:ResultType Mdid="0.16.1.0"/>
</dxl:GPDBFunc>
<dxl:RelationStatistics Mdid="2.15754853.1.1" Name="s_kst_ps_elem_vgz" Rows="118963.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.15754853.1.1" Name="s_kst_ps_elem_vgz" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="24,22">
+ <dxl:Relation Mdid="6.15754853.1.1" Name="s_kst_ps_elem_vgz" IsTemporary="false" Rows="118963.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="24,22">
<dxl:Columns>
<dxl:Column Name="element_id" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="20">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp b/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp
index cc679ea391..785015574e 100644
--- a/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp
@@ -17,7 +17,7 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.25472.1.1" Name="store_sales" Rows="737331968.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.25472.1.1" Name="store_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9;29,23">
+ <dxl:Relation Mdid="6.25472.1.1" Name="store_sales" IsTemporary="false" Rows="737331968.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9;29,23">
<dxl:Columns>
<dxl:Column Name="ss_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -5608,7 +5608,7 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.25160.1.1" Name="item" Rows="63889.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.25160.1.0" Name="item" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
+ <dxl:Relation Mdid="6.25160.1.0" Name="item" IsTemporary="false" Rows="63889.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
<dxl:Columns>
<dxl:Column Name="i_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -5674,7 +5674,7 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.25160.1.1" Name="item" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
+ <dxl:Relation Mdid="6.25160.1.1" Name="item" IsTemporary="false" Rows="63889.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
<dxl:Columns>
<dxl:Column Name="i_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols-Order.mdp b/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols-Order.mdp
index 5eecb92a93..860ff81757 100644
--- a/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols-Order.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols-Order.mdp
@@ -162,7 +162,7 @@ select a1, a2 from foo_a UNION ALL (select x1, x2 FROM (select b3, b2, b1 from f
<dxl:ColumnStatistics Mdid="1.17297865.1.1.5" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.17297865.1.1.4" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.17297839.1.1" Name="foo_a" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17297839.1.1" Name="foo_a" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17297839.1.1" Name="foo_a" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -281,7 +281,7 @@ select a1, a2 from foo_a UNION ALL (select x1, x2 FROM (select b3, b2, b1 from f
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17297865.1.1" Name="foo_b" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17297865.1.1" Name="foo_b" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17297865.1.1" Name="foo_b" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="b1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -346,7 +346,7 @@ select a1, a2 from foo_a UNION ALL (select x1, x2 FROM (select b3, b2, b1 from f
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17297891.1.1" Name="foo_c" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17297891.1.1" Name="foo_c" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17297891.1.1" Name="foo_c" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols.mdp b/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols.mdp
index 859cae23fb..573a55f352 100644
--- a/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Differing-Cols.mdp
@@ -162,7 +162,7 @@ select a1, a2 from foo_a UNION ALL (select x1, x2 FROM (select b1, b2, b3 from f
<dxl:ColumnStatistics Mdid="1.17297865.1.1.5" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.17297865.1.1.4" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.17297839.1.1" Name="foo_a" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17297839.1.1" Name="foo_a" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17297839.1.1" Name="foo_a" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -281,7 +281,7 @@ select a1, a2 from foo_a UNION ALL (select x1, x2 FROM (select b1, b2, b3 from f
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17297865.1.1" Name="foo_b" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17297865.1.1" Name="foo_b" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17297865.1.1" Name="foo_b" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="b1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -346,7 +346,7 @@ select a1, a2 from foo_a UNION ALL (select x1, x2 FROM (select b1, b2, b3 from f
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17297891.1.1" Name="foo_c" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17297891.1.1" Name="foo_c" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17297891.1.1" Name="foo_c" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Same-Cols-Order.mdp b/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Same-Cols-Order.mdp
index 8408645b51..bfcf2f1809 100644
--- a/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Same-Cols-Order.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Cascaded-UnionAll-Same-Cols-Order.mdp
@@ -185,7 +185,7 @@ select a from foo_hashed union all select b from foo_hashed union all select 1 f
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.17297760.1.1" Name="foo_hashed" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17297760.1.1" Name="foo_hashed" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17297760.1.1" Name="foo_hashed" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CastOnSubquery.mdp b/src/backend/gporca/data/dxl/minidump/CastOnSubquery.mdp
index 1956d13c1a..d9fb65d4dc 100644
--- a/src/backend/gporca/data/dxl/minidump/CastOnSubquery.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CastOnSubquery.mdp
@@ -339,7 +339,7 @@
<dxl:ColumnStatistics Mdid="1.217301.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.217327.1.1" Name="bar" Rows="10.000000"/>
<dxl:RelationStatistics Mdid="2.217301.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.217327.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.217327.1.1" Name="bar" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -363,7 +363,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.217301.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.217301.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CastedInClauseWithMCV.mdp b/src/backend/gporca/data/dxl/minidump/CastedInClauseWithMCV.mdp
index 3a526234a9..0d5e39c336 100644
--- a/src/backend/gporca/data/dxl/minidump/CastedInClauseWithMCV.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CastedInClauseWithMCV.mdp
@@ -24,7 +24,7 @@ explain select * from n1 where a in (1, (select count(*) from n1));
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="n1" Rows="20000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="n1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16391.1.0" Name="n1" IsTemporary="false" Rows="20000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="6">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CastedScalarIf-On-Index-Key.mdp b/src/backend/gporca/data/dxl/minidump/CastedScalarIf-On-Index-Key.mdp
index f8d5f53163..c4dc3c3f1f 100644
--- a/src/backend/gporca/data/dxl/minidump/CastedScalarIf-On-Index-Key.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CastedScalarIf-On-Index-Key.mdp
@@ -24,7 +24,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49155.1.0" Name="pt" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49155.1.0" Name="pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="5,6,4" PartitionColumns="3" PartitionTypes="r">
+ <dxl:Relation Mdid="6.49155.1.0" Name="pt" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="5,6,4" PartitionColumns="3" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Char-Cardinality.mdp b/src/backend/gporca/data/dxl/minidump/Char-Cardinality.mdp
index ce35602774..9ff99fdcd5 100644
--- a/src/backend/gporca/data/dxl/minidump/Char-Cardinality.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Char-Cardinality.mdp
@@ -25,7 +25,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="t" Rows="101.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16388.1.0" Name="t" IsTemporary="false" Rows="101.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.18.1.0" Nullable="true" ColWidth="1">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CheckAsUser.mdp b/src/backend/gporca/data/dxl/minidump/CheckAsUser.mdp
index c66a6fd83e..5f0753c273 100644
--- a/src/backend/gporca/data/dxl/minidump/CheckAsUser.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CheckAsUser.mdp
@@ -115,7 +115,7 @@
<dxl:ColumnStatistics Mdid="1.108944.1.1.1" Name="b" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.108944.1.1.0" Name="a" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.108944.1.1" Name="r" Rows="0.000000"/>
- <dxl:Relation Mdid="6.108944.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.108944.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Citext-Cardinality.mdp b/src/backend/gporca/data/dxl/minidump/Citext-Cardinality.mdp
index f30541875a..5d770fa3cc 100644
--- a/src/backend/gporca/data/dxl/minidump/Citext-Cardinality.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Citext-Cardinality.mdp
@@ -41,7 +41,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.49152.1.0" Name="foo" Rows="991.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.49152.1.0" Name="foo" IsTemporary="false" Rows="991.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Coalesce-With-Subquery.mdp b/src/backend/gporca/data/dxl/minidump/Coalesce-With-Subquery.mdp
index f321f844a8..35bf1b6f5e 100644
--- a/src/backend/gporca/data/dxl/minidump/Coalesce-With-Subquery.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Coalesce-With-Subquery.mdp
@@ -396,7 +396,7 @@
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1260.1.1" Name="pg_authid" Rows="1.000000"/>
<dxl:RelationStatistics Mdid="2.1262.1.1" Name="pg_database" Rows="3.000000"/>
- <dxl:Relation Mdid="6.1260.1.1" Name="pg_authid" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="24,17">
+ <dxl:Relation Mdid="6.1260.1.1" Name="pg_authid" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="24,17">
<dxl:Columns>
<dxl:Column Name="rolname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -452,7 +452,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1262.1.1" Name="pg_database" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="18,11">
+ <dxl:Relation Mdid="6.1262.1.1" Name="pg_database" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="18,11">
<dxl:Columns>
<dxl:Column Name="datname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -546,7 +546,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1213.1.1" Name="pg_tablespace" Rows="2.000000"/>
- <dxl:Relation Mdid="6.1213.1.1" Name="pg_tablespace" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="14,7">
+ <dxl:Relation Mdid="6.1213.1.1" Name="pg_tablespace" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="14,7">
<dxl:Columns>
<dxl:Column Name="spcname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -1158,7 +1158,7 @@
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.93.1.0">
<dxl:Ident ColId="69" ColName="datname" TypeMdid="0.19.1.0"/>
- <dxl:ConstValue TypeMdid="0.19.1.0" Value="dGVtcGxhdGUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
+ <dxl:ConstValue TypeMdid="0.19.1.0" Value="dGVtcGxhdGUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions/>
diff --git a/src/backend/gporca/data/dxl/minidump/CoerceToDomain.mdp b/src/backend/gporca/data/dxl/minidump/CoerceToDomain.mdp
index cfccfc96c5..0ee4e554dd 100644
--- a/src/backend/gporca/data/dxl/minidump/CoerceToDomain.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoerceToDomain.mdp
@@ -144,7 +144,7 @@ SELECT * FROM information_schema.tables;
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.6040.1.1" Name="pg_exttable" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="16,10">
+ <dxl:Relation Mdid="6.6040.1.1" Name="pg_exttable" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="16,10">
<dxl:Columns>
<dxl:Column Name="reloid" Attno="1" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -403,7 +403,7 @@ SELECT * FROM information_schema.tables;
<dxl:ColumnStatistics Mdid="1.6040.1.1.5" Name="rejectlimit" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.6040.1.1.4" Name="command" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.2615.1.1" Name="pg_namespace" Rows="7.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2615.1.0" Name="pg_namespace" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="10,3">
+ <dxl:Relation Mdid="6.2615.1.0" Name="pg_namespace" IsTemporary="false" Rows="7.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="10,3">
<dxl:Columns>
<dxl:Column Name="nspname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -441,7 +441,7 @@ SELECT * FROM information_schema.tables;
<dxl:OpFunc Mdid="0.858.1.0"/>
<dxl:InverseOp Mdid="0.1208.1.0"/>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.2615.1.1" Name="pg_namespace" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="10,3">
+ <dxl:Relation Mdid="6.2615.1.1" Name="pg_namespace" IsTemporary="false" Rows="7.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="10,3">
<dxl:Columns>
<dxl:Column Name="nspname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -930,7 +930,7 @@ SELECT * FROM information_schema.tables;
<dxl:ColumnStatistics Mdid="1.6040.1.1.1" Name="location" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.6040.1.1.0" Name="reloid" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1259.1.1" Name="pg_class" Rows="337.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1259.1.0" Name="pg_class" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
+ <dxl:Relation Mdid="6.1259.1.0" Name="pg_class" IsTemporary="false" Rows="337.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
<dxl:Columns>
<dxl:Column Name="relname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -1015,7 +1015,7 @@ SELECT * FROM information_schema.tables;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1259.1.1" Name="pg_class" IsTemporary="false" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
+ <dxl:Relation Mdid="6.1259.1.1" Name="pg_class" IsTemporary="false" Rows="337.000000" StorageType="Heap" DistributionPolicy="MasterOnly" Keys="37,30">
<dxl:Columns>
<dxl:Column Name="relname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -1899,7 +1899,7 @@ SELECT * FROM information_schema.tables;
<dxl:And>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.93.1.0">
<dxl:Ident ColId="55" ColName="nspname" TypeMdid="0.19.1.0"/>
- <dxl:ConstValue TypeMdid="0.19.1.0" Value="cGdfY2F0YWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
+ <dxl:ConstValue TypeMdid="0.19.1.0" Value="cGdfY2F0YWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
</dxl:Comparison>
<dxl:Or>
<dxl:Comparison ComparisonOperator="~~" OperatorMdid="0.1207.1.0">
@@ -1908,7 +1908,7 @@ SELECT * FROM information_schema.tables;
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.93.1.0">
<dxl:Ident ColId="0" ColName="relname" TypeMdid="0.19.1.0"/>
- <dxl:ConstValue TypeMdid="0.19.1.0" Value="Z3BfZ2xvYmFsX3NlcXVlbmNlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
+ <dxl:ConstValue TypeMdid="0.19.1.0" Value="Z3BfZ2xvYmFsX3NlcXVlbmNlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
</dxl:Comparison>
</dxl:Or>
</dxl:And>
@@ -1938,7 +1938,7 @@ SELECT * FROM information_schema.tables;
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.93.1.0">
<dxl:Ident ColId="0" ColName="relname" TypeMdid="0.19.1.0"/>
- <dxl:ConstValue TypeMdid="0.19.1.0" Value="Z3BfZ2xvYmFsX3NlcXVlbmNlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
+ <dxl:ConstValue TypeMdid="0.19.1.0" Value="Z3BfZ2xvYmFsX3NlcXVlbmNlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAA=="/>
</dxl:Comparison>
</dxl:Or>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.92.1.0">
diff --git a/src/backend/gporca/data/dxl/minidump/CoerceViaIO.mdp b/src/backend/gporca/data/dxl/minidump/CoerceViaIO.mdp
index 71f1fd59e7..5165001008 100644
--- a/src/backend/gporca/data/dxl/minidump/CoerceViaIO.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoerceViaIO.mdp
@@ -96,7 +96,7 @@ SELECT * FROM foo WHERE id::text = 'foo';
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.2560411.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.2560411.1.1" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of2.mdp b/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of2.mdp
index 1686c9dcc6..708d1104da 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of2.mdp
@@ -255,7 +255,7 @@ select x.c1 * x.c2, x.c3 from (select a, b, a+b from foo) x(c1,c2,c3);
<dxl:ColumnStatistics Mdid="1.3779640.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.3779640.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="1000.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.3779640.1.1" Name="foo" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3779640.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3779640.1.1" Name="foo" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of3.mdp b/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of3.mdp
index 176c1ec7b9..1b0b4cf813 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseCascadeProjects2of3.mdp
@@ -133,7 +133,7 @@ select y.aProdb * y.aPlusb from (select x.a * x.b, x.aPlusb from (select a, b, a
<dxl:ColumnStatistics Mdid="1.3779640.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.3779640.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="1000.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.3779640.1.1" Name="foo" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3779640.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3779640.1.1" Name="foo" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseGb-MultipleColumn.mdp b/src/backend/gporca/data/dxl/minidump/CollapseGb-MultipleColumn.mdp
index 574276c460..3969dca753 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseGb-MultipleColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseGb-MultipleColumn.mdp
@@ -274,7 +274,7 @@
<dxl:ColumnStatistics Mdid="1.988369.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.988369.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.988369.1.1" Name="foo" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.988369.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.988369.1.1" Name="foo" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseGb-Nested.mdp b/src/backend/gporca/data/dxl/minidump/CollapseGb-Nested.mdp
index 13e1eed40b..af574ed60f 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseGb-Nested.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseGb-Nested.mdp
@@ -274,7 +274,7 @@
<dxl:ColumnStatistics Mdid="1.988369.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.988369.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.988369.1.1" Name="foo" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.988369.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.988369.1.1" Name="foo" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseGb-SingleColumn.mdp b/src/backend/gporca/data/dxl/minidump/CollapseGb-SingleColumn.mdp
index 4d8b82f1e1..425c2afc69 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseGb-SingleColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseGb-SingleColumn.mdp
@@ -274,7 +274,7 @@
<dxl:ColumnStatistics Mdid="1.988369.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.988369.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.988369.1.1" Name="foo" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.988369.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.988369.1.1" Name="foo" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseGb-With-Agg-Funcs.mdp b/src/backend/gporca/data/dxl/minidump/CollapseGb-With-Agg-Funcs.mdp
index a172e7b203..d0ff96c224 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseGb-With-Agg-Funcs.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseGb-With-Agg-Funcs.mdp
@@ -152,7 +152,7 @@
<dxl:ColumnStatistics Mdid="1.17049.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17049.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.17049.1.1" Name="x" Rows="1.000000"/>
- <dxl:Relation Mdid="6.17049.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17049.1.1" Name="x" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseGb-Without-Agg-Funcs.mdp b/src/backend/gporca/data/dxl/minidump/CollapseGb-Without-Agg-Funcs.mdp
index 17a66a685b..064a81a441 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseGb-Without-Agg-Funcs.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseGb-Without-Agg-Funcs.mdp
@@ -140,7 +140,7 @@
<dxl:ColumnStatistics Mdid="1.17049.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17049.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.17049.1.1" Name="x" Rows="1.000000"/>
- <dxl:Relation Mdid="6.17049.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17049.1.1" Name="x" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp b/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp
index 379cc9c0bc..7c9b6f54d5 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseNot.mdp
@@ -19,7 +19,7 @@ SELECT 1 FROM inverse WHERE NOT (cidr <<= ANY(SELECT * FROM inverse));
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.660032.1.1" Name="inverse" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.660032.1.1" Name="inverse" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.660032.1.1" Name="inverse" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="cidr" Attno="1" Mdid="0.869.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning-CTE.mdp b/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning-CTE.mdp
index 0de1d0f6b6..022f1b6bc9 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning-CTE.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning-CTE.mdp
@@ -60,7 +60,7 @@ select * from t2;
<dxl:SumAgg Mdid="0.2108.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.5761553.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.5761553.1.1" Name="t" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="12">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning.mdp b/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning.mdp
index 3fb4bf8f12..f29c37c906 100644
--- a/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CollapseProject-SetReturning.mdp
@@ -53,7 +53,7 @@ from (select regexp_split_to_table(a, ',') as c, b from t) dumb(c, b);
<dxl:SumAgg Mdid="0.2108.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.5761553.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.5761553.1.1" Name="t" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="12">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CompositeTypeRelMdId.mdp b/src/backend/gporca/data/dxl/minidump/CompositeTypeRelMdId.mdp
index a08ca6f62b..560dc04ab9 100644
--- a/src/backend/gporca/data/dxl/minidump/CompositeTypeRelMdId.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CompositeTypeRelMdId.mdp
@@ -140,7 +140,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.26153.1.0" Name="rngfunc2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.26153.1.0" Name="rngfunc2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="rngfuncid" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ComputedGroupByCol.mdp b/src/backend/gporca/data/dxl/minidump/ComputedGroupByCol.mdp
index ef5bc4e91e..1d35493b1b 100644
--- a/src/backend/gporca/data/dxl/minidump/ComputedGroupByCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ComputedGroupByCol.mdp
@@ -237,7 +237,7 @@
<dxl:ColumnStatistics Mdid="1.418911.1.1.7" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.418911.1.1.6" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.418911.1.1" Name="r" Rows="1001718.000000"/>
- <dxl:Relation Mdid="6.418911.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.418911.1.1" Name="r" IsTemporary="false" Rows="1001718.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstScalarFuncNotPushedBelowGather.mdp b/src/backend/gporca/data/dxl/minidump/ConstScalarFuncNotPushedBelowGather.mdp
index 50ade4bb8e..27711a353a 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstScalarFuncNotPushedBelowGather.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstScalarFuncNotPushedBelowGather.mdp
@@ -58,7 +58,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.49173.1.0" Name="t" Rows="10000000.000000" RelPages="11003" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.49173.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.49173.1.0" Name="t" IsTemporary="false" Rows="10000000.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqUnderProjectWithOuterRef.mdp b/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqUnderProjectWithOuterRef.mdp
index ec0360f293..302f6ae6b2 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqUnderProjectWithOuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqUnderProjectWithOuterRef.mdp
@@ -122,7 +122,7 @@ SELECT (SELECT a) FROM foo;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.241591.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.241591.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.241591.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithNoOuterRef.mdp b/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithNoOuterRef.mdp
index 24dd1aec60..f8d59b3d2f 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithNoOuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithNoOuterRef.mdp
@@ -54,7 +54,7 @@ SELECT * FROM foo,bar WHERE a=(VALUES (1));
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.2426136.1.1" Name="bar" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2426136.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.2426136.1.1" Name="bar" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -369,7 +369,7 @@ SELECT * FROM foo,bar WHERE a=(VALUES (1));
<dxl:ColumnStatistics Mdid="1.2426136.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.2426136.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="1000.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.2426110.1.1" Name="foo" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2426110.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.2426110.1.1" Name="foo" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithOuterRef.mdp b/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithOuterRef.mdp
index 9a5cfe151e..d13b4b80a2 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithOuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstTblGetUnderSubqWithOuterRef.mdp
@@ -123,7 +123,7 @@ SELECT * FROM foo,bar WHERE a=(SELECT c);
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.242732.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.242732.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.242732.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -151,7 +151,7 @@ SELECT * FROM foo,bar WHERE a=(SELECT c);
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.242729.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.242729.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.242729.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalIncludesNull.mdp b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalIncludesNull.mdp
index 625a03fe83..20b8cafbf0 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalIncludesNull.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalIncludesNull.mdp
@@ -34,7 +34,7 @@ Gather Motion 1:1 (slice1; segments: 1) (cost=0.00..431.00 rows=1 width=4)
</dxl:Comparison>
</dxl:CheckConstraint>
<dxl:RelationStatistics Mdid="2.16384.1.0" Name="ta" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16384.1.0" Name="ta" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16384.1.0" Name="ta" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithBoolIncludesNull.mdp b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithBoolIncludesNull.mdp
index c9408c4f7f..3ade32eb37 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithBoolIncludesNull.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithBoolIncludesNull.mdp
@@ -96,7 +96,7 @@ Rows out: 1 rows at destination with 0.241 ms to first row, 0.242 ms to end.
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.16396.1.0" Name="tc" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16396.1.0" Name="tc" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16396.1.0" Name="tc" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNull.mdp b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNull.mdp
index 819c5b970a..43262bab40 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNull.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNull.mdp
@@ -37,7 +37,7 @@ Rows out: 1 rows at destination with 0.253 ms to end.
</dxl:ArrayComp>
</dxl:CheckConstraint>
<dxl:RelationStatistics Mdid="2.16384.1.0" Name="ta" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16384.1.0" Name="ta" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16384.1.0" Name="ta" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNullArray.mdp b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNullArray.mdp
index b841359d9a..51dc40f33d 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNullArray.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithInIncludesNullArray.mdp
@@ -35,7 +35,7 @@
</dxl:ArrayComp>
</dxl:CheckConstraint>
<dxl:RelationStatistics Mdid="2.24584.1.0" Name="td" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24584.1.0" Name="td" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24584.1.0" Name="td" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithMultiColumnsIncludeNull.mdp b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithMultiColumnsIncludeNull.mdp
index b6fc28310a..b16bf20cfc 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithMultiColumnsIncludeNull.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithMultiColumnsIncludeNull.mdp
@@ -137,7 +137,7 @@ Rows out: 1 rows at destination with 1693 ms to end.
<dxl:Commutator Mdid="0.551.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.16457.1.0" Name="t" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16457.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16457.1.0" Name="t" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithNotIncludesNull.mdp b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithNotIncludesNull.mdp
index 2df77e64b4..5fc9972b16 100644
--- a/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithNotIncludesNull.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConstraintIntervalWithNotIncludesNull.mdp
@@ -46,7 +46,7 @@ Rows out: 1 rows at destination with 0.250 ms to first row, 0.251 ms to end.
</dxl:Not>
</dxl:CheckConstraint>
<dxl:RelationStatistics Mdid="2.16392.1.0" Name="tx" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16392.1.0" Name="tx" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16392.1.0" Name="tx" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomInsert.mdp b/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomInsert.mdp
index e9488f4284..8eb0ef0af9 100644
--- a/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomInsert.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomInsert.mdp
@@ -87,7 +87,7 @@ explain analyze insert into t1 select t2.a,t3.b from t2, t3 where t2.a = t3.a;
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16538.1.0" Name="t2" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2" ConvertHashToRandom="true">
+ <dxl:Relation Mdid="6.16538.1.0" Name="t2" IsTemporary="false" Rows="1000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2" ConvertHashToRandom="true">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -134,7 +134,7 @@ explain analyze insert into t1 select t2.a,t3.b from t2, t3 where t2.a = t3.a;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16543.1.0" Name="t3" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16543.1.0" Name="t3" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2" ConvertHashToRandom="true">
+ <dxl:Relation Mdid="6.16543.1.0" Name="t3" IsTemporary="false" Rows="1000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2" ConvertHashToRandom="true">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomSelect.mdp b/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomSelect.mdp
index 1cfbd2d1a2..f1fa5100c7 100644
--- a/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomSelect.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ConvertHashToRandomSelect.mdp
@@ -51,7 +51,7 @@
<dxl:SumAgg Mdid="0.2108.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16533.1.0" Name="t1" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2" ConvertHashToRandom="true">
+ <dxl:Relation Mdid="6.16533.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2" ConvertHashToRandom="true">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -83,7 +83,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16538.1.0" Name="t2" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
+ <dxl:Relation Mdid="6.16538.1.0" Name="t2" IsTemporary="false" Rows="0.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-AntiSemiJoin.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-AntiSemiJoin.mdp
index 1c0c4868b2..42bfef3638 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-AntiSemiJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-AntiSemiJoin.mdp
@@ -472,7 +472,7 @@ SQL: select * from t1 where not exists(select a from t2 where t2.b<>t1.b group b
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1639448.1.1" Name="t1" Rows="111.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" Rows="111.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -505,7 +505,7 @@ SQL: select * from t1 where not exists(select a from t2 where t2.b<>t1.b group b
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.2868145.1.1" Name="t2" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2868145.1.1" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.2868145.1.1" Name="t2" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Col.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Col.mdp
index 87e3b69ea4..01a8b634e7 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Col.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Col.mdp
@@ -19,7 +19,7 @@ select * from t1 where a not in (select a from t2 where t2.b<>t1.b group by t2.a
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24719043.1.1" Name="y" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24719043.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24719043.1.1" Name="y" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="m" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -454,7 +454,7 @@ select * from t1 where a not in (select a from t2 where t2.b<>t1.b group by t2.a
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1639448.1.1" Name="t1" Rows="111.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" Rows="111.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Const.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Const.mdp
index 0575a9195e..087521780c 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Const.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Const.mdp
@@ -19,7 +19,7 @@ select * from t1 where 10 not in (select a from t2 where t2.b<>t1.b group by t2.
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24719043.1.1" Name="y" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24719043.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24719043.1.1" Name="y" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="m" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -466,7 +466,7 @@ select * from t1 where 10 not in (select a from t2 where t2.b<>t1.b group by t2.
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1639448.1.1" Name="t1" Rows="111.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" Rows="111.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Expr.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Expr.mdp
index e514480c13..a2953eca5b 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Expr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-LASJ-With-Outer-Expr.mdp
@@ -19,7 +19,7 @@ select * from t1 where a + 10 not in (select a from t2 where t2.b<>t1.b group by
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24719043.1.1" Name="y" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24719043.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24719043.1.1" Name="y" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="m" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -461,7 +461,7 @@ select * from t1 where a + 10 not in (select a from t2 where t2.b<>t1.b group by
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1639448.1.1" Name="t1" Rows="111.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" Rows="111.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-SemiJoin.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-SemiJoin.mdp
index 0cd52ea2d5..c3830f3868 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-SemiJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-SemiJoin.mdp
@@ -471,7 +471,7 @@ SQL: select * from t1 where exists(select a from t2 where t2.b<>t1.b group by t2
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1639448.1.1" Name="t1" Rows="111.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1639448.1.1" Name="t1" IsTemporary="false" Rows="111.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -504,7 +504,7 @@ SQL: select * from t1 where exists(select a from t2 where t2.b<>t1.b group by t2
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.2868145.1.1" Name="t2" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2868145.1.1" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.2868145.1.1" Name="t2" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-2.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-2.mdp
index b28c1f12dc..6ed56d128a 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-2.mdp
@@ -538,7 +538,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.434194.1.0" Name="t" Rows="10000.000000" RelPages="16" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.434194.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.434194.1.0" Name="t" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-3.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-3.mdp
index 2f8a0fd235..247337f1b5 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency-3.mdp
@@ -941,7 +941,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.434199.1.0" Name="t" Rows="10001.000000" RelPages="13" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.434199.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.434199.1.0" Name="t" IsTemporary="false" Rows="10001.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency.mdp
index 2241aa5c3c..893f98c1c8 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-Function-Dependency.mdp
@@ -135,7 +135,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.434189.1.0" Name="t" Rows="10000.000000" RelPages="13" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.434189.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.434189.1.0" Name="t" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-2.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-2.mdp
index 9dfb7b4aad..77d6dc6185 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-2.mdp
@@ -42,7 +42,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.73908.1.0" Name="t" Rows="10000.000000" RelPages="13" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.73908.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" NumberLeafPartitions="0">
+ <dxl:Relation Mdid="6.73908.1.0" Name="t" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" NumberLeafPartitions="0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-3.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-3.mdp
index 8e49205279..ea9dff7f77 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-3.mdp
@@ -942,7 +942,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.24577.1.0" Name="t" Rows="10000.000000" RelPages="13" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24577.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" NumberLeafPartitions="0">
+ <dxl:Relation Mdid="6.24577.1.0" Name="t" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" NumberLeafPartitions="0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-4.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-4.mdp
index 6455b042c8..278e62e90f 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-4.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-4.mdp
@@ -975,7 +975,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.90347.1.0" Name="t" Rows="100000.000000" RelPages="137" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90347.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" NumberLeafPartitions="0">
+ <dxl:Relation Mdid="6.90347.1.0" Name="t" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" NumberLeafPartitions="0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-5.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-5.mdp
index 9f955f960f..d9d336e1b7 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-5.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct-5.mdp
@@ -971,7 +971,7 @@
</dxl:MVNDistinctList>
</dxl:ExtendedStatistics>
<dxl:RelationStatistics Mdid="2.90358.1.0" Name="t" Rows="100000.000000" RelPages="137" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90358.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" NumberLeafPartitions="0">
+ <dxl:Relation Mdid="6.90358.1.0" Name="t" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" NumberLeafPartitions="0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct.mdp b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct.mdp
index eb812ef65c..72d498933d 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlated-Stat-NDistinct.mdp
@@ -38,7 +38,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.57650.1.0" Name="t" Rows="10000.000000" RelPages="13" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57650.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" NumberLeafPartitions="0">
+ <dxl:Relation Mdid="6.57650.1.0" Name="t" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" NumberLeafPartitions="0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp
index 58a9932993..5eca4a9d64 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp
@@ -270,7 +270,7 @@ SELECT pn, cn, vn FROM sale s WHERE NOT EXISTS (SELECT * FROM customer WHERE NOT
<dxl:ColumnStatistics Mdid="1.29191993.1.1.7" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.29191993.1.1.6" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.29191945.1.1" Name="product" Rows="8.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.29191945.1.0" Name="product" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191945.1.0" Name="product" IsTemporary="false" Rows="8.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="pn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -298,7 +298,7 @@ SELECT pn, cn, vn FROM sale s WHERE NOT EXISTS (SELECT * FROM customer WHERE NOT
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.29191945.1.1" Name="product" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191945.1.1" Name="product" IsTemporary="false" Rows="8.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="pn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -468,7 +468,7 @@ SELECT pn, cn, vn FROM sale s WHERE NOT EXISTS (SELECT * FROM customer WHERE NOT
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.29191849.1.1" Name="customer" Rows="4.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.29191849.1.0" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191849.1.0" Name="customer" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -496,7 +496,7 @@ SELECT pn, cn, vn FROM sale s WHERE NOT EXISTS (SELECT * FROM customer WHERE NOT
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.29191849.1.1" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191849.1.1" Name="customer" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -529,7 +529,7 @@ SELECT pn, cn, vn FROM sale s WHERE NOT EXISTS (SELECT * FROM customer WHERE NOT
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.29191993.1.1" Name="sale" Rows="12.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.29191993.1.0" Name="sale" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
+ <dxl:Relation Mdid="6.29191993.1.0" Name="sale" IsTemporary="false" Rows="12.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -563,7 +563,7 @@ SELECT pn, cn, vn FROM sale s WHERE NOT EXISTS (SELECT * FROM customer WHERE NOT
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.29191993.1.1" Name="sale" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
+ <dxl:Relation Mdid="6.29191993.1.1" Name="sale" IsTemporary="false" Rows="12.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-Limit.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-Limit.mdp
index f9c2b5ab93..5a02c1f806 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-Limit.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-Limit.mdp
@@ -40,7 +40,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16387.1.0" Name="bar" Rows="4.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16387.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16387.1.0" Name="bar" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -63,7 +63,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16384.1.0" Name="foo" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16384.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16384.1.0" Name="foo" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-True.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-True.mdp
index 6845fe2997..b698f68e39 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-True.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiJoin-True.mdp
@@ -39,7 +39,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24576.1.0" Name="t1" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24576.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24576.1.0" Name="t1" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -62,7 +62,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.24582.1.0" Name="t2" Rows="1104.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24582.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24582.1.0" Name="t2" IsTemporary="false" Rows="1104.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiNotIn-True.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiNotIn-True.mdp
index 7b56b788fc..4cff5b4701 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiNotIn-True.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedIN-LeftSemiNotIn-True.mdp
@@ -82,7 +82,7 @@ create table customer
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="customer" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="customer" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -154,7 +154,7 @@ create table customer
<dxl:SumAgg Mdid="0.2107.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16406.1.0" Name="product" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.16406.1.0" Name="product" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="pn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -307,7 +307,7 @@ create table customer
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16427.1.0" Name="sale" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16427.1.0" Name="sale" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
+ <dxl:Relation Mdid="6.16427.1.0" Name="sale" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedLeftSemiNLJoinWithLimit.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedLeftSemiNLJoinWithLimit.mdp
index cc21889134..d5e56270c5 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedLeftSemiNLJoinWithLimit.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedLeftSemiNLJoinWithLimit.mdp
@@ -40,7 +40,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.73728.1.0" Name="t1" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.73728.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.73728.1.0" Name="t1" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -63,7 +63,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.73731.1.0" Name="t2" Rows="4.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.73731.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.73731.1.0" Name="t2" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedNLJ-PartSelector-Subplan.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedNLJ-PartSelector-Subplan.mdp
index 20a49f9209..2f9953350a 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedNLJ-PartSelector-Subplan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedNLJ-PartSelector-Subplan.mdp
@@ -154,7 +154,7 @@ EXPLAIN SELECT pk from partitioned_table WHERE a > (select d from other_table wh
<dxl:ColumnStatistics Mdid="1.24627.1.0.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.24627.1.0.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="3.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.24627.1.0" Name="partitioned_table" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24627.1.0" Name="partitioned_table" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.24627.1.0" Name="partitioned_table" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -265,7 +265,7 @@ EXPLAIN SELECT pk from partitioned_table WHERE a > (select d from other_table wh
<dxl:ColumnStatistics Mdid="1.24627.1.0.5" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.24627.1.0.4" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.24663.1.0" Name="other_table" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24663.1.0" Name="other_table" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24663.1.0" Name="other_table" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithStreamingSpool.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithStreamingSpool.mdp
index 75d69aab6f..3cea4e40cb 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithStreamingSpool.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithStreamingSpool.mdp
@@ -25,7 +25,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.90115.1.0" Name="t2" Rows="3002427.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90115.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.90115.1.0" Name="t2" IsTemporary="false" Rows="3002427.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -48,7 +48,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.90112.1.0" Name="t1" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90112.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.90112.1.0" Name="t1" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithTrueCondition.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithTrueCondition.mdp
index 1983620131..630cad4124 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithTrueCondition.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedNLJWithTrueCondition.mdp
@@ -106,7 +106,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -129,7 +129,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp
index 33e9264c11..f353c8d928 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp
@@ -269,7 +269,7 @@ SELECT pn, cn, vn FROM sale s WHERE EXISTS (SELECT * FROM customer WHERE EXISTS
<dxl:ColumnStatistics Mdid="1.29191993.1.1.7" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.29191993.1.1.6" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.29191945.1.1" Name="product" Rows="8.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.29191945.1.0" Name="product" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191945.1.0" Name="product" IsTemporary="false" Rows="8.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="pn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -297,7 +297,7 @@ SELECT pn, cn, vn FROM sale s WHERE EXISTS (SELECT * FROM customer WHERE EXISTS
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.29191945.1.1" Name="product" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191945.1.1" Name="product" IsTemporary="false" Rows="8.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="pn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -467,7 +467,7 @@ SELECT pn, cn, vn FROM sale s WHERE EXISTS (SELECT * FROM customer WHERE EXISTS
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.29191849.1.1" Name="customer" Rows="4.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.29191849.1.0" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191849.1.0" Name="customer" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -495,7 +495,7 @@ SELECT pn, cn, vn FROM sale s WHERE EXISTS (SELECT * FROM customer WHERE EXISTS
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.29191849.1.1" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
+ <dxl:Relation Mdid="6.29191849.1.1" Name="customer" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;9,3">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -528,7 +528,7 @@ SELECT pn, cn, vn FROM sale s WHERE EXISTS (SELECT * FROM customer WHERE EXISTS
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.29191993.1.1" Name="sale" Rows="12.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.29191993.1.0" Name="sale" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
+ <dxl:Relation Mdid="6.29191993.1.0" Name="sale" IsTemporary="false" Rows="12.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -562,7 +562,7 @@ SELECT pn, cn, vn FROM sale s WHERE EXISTS (SELECT * FROM customer WHERE EXISTS
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.29191993.1.1" Name="sale" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
+ <dxl:Relation Mdid="6.29191993.1.1" Name="sale" IsTemporary="false" Rows="12.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="0,1,2;12,6">
<dxl:Columns>
<dxl:Column Name="cn" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedSubqueryWithAggWindowFunc.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedSubqueryWithAggWindowFunc.mdp
index 4a2d5d14d7..bdf2636770 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedSubqueryWithAggWindowFunc.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedSubqueryWithAggWindowFunc.mdp
@@ -238,7 +238,7 @@ explain select C.i from C where C.i in (select avg(i) over (partition by i) from
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.98668.1.0" Name="b" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.98668.1.0" Name="b" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.98668.1.0" Name="b" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -263,7 +263,7 @@ explain select C.i from C where C.i in (select avg(i) over (partition by i) from
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.98671.1.0" Name="c" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.98671.1.0" Name="c" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.98671.1.0" Name="c" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-1.mdp b/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-1.mdp
index 2f5f5db0cf..814a72f837 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-1.mdp
@@ -172,7 +172,7 @@ AND u_folio = (SELECT max(u_folio) FROM q68t792_temp c WHERE a.u_vtgnr = c.u_vt
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32935853.1.1" Name="q68t792_temp" Rows="70.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32935853.1.1" Name="q68t792_temp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.32935853.1.1" Name="q68t792_temp" IsTemporary="false" Rows="70.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="u_vtgnr" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="6">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-2.mdp b/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-2.mdp
index a70d752c6d..bfca838ba9 100644
--- a/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Correlation-With-Casting-2.mdp
@@ -164,7 +164,7 @@ AND u_folio = (SELECT max(u_folio) FROM q68t792_temp c WHERE a.u_vtgnr <> c.u_v
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32935853.1.1" Name="q68t792_temp" Rows="70.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32935853.1.1" Name="q68t792_temp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.32935853.1.1" Name="q68t792_temp" IsTemporary="false" Rows="70.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="u_vtgnr" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="6">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CountAny.mdp b/src/backend/gporca/data/dxl/minidump/CountAny.mdp
index b8697d96f4..66a162fc8a 100644
--- a/src/backend/gporca/data/dxl/minidump/CountAny.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CountAny.mdp
@@ -597,7 +597,7 @@
<dxl:ColumnStatistics Mdid="1.3373378.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000"/>
<dxl:RelationStatistics Mdid="2.3373378.1.1" Name="y" Rows="10.000000"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -621,7 +621,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.3373378.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373378.1.1" Name="y" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CountStar.mdp b/src/backend/gporca/data/dxl/minidump/CountStar.mdp
index c1a1fdbb27..be29a2be7f 100644
--- a/src/backend/gporca/data/dxl/minidump/CountStar.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CountStar.mdp
@@ -590,7 +590,7 @@
<dxl:ColumnStatistics Mdid="1.3373378.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000"/>
<dxl:RelationStatistics Mdid="2.3373378.1.1" Name="y" Rows="10.000000"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -614,7 +614,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.3373378.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373378.1.1" Name="y" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CoveringIndex-1.mdp b/src/backend/gporca/data/dxl/minidump/CoveringIndex-1.mdp
index 3a420b0313..857cd02d92 100644
--- a/src/backend/gporca/data/dxl/minidump/CoveringIndex-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoveringIndex-1.mdp
@@ -148,7 +148,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.65566.1.0" Name="t" Rows="1000.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.65566.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.65566.1.0" Name="t" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CoveringIndex-2.mdp b/src/backend/gporca/data/dxl/minidump/CoveringIndex-2.mdp
index dd7bb0cb6f..ee8bfe1d27 100644
--- a/src/backend/gporca/data/dxl/minidump/CoveringIndex-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoveringIndex-2.mdp
@@ -59,7 +59,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.65572.1.0" Name="t" Rows="1000.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.65572.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.65572.1.0" Name="t" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CoveringIndex-3.mdp b/src/backend/gporca/data/dxl/minidump/CoveringIndex-3.mdp
index 93819a1ae3..0b08d2a343 100644
--- a/src/backend/gporca/data/dxl/minidump/CoveringIndex-3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoveringIndex-3.mdp
@@ -82,7 +82,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.65577.1.0" Name="t" Rows="1000.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.65577.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.65577.1.0" Name="t" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-1.mdp b/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-1.mdp
index 0c7668eea6..21546798b7 100644
--- a/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-1.mdp
@@ -160,7 +160,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.41006.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,10">
+ <dxl:Relation Mdid="6.41006.1.0" Name="t1" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,10">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-2.mdp b/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-2.mdp
index 1ad4797aa6..c05f0ae764 100644
--- a/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoveringIndex-Cost-2.mdp
@@ -233,7 +233,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.41037.1.0" Name="t1" Rows="10000.000000" RelPages="22" RelAllVisible="22" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41037.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,10">
+ <dxl:Relation Mdid="6.41037.1.0" Name="t1" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,10">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesNotSupport-Gin.mdp b/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesNotSupport-Gin.mdp
index 530341a2f0..09f18047f4 100644
--- a/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesNotSupport-Gin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesNotSupport-Gin.mdp
@@ -188,7 +188,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.76127.1.0" Name="test" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.76127.1.0" Name="test" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.76127.1.0" Name="test" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="data" Attno="1" Mdid="0.3802.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesSupport-Gist.mdp b/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesSupport-Gist.mdp
index 918961fbb2..f6c6c27cdb 100644
--- a/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesSupport-Gist.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CoveringIndex-DoesSupport-Gist.mdp
@@ -38,7 +38,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.76091.1.0" Name="points" Rows="6.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.76091.1.0" Name="points" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.76091.1.0" Name="points" IsTemporary="false" Rows="6.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="p" Attno="1" Mdid="0.600.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-ComputeScalar-With-Outerref.mdp b/src/backend/gporca/data/dxl/minidump/DML-ComputeScalar-With-Outerref.mdp
index 63fbe167f7..124ca70eac 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-ComputeScalar-With-Outerref.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-ComputeScalar-With-Outerref.mdp
@@ -26,7 +26,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49155.1.0" Name="y" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49155.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49155.1.0" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -49,7 +49,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.49152.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-Filter-With-OuterRef.mdp b/src/backend/gporca/data/dxl/minidump/DML-Filter-With-OuterRef.mdp
index 7b798b9a90..746b19657f 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-Filter-With-OuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-Filter-With-OuterRef.mdp
@@ -50,7 +50,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49155.1.0" Name="y" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49155.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49155.1.0" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -73,7 +73,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.49152.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-Replicated-Input.mdp b/src/backend/gporca/data/dxl/minidump/DML-Replicated-Input.mdp
index 3bff152a53..d7e40740b8 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-Replicated-Input.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-Replicated-Input.mdp
@@ -222,7 +222,7 @@ WHERE sach_vsnr = 465132477;
<dxl:ColumnStatistics Mdid="1.42167032.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.42167032.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.42167032.1.1" Name="test_row_number_step1" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.42167032.1.1" Name="test_row_number_step1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="8,2">
+ <dxl:Relation Mdid="6.42167032.1.1" Name="test_row_number_step1" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="ag" Attno="1" Mdid="0.21.1.0" Nullable="true" ColWidth="2">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp
index 21791100fc..74a1ea8e25 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp
@@ -52,7 +52,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49155.1.0" Name="y" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49155.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49155.1.0" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -75,7 +75,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.49152.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -232,7 +232,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.16875.1.0" Name="foo" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16875.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16875.1.0" Name="foo" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp
index 40078f0660..acfba432a6 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp
@@ -48,7 +48,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.49152.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-Volatile-Function.mdp b/src/backend/gporca/data/dxl/minidump/DML-Volatile-Function.mdp
index eaf32bb552..3740bdae6d 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-Volatile-Function.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-Volatile-Function.mdp
@@ -158,7 +158,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.188449.1.0" Name="x" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.188449.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.188449.1.0" Name="x" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-With-CoordinatorOnlyTable-1.mdp b/src/backend/gporca/data/dxl/minidump/DML-With-CoordinatorOnlyTable-1.mdp
index 32a865d273..fe7a84e984 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-With-CoordinatorOnlyTable-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-With-CoordinatorOnlyTable-1.mdp
@@ -36,7 +36,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49152.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -232,7 +232,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.5036.1.0" Name="gp_segment_configuration" Rows="8.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.5036.1.0" Name="gp_segment_configuration" IsTemporary="false" StorageType="Heap" DistributionPolicy="CoordinatorOnly" Keys="16,10">
+ <dxl:Relation Mdid="6.5036.1.0" Name="gp_segment_configuration" IsTemporary="false" Rows="8.000000" StorageType="Heap" DistributionPolicy="CoordinatorOnly" Keys="16,10">
<dxl:Columns>
<dxl:Column Name="dbid" Attno="1" Mdid="0.21.1.0" Nullable="false" ColWidth="2">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-With-CorrelatedNLJ-With-Universal-Child.mdp b/src/backend/gporca/data/dxl/minidump/DML-With-CorrelatedNLJ-With-Universal-Child.mdp
index b4d1cb2b7e..fbf9a6f7a8 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-With-CorrelatedNLJ-With-Universal-Child.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-With-CorrelatedNLJ-With-Universal-Child.mdp
@@ -44,7 +44,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16391.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-With-HJ-And-UniversalChild.mdp b/src/backend/gporca/data/dxl/minidump/DML-With-HJ-And-UniversalChild.mdp
index 726d683ebe..de7f3605d1 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-With-HJ-And-UniversalChild.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-With-HJ-And-UniversalChild.mdp
@@ -26,7 +26,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49152.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -183,7 +183,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.16875.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16875.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16875.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-With-Join-With-Universal-Child.mdp b/src/backend/gporca/data/dxl/minidump/DML-With-Join-With-Universal-Child.mdp
index 6911351f3e..b78e2f4592 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-With-Join-With-Universal-Child.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-With-Join-With-Universal-Child.mdp
@@ -27,7 +27,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
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 d89af76645..e814f1189f 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
@@ -203,7 +203,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.57371.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.57371.1.0" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="j" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -229,7 +229,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.57368.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.57368.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.57368.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DMLCollapseProject.mdp b/src/backend/gporca/data/dxl/minidump/DMLCollapseProject.mdp
index 95a96e36f1..967cba0eb0 100644
--- a/src/backend/gporca/data/dxl/minidump/DMLCollapseProject.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DMLCollapseProject.mdp
@@ -182,7 +182,7 @@
</dxl:Type>
<dxl:MDScalarComparison Mdid="4.20.1.0;23.1.0;0" Name="=" ComparisonType="Eq" LeftType="0.20.1.0" RightType="0.23.1.0" OperatorMdid="0.416.1.0"/>
<dxl:RelationStatistics Mdid="2.254025.1.1" Name="parts" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.254025.1.1" Name="parts" IsTemporary="true" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.254025.1.1" Name="parts" IsTemporary="true" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="partnum" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="2">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DPE-IN.mdp b/src/backend/gporca/data/dxl/minidump/DPE-IN.mdp
index 48edc6989b..afecb8a893 100644
--- a/src/backend/gporca/data/dxl/minidump/DPE-IN.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DPE-IN.mdp
@@ -28,7 +28,7 @@ select * from P,X where P.a=X.a and X.a in (1,2);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.36394823.1.1" Name="p" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.36394823.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.36394823.1.1" Name="p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -542,7 +542,7 @@ select * from P,X where P.a=X.a and X.a in (1,2);
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.24719017.1.1" Name="x" Rows="11000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" Rows="11000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DPE-NOT-IN.mdp b/src/backend/gporca/data/dxl/minidump/DPE-NOT-IN.mdp
index 04007c45ad..44611507b5 100644
--- a/src/backend/gporca/data/dxl/minidump/DPE-NOT-IN.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DPE-NOT-IN.mdp
@@ -28,7 +28,7 @@ select * from P,X where P.a=X.a and X.a not in (1,2);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.36394823.1.1" Name="p" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.36394823.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.36394823.1.1" Name="p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -526,7 +526,7 @@ select * from P,X where P.a=X.a and X.a not in (1,2);
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.24719017.1.1" Name="x" Rows="11000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" Rows="11000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp b/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp
index 2faadeb0f6..58a28c7961 100644
--- a/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DPE-SemiJoin.mdp
@@ -772,7 +772,7 @@ Select * from X where X.a < ANY (select a from P);
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.35837767.1.1" Name="p" Rows="6325.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.35837767.1.1" Name="p" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,4,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.35837767.1.1" Name="p" IsTemporary="false" Rows="6325.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Random" Keys="3,4,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -905,7 +905,7 @@ Select * from X where X.a < ANY (select a from P);
<dxl:ResultType Mdid="0.16.1.0"/>
</dxl:GPDBFunc>
<dxl:RelationStatistics Mdid="2.24719017.1.1" Name="x" Rows="11000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24719017.1.1" Name="x" IsTemporary="false" Rows="11000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DPE-with-unsupported-pred.mdp b/src/backend/gporca/data/dxl/minidump/DPE-with-unsupported-pred.mdp
index 7c278a64dd..484aab7547 100644
--- a/src/backend/gporca/data/dxl/minidump/DPE-with-unsupported-pred.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DPE-with-unsupported-pred.mdp
@@ -44,7 +44,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.57344.1.0" Name="part" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57344.1.0" Name="part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.57344.1.0" Name="part" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -452,7 +452,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.57374.1.0" Name="jazz" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57374.1.0" Name="jazz" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="f" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -935,7 +935,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.57371.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57371.1.0" Name="bar" IsTemporary="false" Rows="9000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="d" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DPv2GreedyOnly.mdp b/src/backend/gporca/data/dxl/minidump/DPv2GreedyOnly.mdp
index dc8897922d..25ab9cc8a1 100644
--- a/src/backend/gporca/data/dxl/minidump/DPv2GreedyOnly.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DPv2GreedyOnly.mdp
@@ -43,7 +43,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.122893.1.0" Name="t2" Rows="1000000.000000" RelPages="1102" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122893.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122893.1.0" Name="t2" IsTemporary="false" Rows="1000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -71,7 +71,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.122890.1.0" Name="t1" Rows="10000000.000000" RelPages="11002" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122890.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122890.1.0" Name="t1" IsTemporary="false" Rows="10000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -116,7 +116,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.122899.1.0" Name="t4" Rows="1000.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122899.1.0" Name="t4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122899.1.0" Name="t4" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a4" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -161,7 +161,7 @@
<dxl:SumAgg Mdid="0.2108.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.122896.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122896.1.0" Name="t3" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a3" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DPv2MinCardOnly.mdp b/src/backend/gporca/data/dxl/minidump/DPv2MinCardOnly.mdp
index 4f76b8a16b..5fc1d46bf7 100644
--- a/src/backend/gporca/data/dxl/minidump/DPv2MinCardOnly.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DPv2MinCardOnly.mdp
@@ -43,7 +43,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.122893.1.0" Name="t2" Rows="1000000.000000" RelPages="1102" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122893.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122893.1.0" Name="t2" IsTemporary="false" Rows="1000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -71,7 +71,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.122890.1.0" Name="t1" Rows="10000000.000000" RelPages="11002" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122890.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122890.1.0" Name="t1" IsTemporary="false" Rows="10000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -116,7 +116,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.122899.1.0" Name="t4" Rows="1000.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122899.1.0" Name="t4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122899.1.0" Name="t4" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a4" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -161,7 +161,7 @@
<dxl:SumAgg Mdid="0.2108.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.122896.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122896.1.0" Name="t3" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a3" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DPv2QueryOnly.mdp b/src/backend/gporca/data/dxl/minidump/DPv2QueryOnly.mdp
index 5eeff3a62f..716875b153 100644
--- a/src/backend/gporca/data/dxl/minidump/DPv2QueryOnly.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DPv2QueryOnly.mdp
@@ -43,7 +43,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.122893.1.0" Name="t2" Rows="1000000.000000" RelPages="1102" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122893.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122893.1.0" Name="t2" IsTemporary="false" Rows="1000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -71,7 +71,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.122890.1.0" Name="t1" Rows="10000000.000000" RelPages="11002" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122890.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122890.1.0" Name="t1" IsTemporary="false" Rows="10000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -116,7 +116,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.122899.1.0" Name="t4" Rows="1000.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122899.1.0" Name="t4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122899.1.0" Name="t4" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a4" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -161,7 +161,7 @@
<dxl:SumAgg Mdid="0.2108.1.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.122896.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.122896.1.0" Name="t3" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a3" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp b/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp
index e567bc9551..a5dcf43a09 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp
@@ -188,7 +188,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.359750.1.1" Name="r" Rows="1001232.000000"/>
- <dxl:Relation Mdid="6.359750.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.359750.1.1" Name="r" IsTemporary="false" Rows="1001232.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp b/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp
index 06174618e6..e4b130798f 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp
@@ -222,7 +222,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.359750.1.1" Name="r" Rows="1001232.000000"/>
- <dxl:Relation Mdid="6.359750.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.359750.1.1" Name="r" IsTemporary="false" Rows="1001232.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp b/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp
index a773e498cd..5853daab80 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp
@@ -35,7 +35,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.196608.1.0" Name="t" Rows="3.000000" RelPages="2" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.196608.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.196608.1.0" Name="t" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate2.mdp b/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate2.mdp
index 261bc4638b..8a8ac50174 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate2.mdp
@@ -38,7 +38,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.65546.1.0" Name="t1" Rows="20.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.65546.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.65546.1.0" Name="t1" IsTemporary="false" Rows="20.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-InnerJoin-GroupBy-HashAggregate.mdp b/src/backend/gporca/data/dxl/minidump/DQA-InnerJoin-GroupBy-HashAggregate.mdp
index 96e5c76d38..710640a8ff 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-InnerJoin-GroupBy-HashAggregate.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-InnerJoin-GroupBy-HashAggregate.mdp
@@ -223,7 +223,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.237622.1.0" Name="t1" Rows="10.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.237622.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.237622.1.0" Name="t1" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -251,7 +251,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.237625.1.0" Name="t2" Rows="10.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.237625.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.237625.1.0" Name="t2" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-KeepOuterReference.mdp b/src/backend/gporca/data/dxl/minidump/DQA-KeepOuterReference.mdp
index becf9585f3..1e6ee5f2bc 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-KeepOuterReference.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-KeepOuterReference.mdp
@@ -128,7 +128,7 @@ select (select distinct tint.c from tint as tt) x from tint;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.242735.1.0" Name="tint" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.242735.1.0" Name="tint" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.242735.1.0" Name="tint" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-NonRedistributableCol.mdp b/src/backend/gporca/data/dxl/minidump/DQA-NonRedistributableCol.mdp
index e0f3e2b4bc..5112f11a43 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-NonRedistributableCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-NonRedistributableCol.mdp
@@ -36,7 +36,7 @@ explain select count(distinct h) from testhstore;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.65536.1.0" Name="testhstore" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.65536.1.0" Name="testhstore" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.65536.1.0" Name="testhstore" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="h" Attno="1" Mdid="0.32774.1.0" Nullable="true" ColWidth="5">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp
index 9260a6aea1..302772f28c 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp
@@ -103,7 +103,7 @@ drop table if exists foo;
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.857690.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.857690.1.1" Name="foo" IsTemporary="false" Rows="101808.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp
index 72ad718086..55a69c5961 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp
@@ -163,7 +163,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.17308.1.0" Name="bar" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.17308.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17308.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp
index a2baa44094..6bff5cceb8 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp
@@ -21,7 +21,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24588.1.1" Name="foo" Rows="101808.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24588.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24588.1.1" Name="foo" IsTemporary="false" Rows="101808.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp
index e5519222e2..04f5913797 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp
@@ -132,7 +132,7 @@ explain select count(distinct b ) from foo;
<dxl:ColumnStatistics Mdid="1.17209.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.17209.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.17209.1.1" Name="foo" Rows="97759.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17209.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17209.1.1" Name="foo" IsTemporary="false" Rows="97759.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DTS-Hetrogeneous-Partitioned.mdp b/src/backend/gporca/data/dxl/minidump/DTS-Hetrogeneous-Partitioned.mdp
index 02e06d2196..960d1a69d0 100644
--- a/src/backend/gporca/data/dxl/minidump/DTS-Hetrogeneous-Partitioned.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DTS-Hetrogeneous-Partitioned.mdp
@@ -175,7 +175,7 @@ explain select * from t;
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.181410.1.0" Name="t" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.181410.1.0" Name="t" IsTemporary="false" StorageType="MixedPartitioned" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="l">
+ <dxl:Relation Mdid="6.181410.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="MixedPartitioned" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="l">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
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 446a886686..c28f921ded 100644
--- a/src/backend/gporca/data/dxl/minidump/Date-TimeStamp-HashJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Date-TimeStamp-HashJoin.mdp
@@ -160,7 +160,7 @@
<dxl:InverseOp Mdid="0.2350.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.49258.1.1" Name="d1" Rows="0.000000"/>
- <dxl:Relation Mdid="6.49258.1.1" Name="d1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.49258.1.1" Name="d1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -189,7 +189,7 @@
<dxl:ColumnStatistics Mdid="1.49258.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.49258.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.49281.1.1" Name="d2" Rows="0.000000"/>
- <dxl:Relation Mdid="6.49281.1.1" Name="d2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.49281.1.1" Name="d2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DeduplicatePredicates.mdp b/src/backend/gporca/data/dxl/minidump/DeduplicatePredicates.mdp
index 44df9e5984..53a1fdf8d3 100644
--- a/src/backend/gporca/data/dxl/minidump/DeduplicatePredicates.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DeduplicatePredicates.mdp
@@ -116,7 +116,7 @@
<dxl:ColumnStatistics Mdid="1.64035.1.1.1" Name="b" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.64035.1.1.0" Name="a" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.64035.1.1" Name="r" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.64035.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.64035.1.1" Name="r" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Delete-Check-AssignedQueryIdForTargetRel.mdp b/src/backend/gporca/data/dxl/minidump/Delete-Check-AssignedQueryIdForTargetRel.mdp
index 9bc82572a8..661c12eeb1 100644
--- a/src/backend/gporca/data/dxl/minidump/Delete-Check-AssignedQueryIdForTargetRel.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Delete-Check-AssignedQueryIdForTargetRel.mdp
@@ -200,7 +200,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16384.1.0" Name="test" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16384.1.0" Name="test" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1" NumberLeafPartitions="0">
+ <dxl:Relation Mdid="6.16384.1.0" Name="test" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1" NumberLeafPartitions="0">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Delete-With-Limit-In-Subquery.mdp b/src/backend/gporca/data/dxl/minidump/Delete-With-Limit-In-Subquery.mdp
index 9c9e448d7a..cb363d924f 100644
--- a/src/backend/gporca/data/dxl/minidump/Delete-With-Limit-In-Subquery.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Delete-With-Limit-In-Subquery.mdp
@@ -155,7 +155,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.49433.1.0" Name="test2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49433.1.0" Name="test2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.49433.1.0" Name="test2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -178,7 +178,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.49342.1.0" Name="test1" Rows="99570.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.49342.1.0" Name="test1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.49342.1.0" Name="test1" IsTemporary="false" Rows="99570.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DeleteMismatchedDistribution.mdp b/src/backend/gporca/data/dxl/minidump/DeleteMismatchedDistribution.mdp
index 2be330327e..fda554cac6 100644
--- a/src/backend/gporca/data/dxl/minidump/DeleteMismatchedDistribution.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DeleteMismatchedDistribution.mdp
@@ -260,7 +260,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16448.1.0" Name="pt2" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16448.1.0" Name="pt2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16448.1.0" Name="pt2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -473,7 +473,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16466.1.0" Name="r" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16466.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,3">
+ <dxl:Relation Mdid="6.16466.1.0" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DeleteRandomDistr.mdp b/src/backend/gporca/data/dxl/minidump/DeleteRandomDistr.mdp
index e52c12bae3..e2798660a9 100644
--- a/src/backend/gporca/data/dxl/minidump/DeleteRandomDistr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DeleteRandomDistr.mdp
@@ -125,7 +125,7 @@
<dxl:ColumnStatistics Mdid="1.17027.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17027.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.17027.1.1" Name="rr" Rows="1.000000"/>
- <dxl:Relation Mdid="6.17027.1.1" Name="rr" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random">
+ <dxl:Relation Mdid="6.17027.1.1" Name="rr" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Random">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTable.mdp b/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTable.mdp
index a7d1a67d26..845585e04b 100644
--- a/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTable.mdp
@@ -31,7 +31,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTableJoin.mdp b/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTableJoin.mdp
index fc8adb7e41..bab54f54d4 100644
--- a/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTableJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DeleteRandomlyDistributedTableJoin.mdp
@@ -139,7 +139,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16414.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.16414.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -162,7 +162,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16417.1.0" Name="bar" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16417.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16417.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-DynamicIndexScan.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-DynamicIndexScan.mdp
index bc850d5d22..9c9b636d1b 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-DynamicIndexScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-DynamicIndexScan.mdp
@@ -176,7 +176,7 @@ where a=1 and b>0;
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.21553.1.1" Name="dd_singlecol_part_idx" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.21553.1.0" Name="dd_singlecol_part_idx" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.21553.1.0" Name="dd_singlecol_part_idx" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -516,7 +516,7 @@ where a=1 and b>0;
</dxl:Not>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.21553.1.1" Name="dd_singlecol_part_idx" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.21553.1.1" Name="dd_singlecol_part_idx" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-MultiCol-Conjunction.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-MultiCol-Conjunction.mdp
index 9a16d70986..df2b3869db 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-MultiCol-Conjunction.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-MultiCol-Conjunction.mdp
@@ -154,7 +154,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32561.1.0" Name="bar" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32561.1.0" Name="bar" IsTemporary="false" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32561.1.0" Name="bar" IsTemporary="false" Rows="0.000000" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-SingleCol-Conjunction.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-SingleCol-Conjunction.mdp
index 8a62ebde55..132f8d8b8a 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-SingleCol-Conjunction.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId-SingleCol-Conjunction.mdp
@@ -155,7 +155,7 @@
</dxl:Type>
<dxl:ColumnStatistics Mdid="1.32558.1.0.7" Name="gp_segment_id" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.32558.1.0" Name="foo" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32558.1.0" Name="foo" IsTemporary="false" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.32558.1.0" Name="foo" IsTemporary="false" Rows="0.000000" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId.mdp
index 0188215970..06310d6490 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-GpSegmentId.mdp
@@ -20,7 +20,7 @@ select * from foo where gp_segment_id=2;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="20.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="20.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp
index 9b29aa4f1f..0c72c38648 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-IndexScan.mdp
@@ -264,7 +264,7 @@ where a=1 and b=0;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1962900.1.1" Name="dd_singlecol_idx" Rows="101.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1962900.1.0" Name="dd_singlecol_idx" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.1962900.1.0" Name="dd_singlecol_idx" IsTemporary="false" Rows="101.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -293,7 +293,7 @@ where a=1 and b=0;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1962900.1.1" Name="dd_singlecol_idx" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.1962900.1.1" Name="dd_singlecol_idx" IsTemporary="false" Rows="101.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Disjunction.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Disjunction.mdp
index a5cc03974d..722d2f33b4 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Disjunction.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Disjunction.mdp
@@ -113,7 +113,7 @@ explain select * from r where (a=1 or a=3) and b=3;
<dxl:ColumnStatistics Mdid="1.1804303.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1804303.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1804303.1.1" Name="t" Rows="4.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1804303.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.1804303.1.1" Name="t" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Negative.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Negative.mdp
index b5cc16f46b..fc9cebd708 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Negative.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol-Negative.mdp
@@ -113,7 +113,7 @@ explain select * from r where a=1;
<dxl:ColumnStatistics Mdid="1.1804303.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1804303.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1804303.1.1" Name="t" Rows="4.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1804303.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.1804303.1.1" Name="t" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol.mdp
index a3489000d9..cfc19616a1 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-MultiCol.mdp
@@ -113,7 +113,7 @@ explain select * from r where a=1 and b=2;
<dxl:ColumnStatistics Mdid="1.1804303.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1804303.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1804303.1.1" Name="t" Rows="4.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1804303.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.1804303.1.1" Name="t" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable-Disjunction.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable-Disjunction.mdp
index f5e0eb6760..c29e3c8ebe 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable-Disjunction.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable-Disjunction.mdp
@@ -131,7 +131,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.26390.1.0" Name="foo_randdistr" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.26390.1.0" Name="foo_randdistr" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
+ <dxl:Relation Mdid="6.26390.1.0" Name="foo_randdistr" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="col1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable.mdp
index 9e058f3b3a..f727f26c78 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-RandDistTable.mdp
@@ -131,7 +131,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.26390.1.0" Name="foo_randdistr" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.26390.1.0" Name="foo_randdistr" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
+ <dxl:Relation Mdid="6.26390.1.0" Name="foo_randdistr" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="col1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-IsNull.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-IsNull.mdp
index 5b45b0512e..c8fbb4875d 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-IsNull.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction-IsNull.mdp
@@ -111,7 +111,7 @@ explain select * from r where a=1 or a is null;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.1813600.1.1" Name="r" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
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 d15654a6b3..846387b82a 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
@@ -111,7 +111,7 @@ explain select * from r where a<1 or a=3;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.1813600.1.1" Name="r" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction.mdp
index 180bad9df1..7a7ca6ebbc 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol-Disjunction.mdp
@@ -111,7 +111,7 @@ explain select * from r where a=1 or a=3;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.1813600.1.1" Name="r" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol.mdp b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol.mdp
index 8fdda5348a..7f541fb6c4 100644
--- a/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DirectDispatch-SingleCol.mdp
@@ -111,7 +111,7 @@ explain select * from r where a=1;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.1813600.1.1" Name="r" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1813600.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DisableBroadcastThreshold.mdp b/src/backend/gporca/data/dxl/minidump/DisableBroadcastThreshold.mdp
index 4e2404dd1d..0db8ce65a9 100644
--- a/src/backend/gporca/data/dxl/minidump/DisableBroadcastThreshold.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DisableBroadcastThreshold.mdp
@@ -142,7 +142,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16395.1.0" Name="foo" Rows="100000.000000" RelPages="111" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16395.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16395.1.0" Name="foo" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -168,7 +168,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16398.1.0" Name="bar" Rows="1000.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16398.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.16398.1.0" Name="bar" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DiscardRedistributeHashJoin.mdp b/src/backend/gporca/data/dxl/minidump/DiscardRedistributeHashJoin.mdp
index 3671f045b9..c082232e9e 100644
--- a/src/backend/gporca/data/dxl/minidump/DiscardRedistributeHashJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DiscardRedistributeHashJoin.mdp
@@ -136,7 +136,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.337819.1.0" Name="foo" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.337819.1.0" Name="foo" IsTemporary="false" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.337819.1.0" Name="foo" IsTemporary="false" Rows="0.000000" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -166,7 +166,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.337822.1.0" Name="bar" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.337822.1.0" Name="bar" IsTemporary="false" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.337822.1.0" Name="bar" IsTemporary="false" Rows="0.000000" HasOids="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Distinct-LegacyOpfamily.mdp b/src/backend/gporca/data/dxl/minidump/Distinct-LegacyOpfamily.mdp
index b32fb502f5..0ad23d9cf3 100644
--- a/src/backend/gporca/data/dxl/minidump/Distinct-LegacyOpfamily.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Distinct-LegacyOpfamily.mdp
@@ -25,7 +25,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.24576.1.0" Name="try_distinct_array" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.24576.1.0" Name="try_distinct_array" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24576.1.0" Name="try_distinct_array" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="test_char" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="2">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DistinctAgg-NonSplittable.mdp b/src/backend/gporca/data/dxl/minidump/DistinctAgg-NonSplittable.mdp
index 1c8df94d61..ea40660eb5 100644
--- a/src/backend/gporca/data/dxl/minidump/DistinctAgg-NonSplittable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DistinctAgg-NonSplittable.mdp
@@ -564,7 +564,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.207697.1.0" Name="onek" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.207697.1.0" Name="onek" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
+ <dxl:Relation Mdid="6.207697.1.0" Name="onek" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
<dxl:Columns>
<dxl:Column Name="unique1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp b/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp
index 99df9dd955..63e832ccb9 100644
--- a/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp
@@ -167,7 +167,7 @@
</dxl:Type>
<dxl:RelationExtendedStatistics Mdid="10.23148.1.0" Name="t"/>
<dxl:RelationStatistics Mdid="2.23148.1.0" Name="t" Rows="40.000000" RelPages="1" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.23148.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.23148.1.0" Name="t" IsTemporary="false" Rows="40.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DonotPushPartConstThruLimit.mdp b/src/backend/gporca/data/dxl/minidump/DonotPushPartConstThruLimit.mdp
index c06cd70933..33c0bf883b 100644
--- a/src/backend/gporca/data/dxl/minidump/DonotPushPartConstThruLimit.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DonotPushPartConstThruLimit.mdp
@@ -27,7 +27,7 @@ select * from (select * from h order by j limit 2) x where j = 2;
<dxl:ColumnStatistics Mdid="1.16527.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="2.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:ColumnStatistics Mdid="1.16527.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.16527.1.1" Name="h" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16527.1.1" Name="h" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16527.1.1" Name="h" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="j" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-1.mdp b/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-1.mdp
index 054709f485..bf412cf163 100644
--- a/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-1.mdp
@@ -206,7 +206,7 @@ Physical plan:
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16467.1.0" Name="part_random_t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16467.1.0" Name="part_random_t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16467.1.0" Name="part_random_t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-2.mdp b/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-2.mdp
index d0f1b5b6c9..8a233ae980 100644
--- a/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DontAddRedistributeBeforeInsert-2.mdp
@@ -135,7 +135,7 @@
</dxl:Type>
<dxl:ColumnStatistics Mdid="1.20432.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.20432.1.0" Name="t1_x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.20432.1.0" Name="t1_x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
+ <dxl:Relation Mdid="6.20432.1.0" Name="t1_x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.28.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DoubleNDVCardinalityEquals.mdp b/src/backend/gporca/data/dxl/minidump/DoubleNDVCardinalityEquals.mdp
index 5b8a7f8271..c152a7fa13 100644
--- a/src/backend/gporca/data/dxl/minidump/DoubleNDVCardinalityEquals.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DoubleNDVCardinalityEquals.mdp
@@ -59,7 +59,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.212992.1.0" Name="mytable" Rows="141140992.000000" RelPages="743257" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.212992.1.0" Name="mytable" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,1">
+ <dxl:Relation Mdid="6.212992.1.0" Name="mytable" IsTemporary="false" Rows="141140992.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DqaHavingMax.mdp b/src/backend/gporca/data/dxl/minidump/DqaHavingMax.mdp
index da8a061298..e4b5cff84a 100644
--- a/src/backend/gporca/data/dxl/minidump/DqaHavingMax.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DqaHavingMax.mdp
@@ -24,7 +24,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="tsk" Rows="2000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" Rows="2000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DqaMax.mdp b/src/backend/gporca/data/dxl/minidump/DqaMax.mdp
index 0a6a3a1e3f..bc98458b40 100644
--- a/src/backend/gporca/data/dxl/minidump/DqaMax.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DqaMax.mdp
@@ -24,7 +24,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="tsk" Rows="2000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" Rows="2000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DqaMin.mdp b/src/backend/gporca/data/dxl/minidump/DqaMin.mdp
index 29ee1b9e03..26e2a5b1c0 100644
--- a/src/backend/gporca/data/dxl/minidump/DqaMin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DqaMin.mdp
@@ -24,7 +24,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="tsk" Rows="2000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" Rows="2000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DqaNoRedistribute.mdp b/src/backend/gporca/data/dxl/minidump/DqaNoRedistribute.mdp
index ad73a76af4..e14dd38ab8 100644
--- a/src/backend/gporca/data/dxl/minidump/DqaNoRedistribute.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DqaNoRedistribute.mdp
@@ -58,7 +58,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.49155.1.0" Name="foo" Rows="10000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.49155.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
+ <dxl:Relation Mdid="6.49155.1.0" Name="foo" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DqaSubqueryMax.mdp b/src/backend/gporca/data/dxl/minidump/DqaSubqueryMax.mdp
index 3e5a841f27..b029a3f469 100644
--- a/src/backend/gporca/data/dxl/minidump/DqaSubqueryMax.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DqaSubqueryMax.mdp
@@ -24,7 +24,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="tsk" Rows="2000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="tsk" IsTemporary="false" Rows="2000000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DuplicateGrpCol.mdp b/src/backend/gporca/data/dxl/minidump/DuplicateGrpCol.mdp
index 074288c8a0..07e0868be1 100644
--- a/src/backend/gporca/data/dxl/minidump/DuplicateGrpCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DuplicateGrpCol.mdp
@@ -319,7 +319,7 @@
<dxl:ColumnStatistics Mdid="1.169460.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.169460.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.169460.1.1" Name="foo" Rows="101808.000000"/>
- <dxl:Relation Mdid="6.169460.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.169460.1.1" Name="foo" IsTemporary="false" Rows="101808.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicBitmapBoolOp.mdp b/src/backend/gporca/data/dxl/minidump/DynamicBitmapBoolOp.mdp
index d724f4d03c..39d250dc3f 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicBitmapBoolOp.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicBitmapBoolOp.mdp
@@ -186,7 +186,7 @@
<dxl:InverseOp Mdid="0.525.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.671910.1.1" Name="p" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.671910.1.0" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.671910.1.0" Name="p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -484,7 +484,7 @@
<dxl:GPDBFunc Mdid="0.17079.1.0" Name="gp_partition_expansion" ReturnsSet="true" Stability="Volatile" IsStrict="true">
<dxl:ResultType Mdid="0.26.1.0"/>
</dxl:GPDBFunc>
- <dxl:Relation Mdid="6.671910.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.671910.1.1" Name="p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicBitmapIndexScan.mdp b/src/backend/gporca/data/dxl/minidump/DynamicBitmapIndexScan.mdp
index c7530b9eb6..b39afc4abc 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicBitmapIndexScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicBitmapIndexScan.mdp
@@ -18,7 +18,7 @@ see sql/DynamicBitmapIndexScan.sql
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.17408.1.1" Name="foo" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17408.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.17408.1.1" Name="foo" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="fid" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="9">
</dxl:Column>
@@ -184,7 +184,7 @@ see sql/DynamicBitmapIndexScan.sql
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16929.1.1" Name="outer_table" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16929.1.1" Name="outer_table" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,14">
+ <dxl:Relation Mdid="6.16929.1.1" Name="outer_table" IsTemporary="false" Rows="1.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,14">
<dxl:Columns>
<dxl:Column Name="flex_value_id" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="9">
</dxl:Column>
@@ -269,7 +269,7 @@ see sql/DynamicBitmapIndexScan.sql
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16959.1.1" Name="inner_table" Rows="0.000000" EmptyRelation="true"/>
<dxl:MDCast Mdid="3.1043.1.0;25.1.0" Name="text" BinaryCoercible="true" SourceTypeId="0.1043.1.0" DestinationTypeId="0.25.1.0" CastFuncId="0.0.0.0"/>
- <dxl:Relation Mdid="6.16959.1.1" Name="inner_table" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="5,6,4" PartitionColumns="3" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16959.1.1" Name="inner_table" IsTemporary="false" Rows="0.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="5,6,4" PartitionColumns="3" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="flex_value_set_id" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Basic.mdp b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Basic.mdp
index eace7b33ec..1d9cc783a0 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Basic.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Basic.mdp
@@ -53,7 +53,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.3723603.1.0" Name="foobar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.3723603.1.0" Name="foobar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.3723603.1.0" Name="foobar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="x1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Heterogeneous.mdp b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Heterogeneous.mdp
index 6018414e87..1b3cbcd12f 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Heterogeneous.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-Heterogeneous.mdp
@@ -143,7 +143,7 @@
<dxl:ResultType Mdid="0.2278.1.0"/>
</dxl:GPDBFunc>
<dxl:RelationStatistics Mdid="2.816512.1.1" Name="bm_dyn_test_onepart" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.816512.1.0" Name="bm_dyn_test_onepart" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.816512.1.0" Name="bm_dyn_test_onepart" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -405,7 +405,7 @@
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.816512.1.1" Name="bm_dyn_test_onepart" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.816512.1.1" Name="bm_dyn_test_onepart" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp
index e9d7bd2d1b..1db31ebb5a 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicBitmapTableScan-UUID.mdp
@@ -36,7 +36,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.20355.1.0" Name="test" Rows="100000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.20355.1.0" Name="test" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,4,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.20355.1.0" Name="test" IsTemporary="false" Rows="100000.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,4,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.2950.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexGet-OuterRefs.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexGet-OuterRefs.mdp
index 5befc6e729..d2895d8442 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexGet-OuterRefs.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexGet-OuterRefs.mdp
@@ -1611,7 +1611,7 @@
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.33038.1.0" Name="catalog_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="15,17" Keys="15,17,0;39,40,34" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.33038.1.0" Name="catalog_sales" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="15,17" Keys="15,17,0;39,40,34" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="cs_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -4320,7 +4320,7 @@
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.33438.1.0" Name="web_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17,0;39,40,34" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.33438.1.0" Name="web_sales" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17,0;39,40,34" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ws_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -7044,7 +7044,7 @@
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.33838.1.0" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;24,18">
+ <dxl:Relation Mdid="6.33838.1.0" Name="customer" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;24,18">
<dxl:Columns>
<dxl:Column Name="c_customer_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -8741,7 +8741,7 @@
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.33843.1.0" Name="customer_demographics" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;15,9">
+ <dxl:Relation Mdid="6.33843.1.0" Name="customer_demographics" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;15,9">
<dxl:Columns>
<dxl:Column Name="cd_demo_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -9456,7 +9456,7 @@
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.33848.1.0" Name="date_dim" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28" PartitionColumns="6" PartitionTypes="r">
+ <dxl:Relation Mdid="6.33848.1.0" Name="date_dim" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0,6;33,34,28" PartitionColumns="6" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="d_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexGetDroppedCols.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexGetDroppedCols.mdp
index b3ed9708f2..e781243f7e 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexGetDroppedCols.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexGetDroppedCols.mdp
@@ -1713,7 +1713,7 @@ EXPLAIN SELECT * FROM solo WHERE year_id=2017 AND month_id=6;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.28666.1.0" Name="solo" Rows="36.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.28666.1.0" Name="solo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="35,36,30" PartitionColumns="1,2" PartitionTypes="l,l">
+ <dxl:Relation Mdid="6.28666.1.0" Name="solo" IsTemporary="false" Rows="36.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="35,36,30" PartitionColumns="1,2" PartitionTypes="l,l">
<dxl:Columns>
<dxl:Column Name="some_id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp
index c69b17226f..a1e1133134 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-Homogenous.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.91323.1.0" Name="part_table" Rows="1000.000000" RelPages="15" RelAllVisible="15" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.91323.1.0" Name="part_table" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.91323.1.0" Name="part_table" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="part_key" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
index fa956907c0..96e7a33b08 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-InnerJoin.mdp
@@ -55,7 +55,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.17724.1.0" Name="test_basic_cover_index" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17724.1.0" Name="test_basic_cover_index" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17724.1.0" Name="test_basic_cover_index" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
@@ -1090,7 +1090,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.17728.1.0" Name="test_cover_index_on_pt" Rows="10.000000" RelPages="6" RelAllVisible="6" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17728.1.0" Name="test_cover_index_on_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.17728.1.0" Name="test_cover_index_on_pt" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
@@ -1165,7 +1165,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.17737.1.0" Name="test_cover_index_on_pt_1_prt_3" Rows="3.000000" RelPages="2" RelAllVisible="2" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17737.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17737.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
index a49edc1e8f..aa11b2782c 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScan-LeftJoin.mdp
@@ -953,7 +953,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.17762.1.0" Name="test_cover_index_on_pt_1_prt_3" Rows="3.000000" RelPages="2" RelAllVisible="2" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17762.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17762.1.0" Name="test_cover_index_on_pt_1_prt_3" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
@@ -1073,7 +1073,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.17749.1.0" Name="test_basic_cover_index" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17749.1.0" Name="test_basic_cover_index" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17749.1.0" Name="test_basic_cover_index" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
@@ -1095,7 +1095,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.17753.1.0" Name="test_cover_index_on_pt" Rows="10.000000" RelPages="6" RelAllVisible="6" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17753.1.0" Name="test_cover_index_on_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.17753.1.0" Name="test_cover_index_on_pt" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScanCosting.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScanCosting.mdp
index 744ebad855..a0c7a0329d 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScanCosting.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexOnlyScanCosting.mdp
@@ -407,7 +407,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.17535.1.0" Name="bar_pt" Rows="11.000000" RelPages="7" RelAllVisible="7" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17535.1.0" Name="bar_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.17535.1.0" Name="bar_pt" IsTemporary="false" Rows="11.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
@@ -438,7 +438,7 @@
</dxl:Partitions>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.17532.1.0" Name="foo" Rows="5.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.17532.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17532.1.0" Name="foo" IsTemporary="false" Rows="5.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolFalse.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolFalse.mdp
index 8866869f36..86259bfa93 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolFalse.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolFalse.mdp
@@ -54,7 +54,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.296682.1.0" Name="pp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.296682.1.0" Name="pp" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -420,7 +420,7 @@
<dxl:ResultType Mdid="0.26.1.0"/>
</dxl:GPDBFunc>
<dxl:RelationStatistics Mdid="2.296682.1.1" Name="pp" Rows="0.000000"/>
- <dxl:Relation Mdid="6.296682.1.1" Name="pp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.296682.1.1" Name="pp" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolTrue.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolTrue.mdp
index 79a4bf28a6..54eb021cb9 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolTrue.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-BoolTrue.mdp
@@ -54,7 +54,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.296682.1.0" Name="pp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.296682.1.0" Name="pp" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -420,7 +420,7 @@
<dxl:ResultType Mdid="0.26.1.0"/>
</dxl:GPDBFunc>
<dxl:RelationStatistics Mdid="2.296682.1.1" Name="pp" Rows="0.000000"/>
- <dxl:Relation Mdid="6.296682.1.1" Name="pp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.296682.1.1" Name="pp" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp
index 5a8b4aa139..5a9ebba6a8 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition-2.mdp
@@ -505,7 +505,7 @@
<dxl:ColumnStatistics Mdid="1.266602.1.1.5" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.266602.1.1.4" Name="xmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.266602.1.1" Name="p" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.266602.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.266602.1.1" Name="p" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition.mdp
index e58093e48e..a2ab4db289 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DefaultPartition.mdp
@@ -186,7 +186,7 @@
<dxl:ColumnStatistics Mdid="1.274855.1.1.5" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.274855.1.1.4" Name="xmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.274855.1.1" Name="ppp" Rows="0.000000"/>
- <dxl:Relation Mdid="6.274855.1.1" Name="ppp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.274855.1.1" Name="ppp" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedCols.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedCols.mdp
index 866a6745b4..a75e700310 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedCols.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedCols.mdp
@@ -165,7 +165,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32956.1.0" Name="foo" Rows="30.000000" RelPages="0" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32956.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,10,4" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.32956.1.0" Name="foo" IsTemporary="false" Rows="30.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,10,4" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="........pg.dropped.1........" Attno="1" Mdid="0.0.0.0" Nullable="true" ColWidth="8" IsDropped="true">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedColumns.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedColumns.mdp
index 930ea84641..54418fe077 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedColumns.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-DroppedColumns.mdp
@@ -91,7 +91,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:MDCast Mdid="3.1043.1.0;25.1.0" Name="text" BinaryCoercible="true" SourceTypeId="0.1043.1.0" DestinationTypeId="0.25.1.0" CastFuncId="0.0.0.0"/>
- <dxl:Relation Mdid="6.566955.1.0" Name="testbug_char5" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="11,5" PartitionColumns="0" PartitionTypes="l">
+ <dxl:Relation Mdid="6.566955.1.0" Name="testbug_char5" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="11,5" PartitionColumns="0" PartitionTypes="l">
<dxl:Columns>
<dxl:Column Name="timest" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="6">
</dxl:Column>
@@ -529,7 +529,7 @@
<dxl:ResultType Mdid="0.26.1.0"/>
</dxl:GPDBFunc>
<dxl:RelationStatistics Mdid="2.566955.1.1" Name="testbug_char5" Rows="0.000000"/>
- <dxl:Relation Mdid="6.566955.1.1" Name="testbug_char5" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="11,5" PartitionColumns="0" PartitionTypes="l">
+ <dxl:Relation Mdid="6.566955.1.1" Name="testbug_char5" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="11,5" PartitionColumns="0" PartitionTypes="l">
<dxl:Columns>
<dxl:Column Name="timest" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="6">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp
index 64b995e9f8..b3aeae99f0 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp
@@ -205,7 +205,7 @@
<dxl:ColumnStatistics Mdid="1.318877.1.1.0" Name="id" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.318877.1.1.1" Name="ship_date" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.318877.1.1" Name="test_orders_2" Rows="0.000000"/>
- <dxl:Relation Mdid="6.318877.1.1" Name="test_orders_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.318877.1.1" Name="test_orders_2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectEquality.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectEquality.mdp
index 2b06bac94a..0ada86e841 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectEquality.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectEquality.mdp
@@ -188,7 +188,7 @@
<dxl:GPDBFunc Mdid="0.6083.1.0" Name="gp_partition_propagation" ReturnsSet="false" Stability="Volatile" IsStrict="true">
<dxl:ResultType Mdid="0.2278.1.0"/>
</dxl:GPDBFunc>
- <dxl:Relation Mdid="6.161992.1.0" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.161992.1.0" Name="p" IsTemporary="false" Rows="9999.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -642,7 +642,7 @@
<dxl:ColumnStatistics Mdid="1.161992.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.161992.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.161992.1.1" Name="p" Rows="9999.000000"/>
- <dxl:Relation Mdid="6.161992.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.161992.1.1" Name="p" IsTemporary="false" Rows="9999.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectRange.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectRange.mdp
index f13187b549..dab775964f 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectRange.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-PartSelectRange.mdp
@@ -188,7 +188,7 @@
<dxl:GPDBFunc Mdid="0.6083.1.0" Name="gp_partition_propagation" ReturnsSet="false" Stability="Volatile" IsStrict="true">
<dxl:ResultType Mdid="0.2278.1.0"/>
</dxl:GPDBFunc>
- <dxl:Relation Mdid="6.161992.1.0" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.161992.1.0" Name="p" IsTemporary="false" Rows="9999.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -642,7 +642,7 @@
<dxl:ColumnStatistics Mdid="1.161992.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.161992.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.161992.1.1" Name="p" Rows="9999.000000"/>
- <dxl:Relation Mdid="6.161992.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.161992.1.1" Name="p" IsTemporary="false" Rows="9999.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp
index e03f3f0092..9822382de1 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp
@@ -129,7 +129,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.3723124.1.0" Name="p" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.3723124.1.0" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.3723124.1.0" Name="p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp
index 018d770837..915bc56caa 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp
@@ -179,7 +179,7 @@
<dxl:ColumnStatistics Mdid="1.318877.1.1.0" Name="id" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.318877.1.1.1" Name="ship_date" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.318877.1.1" Name="test_orders_2" Rows="0.000000"/>
- <dxl:Relation Mdid="6.318877.1.1" Name="test_orders_2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.318877.1.1" Name="test_orders_2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedPredicate.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedPredicate.mdp
index ec27a2a28f..cf44b44289 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedPredicate.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedPredicate.mdp
@@ -264,7 +264,7 @@
<dxl:ColumnStatistics Mdid="1.1637610.1.1.5" Name="c6" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1637610.1.1.4" Name="c5" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1637610.1.1" Name="heapaoco_list_part" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.1637610.1.0" Name="heapaoco_list_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="l">
+ <dxl:Relation Mdid="6.1637610.1.0" Name="heapaoco_list_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="l">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -409,7 +409,7 @@
</dxl:Or>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.1637610.1.1" Name="heapaoco_list_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="l">
+ <dxl:Relation Mdid="6.1637610.1.1" Name="heapaoco_list_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="l">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous.mdp
index d5ec29bc34..fb10bd8e3b 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous.mdp
@@ -194,7 +194,7 @@
<dxl:ColumnStatistics Mdid="1.27119.1.1.7" Name="tableoid" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.27119.1.1.6" Name="cmax" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.27119.1.1" Name="p" Rows="0.000000"/>
- <dxl:Relation Mdid="6.27119.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.27119.1.1" Name="p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp
index 4ff868fb19..2b7f3afd8c 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp
@@ -213,7 +213,7 @@
<dxl:ColumnStatistics Mdid="1.310650.1.1.0" Name="id" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.310650.1.1.1" Name="ship_date" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.310650.1.1" Name="test_orders" Rows="0.000000"/>
- <dxl:Relation Mdid="6.310650.1.1" Name="test_orders" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.310650.1.1" Name="test_orders" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp
index 5632d90783..7982206e92 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp
@@ -197,7 +197,7 @@
<dxl:ColumnStatistics Mdid="1.310650.1.1.0" Name="id" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.310650.1.1.1" Name="ship_date" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.310650.1.1" Name="test_orders" Rows="0.000000"/>
- <dxl:Relation Mdid="6.310650.1.1" Name="test_orders" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.310650.1.1" Name="test_orders" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous.mdp
index 9d32d97fef..e5ae5ce267 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous.mdp
@@ -176,7 +176,7 @@
<dxl:ColumnStatistics Mdid="1.3722808.1.0.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.3722808.1.0.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.3722808.1.0" Name="p" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.3722808.1.0" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.3722808.1.0" Name="p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-OpenEndedPartitions.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-OpenEndedPartitions.mdp
index dcd19a48b0..5ab014e216 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-OpenEndedPartitions.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-OpenEndedPartitions.mdp
@@ -87,7 +87,7 @@
</dxl:GPDBFunc>
<dxl:ColumnStatistics Mdid="1.1122228.1.1.7" Name="tableoid" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1122228.1.1.6" Name="cmax" Width="4.000000"/>
- <dxl:Relation Mdid="6.1122228.1.0" Name="t2_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.1122228.1.0" Name="t2_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -429,7 +429,7 @@
<dxl:ColumnStatistics Mdid="1.1122228.1.1.3" Name="xmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1122228.1.1.2" Name="ctid" Width="6.000000"/>
<dxl:RelationStatistics Mdid="2.1122228.1.1" Name="t2_part" Rows="0.000000"/>
- <dxl:Relation Mdid="6.1122228.1.1" Name="t2_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.1122228.1.1" Name="t2_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Relabel.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Relabel.mdp
index c17df0f2c2..80e37b5fec 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Relabel.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Relabel.mdp
@@ -118,7 +118,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.607198.1.1" Name="p" Rows="101000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.607198.1.0" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.607198.1.0" Name="p" IsTemporary="false" Rows="101000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -386,7 +386,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.607198.1.1" Name="p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.607198.1.1" Name="p" IsTemporary="false" Rows="101000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScanCosting.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScanCosting.mdp
index ae9216076e..2a95294920 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScanCosting.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScanCosting.mdp
@@ -344,7 +344,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.17494.1.0" Name="foo" Rows="0.000000" RelPages="1" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.17494.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.17494.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
@@ -364,7 +364,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.17497.1.0" Name="bar_pt" Rows="0.000000" RelPages="6" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.17497.1.0" Name="bar_pt" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.17497.1.0" Name="bar_pt" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp
index 5744db2b07..a94bd34305 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp
@@ -30,7 +30,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="bar1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="bar1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16391.1.0" Name="bar1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -57,7 +57,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16394.1.0" Name="foo1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16394.1.0" Name="foo1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16394.1.0" Name="foo1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp
index 5594bf76f4..1bea6fe731 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="bar" Rows="100403.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="bar" IsTemporary="false" Rows="100403.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="foo" Rows="100001784.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16388.1.0" Name="foo" IsTemporary="false" Rows="100001784.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp
index f77cb4cfd0..8efcd8ab77 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp
@@ -49,7 +49,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -76,7 +76,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp
index 4c50392dcb..3b28a8534d 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="bar1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="bar1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16391.1.0" Name="bar1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16394.1.0" Name="foo1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16394.1.0" Name="foo1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16394.1.0" Name="foo1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp
index aeb7681a20..055dc6915c 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp
@@ -65,7 +65,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics EmptyRelation="false" Mdid="2.16385.1.0" Name="foo" Rows="100001784.000000"/>
- <dxl:Relation DistributionColumns="0" DistributionPolicy="Hash" IsTemporary="false" StorageType="Heap" Keys="9,3" Mdid="6.16385.1.0" Name="foo">
+ <dxl:Relation DistributionColumns="0" DistributionPolicy="Hash" IsTemporary="false" Rows="100001784.000000" StorageType="Heap" Keys="9,3" Mdid="6.16385.1.0" Name="foo">
<dxl:Columns>
<dxl:Column Attno="1" ColWidth="4" Mdid="0.23.1.0" Name="j1" Nullable="true">
</dxl:Column>
@@ -92,7 +92,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics EmptyRelation="false" Mdid="2.16388.1.0" Name="bar" Rows="100023.000000"/>
- <dxl:Relation DistributionColumns="0" DistributionPolicy="Hash" IsTemporary="false" StorageType="Heap" Keys="9,3" Mdid="6.16388.1.0" Name="bar">
+ <dxl:Relation DistributionColumns="0" DistributionPolicy="Hash" IsTemporary="false" Rows="100023.000000" StorageType="Heap" Keys="9,3" Mdid="6.16388.1.0" Name="bar">
<dxl:Columns>
<dxl:Column Attno="1" ColWidth="4" Mdid="0.23.1.0" Name="j2" Nullable="true">
</dxl:Column>
@@ -2512,7 +2512,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation DistributionPolicy="Random" IsTemporary="false" StorageType="Heap" Keys="9,3" Mdid="6.16408.1.0" Name="jazz">
+ <dxl:Relation DistributionPolicy="Random" IsTemporary="false" Rows="99028.000000" StorageType="Heap" Keys="9,3" Mdid="6.16408.1.0" Name="jazz">
<dxl:Columns>
<dxl:Column Attno="1" ColWidth="4" Mdid="0.23.1.0" Name="j2" Nullable="true">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp
index 8a0c6a89c6..264687a59c 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp
@@ -30,7 +30,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="bar" Rows="100403.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="bar" IsTemporary="false" Rows="100403.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -57,7 +57,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="foo" Rows="100001784.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16388.1.0" Name="foo" IsTemporary="false" Rows="100001784.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp
index 5d4dbc2c89..6a69a122a3 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp
@@ -57,7 +57,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -84,7 +84,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp
index a2aa8b10fc..1bf3c9b197 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp
@@ -51,7 +51,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16387.1.0" Name="bar" Rows="99539.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16387.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16387.1.0" Name="bar" IsTemporary="false" Rows="99539.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j2" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -78,7 +78,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16384.1.0" Name="foo" Rows="100001784.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16384.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16384.1.0" Name="foo" IsTemporary="false" Rows="100001784.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="j1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin.mdp b/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin.mdp
index 3a2cb3c9b5..1d54c7582e 100644
--- a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin.mdp
@@ -104,7 +104,7 @@
<dxl:ColumnStatistics Mdid="1.1941602.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1941602.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1941602.1.1" Name="bar" Rows="982808.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1941602.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1941602.1.0" Name="bar" IsTemporary="false" Rows="982808.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="b1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -128,7 +128,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1941602.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1941602.1.1" Name="bar" IsTemporary="false" Rows="982808.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="b1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -399,7 +399,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1006084.1.1" Name="foo" Rows="20.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1006084.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1006084.1.1" Name="foo" IsTemporary="false" Rows="20.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin3.mdp b/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin3.mdp
index 2a47d83967..c583dbeff3 100644
--- a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin3.mdp
@@ -124,7 +124,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.1976539.1.1" Name="web_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17,0;39,40,34" PartitionColumns="0">
+ <dxl:Relation Mdid="6.1976539.1.1" Name="web_sales" IsTemporary="false" Rows="716144.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17,0;39,40,34" PartitionColumns="0">
<dxl:Columns>
<dxl:Column Name="ws_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -13299,7 +13299,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1974718.1.1" Name="customer" Rows="100138.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1974718.1.0" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;24,18">
+ <dxl:Relation Mdid="6.1974718.1.0" Name="customer" IsTemporary="false" Rows="100138.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;24,18">
<dxl:Columns>
<dxl:Column Name="c_customer_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -13355,7 +13355,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.1974718.1.1" Name="customer" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;24,18">
+ <dxl:Relation Mdid="6.1974718.1.1" Name="customer" IsTemporary="false" Rows="100138.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;24,18">
<dxl:Columns>
<dxl:Column Name="c_customer_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EffectsOfJoinFilter.mdp b/src/backend/gporca/data/dxl/minidump/EffectsOfJoinFilter.mdp
index 76076d24a7..70914d2bee 100644
--- a/src/backend/gporca/data/dxl/minidump/EffectsOfJoinFilter.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EffectsOfJoinFilter.mdp
@@ -104,7 +104,7 @@
<dxl:ColumnStatistics Mdid="1.1941602.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1941602.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1941602.1.1" Name="bar" Rows="1001718.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1941602.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1941602.1.1" Name="bar" IsTemporary="false" Rows="1001718.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="b1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -311,7 +311,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1006084.1.1" Name="foo" Rows="200.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1006084.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1006084.1.1" Name="foo" IsTemporary="false" Rows="200.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EqualityJoin.mdp b/src/backend/gporca/data/dxl/minidump/EqualityJoin.mdp
index 02ed7f56ce..04069b6c5a 100644
--- a/src/backend/gporca/data/dxl/minidump/EqualityJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EqualityJoin.mdp
@@ -104,7 +104,7 @@
<dxl:ColumnStatistics Mdid="1.1941602.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.1941602.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.1941602.1.1" Name="bar" Rows="1001718.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1941602.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1941602.1.1" Name="bar" IsTemporary="false" Rows="1001718.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="b1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -311,7 +311,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1006084.1.1" Name="foo" Rows="200.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1006084.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1006084.1.1" Name="foo" IsTemporary="false" Rows="200.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp b/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp
index dc49221faa..f7872aba86 100644
--- a/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp
@@ -48,7 +48,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16384.1.0" Name="test" Rows="1000001.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16384.1.0" Name="test" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16384.1.0" Name="test" IsTemporary="false" Rows="1000001.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="d" Attno="1" Mdid="0.1082.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Supported.mdp b/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Supported.mdp
index 5904164218..e21bb7f231 100644
--- a/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Supported.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Supported.mdp
@@ -47,7 +47,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.2664946.1.0" Name="foo" Rows="100000.000000" RelPages="135" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2664946.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.2664946.1.0" Name="foo" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Unsupported.mdp b/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Unsupported.mdp
index ae3879927e..1084fc2e22 100644
--- a/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Unsupported.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EquiJoinOnExpr-Unsupported.mdp
@@ -100,7 +100,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.2664940.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.2664940.1.0" Name="foo" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
<dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp
index 0a411953ca..2fcc274227 100644
--- a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp
@@ -1177,7 +1177,7 @@
</dxl:Type>
<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:RelationStatistics Mdid="2.24657.1.1" Name="partsupp" Rows="801020.000000"/>
- <dxl:Relation Mdid="6.24657.1.1" Name="partsupp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.24657.1.1" Name="partsupp" IsTemporary="false" Rows="801020.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="ps_partkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -1544,7 +1544,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.24726.1.1" Name="lineitem" Rows="6001814.000000"/>
- <dxl:Relation Mdid="6.24726.1.1" Name="lineitem" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
+ <dxl:Relation Mdid="6.24726.1.1" Name="lineitem" IsTemporary="false" Rows="6001814.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
<dxl:Columns>
<dxl:Column Name="l_orderkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp
index 10629467b3..8a5c617aa4 100644
--- a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp
@@ -1177,7 +1177,7 @@
</dxl:Type>
<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:RelationStatistics Mdid="2.24657.1.1" Name="partsupp" Rows="801020.000000"/>
- <dxl:Relation Mdid="6.24657.1.1" Name="partsupp" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.24657.1.1" Name="partsupp" IsTemporary="false" Rows="801020.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="ps_partkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -1544,7 +1544,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.24726.1.1" Name="lineitem" Rows="6001814.000000"/>
- <dxl:Relation Mdid="6.24726.1.1" Name="lineitem" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
+ <dxl:Relation Mdid="6.24726.1.1" Name="lineitem" IsTemporary="false" Rows="6001814.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
<dxl:Columns>
<dxl:Column Name="l_orderkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EquivClassesAndOr.mdp b/src/backend/gporca/data/dxl/minidump/EquivClassesAndOr.mdp
index c3668e1c94..c54a5461ce 100644
--- a/src/backend/gporca/data/dxl/minidump/EquivClassesAndOr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EquivClassesAndOr.mdp
@@ -135,7 +135,7 @@
<dxl:ColumnStatistics Mdid="1.824216.1.1.2" Name="r3" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.824170.1.1" Name="t" Rows="0.000000"/>
<dxl:RelationStatistics Mdid="2.824216.1.1" Name="r" Rows="0.000000"/>
- <dxl:Relation Mdid="6.824170.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.824170.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="t1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -161,7 +161,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.824216.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.824216.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="r1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -194,7 +194,7 @@
<dxl:ColumnStatistics Mdid="1.824216.1.1.5" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.824216.1.1.4" Name="xmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.824193.1.1" Name="s" Rows="0.000000"/>
- <dxl:Relation Mdid="6.824193.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.824193.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="s1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EquivClassesIntersect.mdp b/src/backend/gporca/data/dxl/minidump/EquivClassesIntersect.mdp
index aef6d799d0..8b10b13aae 100644
--- a/src/backend/gporca/data/dxl/minidump/EquivClassesIntersect.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EquivClassesIntersect.mdp
@@ -156,7 +156,7 @@
<dxl:ColumnStatistics Mdid="1.969810.1.1.3" Name="ctid" Width="6.000000"/>
<dxl:ColumnStatistics Mdid="1.969810.1.1.2" Name="c" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.969810.1.1" Name="foo" Rows="0.000000"/>
- <dxl:Relation Mdid="6.969810.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.969810.1.1" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -191,7 +191,7 @@
<dxl:ColumnStatistics Mdid="1.969810.1.1.1" Name="b" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.969810.1.1.0" Name="a" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.969833.1.1" Name="bar" Rows="0.000000"/>
- <dxl:Relation Mdid="6.969833.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.969833.1.1" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="x" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp b/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp
index 596211a177..5aa10d2e8b 100644
--- a/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EquivClassesLimit.mdp
@@ -340,7 +340,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.735897.1.1" Name="foo" Rows="100.000000"/>
- <dxl:Relation Mdid="6.735897.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.735897.1.1" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="x" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EquivClassesUnion.mdp b/src/backend/gporca/data/dxl/minidump/EquivClassesUnion.mdp
index cab026edeb..f673ab0885 100644
--- a/src/backend/gporca/data/dxl/minidump/EquivClassesUnion.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EquivClassesUnion.mdp
@@ -128,7 +128,7 @@
<dxl:ColumnStatistics Mdid="1.969810.1.1.3" Name="ctid" Width="6.000000"/>
<dxl:ColumnStatistics Mdid="1.969810.1.1.2" Name="c" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.969810.1.1" Name="foo" Rows="0.000000"/>
- <dxl:Relation Mdid="6.969810.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.969810.1.1" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -163,7 +163,7 @@
<dxl:ColumnStatistics Mdid="1.969810.1.1.1" Name="b" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.969810.1.1.0" Name="a" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.969833.1.1" Name="bar" Rows="0.000000"/>
- <dxl:Relation Mdid="6.969833.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.969833.1.1" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="x" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp b/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp
index e71239f62e..2a3999a9fd 100644
--- a/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp
@@ -59,7 +59,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.81921.1.0" Name="tab1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.81921.1.0" Name="tab1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.81921.1.0" Name="tab1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -82,7 +82,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.81927.1.0" Name="tab3" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.81927.1.0" Name="tab3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.81927.1.0" Name="tab3" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="region" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -107,7 +107,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.81924.1.0" Name="tab2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.81924.1.0" Name="tab2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.81924.1.0" Name="tab2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="key" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/EstimateJoinRowsForCastPredicates.mdp b/src/backend/gporca/data/dxl/minidump/EstimateJoinRowsForCastPredicates.mdp
index e7df98fdb1..1c10068076 100644
--- a/src/backend/gporca/data/dxl/minidump/EstimateJoinRowsForCastPredicates.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EstimateJoinRowsForCastPredicates.mdp
@@ -269,7 +269,7 @@ explain select * from A,B where A.j=B.j;
<dxl:ColumnStatistics Mdid="1.57964541.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.57964541.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.57964515.1.1" Name="a" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57964515.1.1" Name="a" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57964515.1.1" Name="a" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -421,7 +421,7 @@ explain select * from A,B where A.j=B.j;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.57964541.1.1" Name="b" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.57964541.1.1" Name="b" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57964541.1.1" Name="b" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Except.mdp b/src/backend/gporca/data/dxl/minidump/Except.mdp
index 3804e65fe9..54e2dd91e5 100644
--- a/src/backend/gporca/data/dxl/minidump/Except.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Except.mdp
@@ -207,7 +207,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.17802.1.1" Name="bar" Rows="10.000000"/>
- <dxl:Relation Mdid="6.17802.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.17802.1.1" Name="bar" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -234,7 +234,7 @@
<dxl:ColumnStatistics Mdid="1.17825.1.1.7" Name="gp_segment_id" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17825.1.1.6" Name="tableoid" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.17825.1.1" Name="foo" Rows="10.000000"/>
- <dxl:Relation Mdid="6.17825.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.17825.1.1" Name="foo" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExceptAllCompatibleDataType.mdp b/src/backend/gporca/data/dxl/minidump/ExceptAllCompatibleDataType.mdp
index 07539d7126..9b25d31618 100644
--- a/src/backend/gporca/data/dxl/minidump/ExceptAllCompatibleDataType.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExceptAllCompatibleDataType.mdp
@@ -208,7 +208,7 @@
<dxl:MDCast Mdid="3.20.1.0;26.1.0" Name="oid" BinaryCoercible="false" SourceTypeId="0.20.1.0" DestinationTypeId="0.26.1.0" CastFuncId="0.1287.1.0"/>
<dxl:MDCast Mdid="3.23.1.0;20.1.0" Name="int8" BinaryCoercible="false" SourceTypeId="0.23.1.0" DestinationTypeId="0.20.1.0" CastFuncId="0.481.1.0"/>
<dxl:RelationStatistics Mdid="2.34228.1.1" Name="s" Rows="0.000000"/>
- <dxl:Relation Mdid="6.34228.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.34228.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -244,7 +244,7 @@
<dxl:ColumnStatistics Mdid="1.34205.1.1.6" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.34251.1.1" Name="t" Rows="0.000000"/>
<dxl:RelationStatistics Mdid="2.34205.1.1" Name="r" Rows="0.000000"/>
- <dxl:Relation Mdid="6.34251.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.34251.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -272,7 +272,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.34205.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.34205.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExistentialSubquriesInsideScalarExpression.mdp b/src/backend/gporca/data/dxl/minidump/ExistentialSubquriesInsideScalarExpression.mdp
index 48299cd587..74f439bcae 100644
--- a/src/backend/gporca/data/dxl/minidump/ExistentialSubquriesInsideScalarExpression.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExistentialSubquriesInsideScalarExpression.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="t2" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -83,7 +83,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16394.1.0" Name="t3" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16394.1.0" Name="t3" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Exists-SuperfluousEquality.mdp b/src/backend/gporca/data/dxl/minidump/Exists-SuperfluousEquality.mdp
index 8b95bff9f3..b2f6bb46ab 100644
--- a/src/backend/gporca/data/dxl/minidump/Exists-SuperfluousEquality.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Exists-SuperfluousEquality.mdp
@@ -250,7 +250,7 @@
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.40971.1.1" Name="x" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.40971.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40971.1.1" Name="x" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExistsSubqInsideExpr.mdp b/src/backend/gporca/data/dxl/minidump/ExistsSubqInsideExpr.mdp
index 77ce626971..083640cc19 100644
--- a/src/backend/gporca/data/dxl/minidump/ExistsSubqInsideExpr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExistsSubqInsideExpr.mdp
@@ -30,7 +30,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -57,7 +57,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16391.1.0" Name="t2" Rows="2.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16391.1.0" Name="t2" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp
index e379d33258..0741c9f9b3 100644
--- a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp
@@ -92,7 +92,7 @@ select * from t full join s on t1 = s1;
<dxl:ColumnStatistics Mdid="1.25359.1.1.3" Name="ctid" Width="6.000000"/>
<dxl:ColumnStatistics Mdid="1.25359.1.1.2" Name="t3" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.25359.1.1" Name="t" Rows="0.000000"/>
- <dxl:Relation Mdid="6.25359.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.25359.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="t1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -123,7 +123,7 @@ select * from t full join s on t1 = s1;
<dxl:ColumnStatistics Mdid="1.25359.1.1.5" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.25359.1.1.4" Name="xmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.25382.1.1" Name="s" Rows="0.000000"/>
- <dxl:Relation Mdid="6.25382.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.25382.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="s1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp
index 5426dc07f7..570c131d54 100644
--- a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp
@@ -123,7 +123,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
<dxl:ColumnStatistics Mdid="1.17311.1.1.5" Name="cmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17311.1.1.4" Name="xmax" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.17311.1.1" Name="s" Rows="0.000000"/>
- <dxl:Relation Mdid="6.17311.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.17311.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExpandJoinOrder.mdp b/src/backend/gporca/data/dxl/minidump/ExpandJoinOrder.mdp
index ee6711397e..50d395cc38 100644
--- a/src/backend/gporca/data/dxl/minidump/ExpandJoinOrder.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExpandJoinOrder.mdp
@@ -169,7 +169,7 @@
<dxl:ColumnStatistics Mdid="1.90124.1.1.5" Name="tableoid" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.90124.1.1.4" Name="ctid" Width="6.000000"/>
<dxl:RelationStatistics Mdid="2.91393.1.1" Name="t49" Rows="10.000000"/>
- <dxl:Relation Mdid="6.91393.1.1" Name="t49" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,14">
+ <dxl:Relation Mdid="6.91393.1.1" Name="t49" IsTemporary="false" Rows="10.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="16,14">
<dxl:Columns>
<dxl:Column Name="c586" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="67753">
</dxl:Column>
@@ -210,7 +210,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.92365.1.1" Name="t86" Rows="10.000000"/>
- <dxl:Relation Mdid="6.92365.1.1" Name="t86" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,9">
+ <dxl:Relation Mdid="6.92365.1.1" Name="t86" IsTemporary="false" Rows="10.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,9">
<dxl:Columns>
<dxl:Column Name="c1047" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="75051">
</dxl:Column>
@@ -241,7 +241,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.92635.1.1" Name="t97" Rows="10.000000"/>
- <dxl:Relation Mdid="6.92635.1.1" Name="t97" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,11">
+ <dxl:Relation Mdid="6.92635.1.1" Name="t97" IsTemporary="false" Rows="10.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,11">
<dxl:Columns>
<dxl:Column Name="c1190" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="74602">
</dxl:Column>
@@ -289,7 +289,7 @@
<dxl:ColumnStatistics Mdid="1.92068.1.1.6" Name="c916" Width="65586.000000"/>
<dxl:ColumnStatistics Mdid="1.92068.1.1.14" Name="c924" Width="67649.000000"/>
<dxl:RelationStatistics Mdid="2.90124.1.1" Name="t0" Rows="10.000000"/>
- <dxl:Relation Mdid="6.90124.1.1" Name="t0" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,4">
+ <dxl:Relation Mdid="6.90124.1.1" Name="t0" IsTemporary="false" Rows="10.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,4">
<dxl:Columns>
<dxl:Column Name="c0" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="55337">
</dxl:Column>
@@ -315,7 +315,7 @@
<dxl:ColumnStatistics Mdid="1.92365.1.1.3" Name="c1050" Width="99445.000000"/>
<dxl:ColumnStatistics Mdid="1.90124.1.1.6" Name="gp_segment_id" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.92068.1.1" Name="t74" Rows="10.000000"/>
- <dxl:Relation Mdid="6.92068.1.1" Name="t74" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,20">
+ <dxl:Relation Mdid="6.92068.1.1" Name="t74" IsTemporary="false" Rows="10.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,20">
<dxl:Columns>
<dxl:Column Name="c910" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="58834">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExpandNAryJoinGreedyWithLOJOnly.mdp b/src/backend/gporca/data/dxl/minidump/ExpandNAryJoinGreedyWithLOJOnly.mdp
index 98d2c94a75..d789841f7c 100644
--- a/src/backend/gporca/data/dxl/minidump/ExpandNAryJoinGreedyWithLOJOnly.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExpandNAryJoinGreedyWithLOJOnly.mdp
@@ -76,7 +76,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.40966.1.0" Name="t3" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.40966.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.40966.1.0" Name="t3" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -103,7 +103,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.40960.1.0" Name="t1" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.40960.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.40960.1.0" Name="t1" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -130,7 +130,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.40963.1.0" Name="t2" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.40963.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.40963.1.0" Name="t2" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -157,7 +157,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.40972.1.0" Name="t5" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.40972.1.0" Name="t5" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.40972.1.0" Name="t5" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -184,7 +184,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.40975.1.0" Name="t6" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.40975.1.0" Name="t6" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.40975.1.0" Name="t6" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -211,7 +211,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.40969.1.0" Name="t4" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.40969.1.0" Name="t4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.40969.1.0" Name="t4" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExprOnScSubqueryWithOuterRef.mdp b/src/backend/gporca/data/dxl/minidump/ExprOnScSubqueryWithOuterRef.mdp
index 2ccd939e5a..f19dc41a63 100644
--- a/src/backend/gporca/data/dxl/minidump/ExprOnScSubqueryWithOuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExprOnScSubqueryWithOuterRef.mdp
@@ -131,7 +131,7 @@ select (select b from bar) + 1 from foo;
<dxl:Commutator Mdid="0.551.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.242741.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.242741.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.242741.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -159,7 +159,7 @@ select (select b from bar) + 1 from foo;
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.242738.1.0" Name="foo" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.242738.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.242738.1.0" Name="foo" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExternalTable1.mdp b/src/backend/gporca/data/dxl/minidump/ExternalTable1.mdp
index daf4f1c14a..a6c367c1ad 100644
--- a/src/backend/gporca/data/dxl/minidump/ExternalTable1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExternalTable1.mdp
@@ -137,7 +137,7 @@
<dxl:ColumnStatistics Mdid="1.18324.1.1.1" Name="n_name" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.18324.1.1.0" Name="n_nationkey" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.18324.1.1" Name="ext_1" Rows="1000000.000000"/>
- <dxl:Relation Mdid="6.18324.1.1" Name="ext_1" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Random" Keys="10,4" ForeignServer="0.91908.1.0">
+ <dxl:Relation Mdid="6.18324.1.1" Name="ext_1" IsTemporary="false" Rows="1000000.000000" StorageType="Foreign" DistributionPolicy="Random" Keys="10,4" ForeignServer="0.91908.1.0">
<dxl:Columns>
<dxl:Column Name="n_nationkey" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExternalTable2.mdp b/src/backend/gporca/data/dxl/minidump/ExternalTable2.mdp
index 3066ae0416..f29760b9fb 100644
--- a/src/backend/gporca/data/dxl/minidump/ExternalTable2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExternalTable2.mdp
@@ -121,7 +121,7 @@
<dxl:ColumnStatistics Mdid="1.18347.1.1.7" Name="gp_segment_id" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.18347.1.1.6" Name="tableoid" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.18347.1.1" Name="ext_2" Rows="1000000.000000"/>
- <dxl:Relation Mdid="6.18347.1.1" Name="ext_2" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Random" Keys="7,1" ForeignServer="0.91908.1.0">
+ <dxl:Relation Mdid="6.18347.1.1" Name="ext_2" IsTemporary="false" Rows="1000000.000000" StorageType="Foreign" DistributionPolicy="Random" Keys="7,1" ForeignServer="0.91908.1.0">
<dxl:Columns>
<dxl:Column Name="x" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExternalTable3.mdp b/src/backend/gporca/data/dxl/minidump/ExternalTable3.mdp
index 7b59c58807..a14a2d7cdf 100644
--- a/src/backend/gporca/data/dxl/minidump/ExternalTable3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExternalTable3.mdp
@@ -119,7 +119,7 @@
<dxl:ColumnStatistics Mdid="1.18370.1.1.1" Name="ctid" Width="6.000000"/>
<dxl:ColumnStatistics Mdid="1.18370.1.1.0" Name="x" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.18370.1.1" Name="ext_3" Rows="1000000.000000"/>
- <dxl:Relation Mdid="6.18370.1.1" Name="ext_3" IsTemporary="false" StorageType="Foreign" DistributionPolicy="MasterOnly" Keys="7,1" ForeignServer="0.91908.1.0">
+ <dxl:Relation Mdid="6.18370.1.1" Name="ext_3" IsTemporary="false" Rows="1000000.000000" StorageType="Foreign" DistributionPolicy="MasterOnly" Keys="7,1" ForeignServer="0.91908.1.0">
<dxl:Columns>
<dxl:Column Name="x" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExternalTable4.mdp b/src/backend/gporca/data/dxl/minidump/ExternalTable4.mdp
index 0c32d08eb6..3fd704c9e8 100644
--- a/src/backend/gporca/data/dxl/minidump/ExternalTable4.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExternalTable4.mdp
@@ -121,7 +121,7 @@
<dxl:ColumnStatistics Mdid="1.18393.1.1.7" Name="gp_segment_id" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.18393.1.1.6" Name="tableoid" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.18393.1.1" Name="ext_4" Rows="1000000.000000"/>
- <dxl:Relation Mdid="6.18393.1.1" Name="ext_4" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Random" Keys="7,1" ForeignServer="0.91908.1.0">
+ <dxl:Relation Mdid="6.18393.1.1" Name="ext_4" IsTemporary="false" Rows="1000000.000000" StorageType="Foreign" DistributionPolicy="Random" Keys="7,1" ForeignServer="0.91908.1.0">
<dxl:Columns>
<dxl:Column Name="x" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExternalTableWithFilter.mdp b/src/backend/gporca/data/dxl/minidump/ExternalTableWithFilter.mdp
index 09c3f2edd4..f07c523017 100644
--- a/src/backend/gporca/data/dxl/minidump/ExternalTableWithFilter.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExternalTableWithFilter.mdp
@@ -142,7 +142,7 @@
<dxl:ColumnStatistics Mdid="1.133758.1.1.7" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.133758.1.1.6" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.133758.1.1" Name="ext_nation" Rows="1000000.000000"/>
- <dxl:Relation Mdid="6.133758.1.1" Name="ext_nation" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Random" Keys="10,4" ForeignServer="0.91908.1.0">
+ <dxl:Relation Mdid="6.133758.1.1" Name="ext_nation" IsTemporary="false" Rows="1000000.000000" StorageType="Foreign" DistributionPolicy="Random" Keys="10,4" ForeignServer="0.91908.1.0">
<dxl:Columns>
<dxl:Column Name="n_nationkey" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExtractOneBindingFromScalarGroups.mdp b/src/backend/gporca/data/dxl/minidump/ExtractOneBindingFromScalarGroups.mdp
index 3e163ee25f..d66d874998 100644
--- a/src/backend/gporca/data/dxl/minidump/ExtractOneBindingFromScalarGroups.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExtractOneBindingFromScalarGroups.mdp
@@ -29,7 +29,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.32774.1.0" Name="t3" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32774.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32774.1.0" Name="t3" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -56,7 +56,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32768.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32768.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32768.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -81,7 +81,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32780.1.0" Name="t5" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32780.1.0" Name="t5" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32780.1.0" Name="t5" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -111,7 +111,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.32777.1.0" Name="t4" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32777.1.0" Name="t4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32777.1.0" Name="t4" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp
index 4de3049628..5a44fb0fba 100644
--- a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisjWithComputedColumns.mdp
@@ -181,7 +181,7 @@ where (cd.dyear = 2001 and s.tickets_cnt > 3) or (cd.dmoy = 4 and s.tickets_c
<dxl:InverseOp Mdid="0.420.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.15667435.1.1" Name="cust" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.15667435.1.1" Name="cust" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.15667435.1.1" Name="cust" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="cid" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -218,7 +218,7 @@ where (cd.dyear = 2001 and s.tickets_cnt > 3) or (cd.dmoy = 4 and s.tickets_c
<dxl:ColumnStatistics Mdid="1.15667435.1.1.5" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.15667435.1.1.4" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.15667463.1.1" Name="datedim" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.15667463.1.1" Name="datedim" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.15667463.1.1" Name="datedim" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="date_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -260,7 +260,7 @@ where (cd.dyear = 2001 and s.tickets_cnt > 3) or (cd.dmoy = 4 and s.tickets_c
<dxl:Commutator Mdid="0.96.1.0"/>
<dxl:InverseOp Mdid="0.518.1.0"/>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.15667489.1.1" Name="sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="11,5">
+ <dxl:Relation Mdid="6.15667489.1.1" Name="sales" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="item_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Factorized-Preds.mdp b/src/backend/gporca/data/dxl/minidump/Factorized-Preds.mdp
index 0b3489c340..bca0868480 100644
--- a/src/backend/gporca/data/dxl/minidump/Factorized-Preds.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Factorized-Preds.mdp
@@ -134,7 +134,7 @@
<dxl:InverseOp Mdid="0.523.1.0"/>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.32780.1.1" Name="x" Rows="0.000000"/>
- <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32780.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -163,7 +163,7 @@
<dxl:ColumnStatistics Mdid="1.32780.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.32780.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="0.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FieldSelect.mdp b/src/backend/gporca/data/dxl/minidump/FieldSelect.mdp
index 1edd3f9a32..9fdeb8edf2 100644
--- a/src/backend/gporca/data/dxl/minidump/FieldSelect.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FieldSelect.mdp
@@ -187,7 +187,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.17311.1.0" Name="foo" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.17311.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="8,2">
+ <dxl:Relation Mdid="6.17311.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="item" Attno="1" Mdid="0.17310.1.0" Nullable="true" ColWidth="8"/>
<dxl:Column Name="count" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
diff --git a/src/backend/gporca/data/dxl/minidump/FilterScalarCast.mdp b/src/backend/gporca/data/dxl/minidump/FilterScalarCast.mdp
index 7919f721f4..77ece42a3d 100644
--- a/src/backend/gporca/data/dxl/minidump/FilterScalarCast.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FilterScalarCast.mdp
@@ -23,7 +23,7 @@ EXPLAIN SELECT * FROM foo WHERE b IN ('xyz', 'asds');
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.32768.1.0" Name="foo" Rows="99735.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32768.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32768.1.0" Name="foo" IsTemporary="false" Rows="99735.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FoldedArrayCmp.mdp b/src/backend/gporca/data/dxl/minidump/FoldedArrayCmp.mdp
index 634f9f5c15..3efc02807b 100644
--- a/src/backend/gporca/data/dxl/minidump/FoldedArrayCmp.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FoldedArrayCmp.mdp
@@ -130,7 +130,7 @@
<dxl:ColumnStatistics Mdid="1.17029.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17029.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.17029.1.1" Name="r" Rows="1000.000000"/>
- <dxl:Relation Mdid="6.17029.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17029.1.1" Name="r" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ForeignPartOneTimeFilterDPE.mdp b/src/backend/gporca/data/dxl/minidump/ForeignPartOneTimeFilterDPE.mdp
index d4a1a99ff3..ae78989dae 100644
--- a/src/backend/gporca/data/dxl/minidump/ForeignPartOneTimeFilterDPE.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ForeignPartOneTimeFilterDPE.mdp
@@ -265,7 +265,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16970.1.0" Name="non_part" Rows="5.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16970.1.0" Name="non_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16970.1.0" Name="non_part" IsTemporary="false" Rows="5.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -295,7 +295,7 @@
<dxl:ColumnStatistics Mdid="1.16973.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.16973.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.16973.1.0" Name="part" Rows="10.000000" RelPages="0" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16973.1.0" Name="part" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16973.1.0" Name="part" IsTemporary="false" Rows="10.000000" StorageType="Foreign" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ForeignPartUniform.mdp b/src/backend/gporca/data/dxl/minidump/ForeignPartUniform.mdp
index a92a3bac97..62044b29ca 100644
--- a/src/backend/gporca/data/dxl/minidump/ForeignPartUniform.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ForeignPartUniform.mdp
@@ -240,7 +240,7 @@
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32846.1.0" Name="part" Rows="2000000.000000" RelPages="0" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32846.1.0" Name="part" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r" ConvertHashToRandom="true">
+ <dxl:Relation Mdid="6.32846.1.0" Name="part" IsTemporary="false" Rows="2000000.000000" StorageType="Foreign" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r" ConvertHashToRandom="true">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnyJoin.mdp b/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnyJoin.mdp
index 80bfdca459..9cab57eb50 100644
--- a/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnyJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnyJoin.mdp
@@ -182,7 +182,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.24790.1.0" Name="gp_any" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24790.1.0" Name="gp_any" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Universal" Keys="8,2" ForeignServer="0.24788.1.0">
+ <dxl:Relation Mdid="6.24790.1.0" Name="gp_any" IsTemporary="false" Rows="0.000000" StorageType="Foreign" DistributionPolicy="Universal" Keys="8,2" ForeignServer="0.24788.1.0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -207,7 +207,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.24793.1.0" Name="foo" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24793.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.24793.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnySimpleScan.mdp b/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnySimpleScan.mdp
index f41d009440..d3636d8125 100644
--- a/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnySimpleScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ForeignScanExecLocAnySimpleScan.mdp
@@ -154,7 +154,7 @@
</dxl:Type>
<dxl:RelationExtendedStatistics Mdid="10.24780.1.0" Name="gp_any"/>
<dxl:RelationStatistics Mdid="2.24780.1.0" Name="gp_any" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24780.1.0" Name="gp_any" IsTemporary="false" StorageType="Foreign" DistributionPolicy="Universal" Keys="8,2" ForeignServer="0.24778.1.0">
+ <dxl:Relation Mdid="6.24780.1.0" Name="gp_any" IsTemporary="false" Rows="0.000000" StorageType="Foreign" DistributionPolicy="Universal" Keys="8,2" ForeignServer="0.24778.1.0">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Forward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp b/src/backend/gporca/data/dxl/minidump/Forward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp
index af3e21a000..268c57f0d2 100644
--- a/src/backend/gporca/data/dxl/minidump/Forward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Forward-IndexOnlyScan-OrderBy-on-MultiCol-Index.mdp
@@ -237,7 +237,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.21292.1.0" Name="test_index_with_sort_directions_on_orderby_limit" Rows="100.000000" RelPages="3" RelAllVisible="3" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.21292.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.21292.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-MultiCol-Index.mdp b/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-MultiCol-Index.mdp
index fbc8b13e84..883029b835 100644
--- a/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-MultiCol-Index.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-MultiCol-Index.mdp
@@ -54,7 +54,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" Rows="0.000000" RelPages="1" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-SingleCol-Index.mdp b/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-SingleCol-Index.mdp
index 867d35c14d..a0da6a7df3 100644
--- a/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-SingleCol-Index.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Forward-IndexScan-OrderBy-on-SingleCol-Index.mdp
@@ -54,7 +54,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" Rows="0.000000" RelPages="1" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
+ <dxl:Relation Mdid="6.37047.1.0" Name="test_index_with_sort_directions_on_orderby_limit" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-2PredicateOnDistColumns.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-2PredicateOnDistColumns.mdp
index 7e76de151b..1dd73f9cfc 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-2PredicateOnDistColumns.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-2PredicateOnDistColumns.mdp
@@ -174,7 +174,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -199,7 +199,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-Caps.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-Caps.mdp
index 4995973df6..2c91c53271 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-Caps.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-Caps.mdp
@@ -41,7 +41,7 @@ explain select * from edges e1 full outer join edges e2 on (e1.grp = e2.grp and
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16403.1.0" Name="edges" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16403.1.0" Name="edges" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="src" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp
index f52ba22b24..f41323a8aa 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp
@@ -164,7 +164,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -189,7 +189,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-NonDefaultOpfamily.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-NonDefaultOpfamily.mdp
index 73f329588c..c0db3b3aca 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-NonDefaultOpfamily.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-NonDefaultOpfamily.mdp
@@ -116,7 +116,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.16399.1.0" Name="atab_old_hash" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16399.1.0" Name="atab_old_hash" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16399.1.0" Name="atab_old_hash" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -159,7 +159,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16402.1.0" Name="btab_old_hash" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16402.1.0" Name="btab_old_hash" IsTemporary="false" Rows="4.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-NotOnDistributionColumn.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-NotOnDistributionColumn.mdp
index 344c7b5483..19ee5a9eac 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-NotOnDistributionColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-NotOnDistributionColumn.mdp
@@ -174,7 +174,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -199,7 +199,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-NullPredicate.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-NullPredicate.mdp
index 3c11ef2794..b9e189c859 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-NullPredicate.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-NullPredicate.mdp
@@ -134,7 +134,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -159,7 +159,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp
index c3ec36262f..d62023a9f2 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp
@@ -158,7 +158,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -183,7 +183,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-PredicateOnSameTable.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-PredicateOnSameTable.mdp
index 84a365d083..27b41788c1 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-PredicateOnSameTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-PredicateOnSameTable.mdp
@@ -168,7 +168,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -193,7 +193,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp
index 388b7a961c..b3551ae863 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp
@@ -141,7 +141,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.112884.1.0" Name="repl1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.112884.1.0" Name="repl1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Replicated" Keys="8,2">
+ <dxl:Relation Mdid="6.112884.1.0" Name="repl1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Replicated" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -166,7 +166,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.112887.1.0" Name="repl2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.112887.1.0" Name="repl2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Replicated" Keys="8,2">
+ <dxl:Relation Mdid="6.112887.1.0" Name="repl2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Replicated" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-Subquery-CastedPredicates.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-Subquery-CastedPredicates.mdp
index f57a1eac04..b7589ffb97 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-Subquery-CastedPredicates.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-Subquery-CastedPredicates.mdp
@@ -60,7 +60,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.24579.1.0" Name="t2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.24579.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24579.1.0" Name="t2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -88,7 +88,7 @@
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.24576.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -112,7 +112,7 @@
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.24576.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.24576.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -142,7 +142,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-SubquerySingleton.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-SubquerySingleton.mdp
index 99530228f2..0f8cf3d67c 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-SubquerySingleton.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-SubquerySingleton.mdp
@@ -178,7 +178,7 @@
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -203,7 +203,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-SubqueryWithRedistribute.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-SubqueryWithRedistribute.mdp
index 361f42dff3..1ad62554a2 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-SubqueryWithRedistribute.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-SubqueryWithRedistribute.mdp
@@ -165,7 +165,7 @@
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
<dxl:RelationStatistics Mdid="2.104695.1.0" Name="bigbar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.104695.1.0" Name="bigbar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.104695.1.0" Name="bigbar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -190,7 +190,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp
index 9c49c88003..e8d4c01e92 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp
@@ -158,7 +158,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.41456.1.0" Name="foo" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41456.1.0" Name="foo" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -183,7 +183,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.41459.1.0" Name="bar" Rows="3.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.41459.1.0" Name="bar" IsTemporary="false" Rows="3.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS1.mdp b/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS1.mdp
index 1350dbf1eb..f3af7fa522 100644
--- a/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS1.mdp
@@ -140,7 +140,7 @@
</dxl:GPDBScalarOp>
<dxl:ColumnStatistics Mdid="1.19580.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="1.000000" FreqRemain="1.000000" ColStatsMissing="false"/>
<dxl:RelationStatistics Mdid="2.19577.1.0" Name="lhs" Rows="100000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.19577.1.0" Name="lhs" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.19577.1.0" Name="lhs" IsTemporary="false" Rows="100000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -165,7 +165,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.19580.1.0" Name="rhs" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.19580.1.0" Name="rhs" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.19580.1.0" Name="rhs" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS2.mdp b/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS2.mdp
index 16245ed15e..7707aa772b 100644
--- a/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullOuterJoin-NullRejectingLHS2.mdp
@@ -191,7 +191,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.27770.1.0" Name="foo" Rows="5.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.27770.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.27770.1.0" Name="foo" IsTemporary="false" Rows="5.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -234,7 +234,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.27773.1.0" Name="bar" Rows="5.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.27773.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.27773.1.0" Name="bar" IsTemporary="false" Rows="5.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gb-on-keys.mdp b/src/backend/gporca/data/dxl/minidump/Gb-on-keys.mdp
index aae843ec5a..956332308c 100644
--- a/src/backend/gporca/data/dxl/minidump/Gb-on-keys.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gb-on-keys.mdp
@@ -115,7 +115,7 @@
<dxl:ColumnStatistics Mdid="1.1154027.1.1.3" Name="ctid" Width="6.000000"/>
<dxl:ColumnStatistics Mdid="1.1154027.1.1.2" Name="k" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.1154027.1.1" Name="keys" Rows="0.000000"/>
- <dxl:Relation Mdid="6.1154027.1.1" Name="keys" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="0,1;9,3">
+ <dxl:Relation Mdid="6.1154027.1.1" Name="keys" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="0,1;9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GinIndex.mdp b/src/backend/gporca/data/dxl/minidump/GinIndex.mdp
index fc6c56df83..3c03ef2fe7 100644
--- a/src/backend/gporca/data/dxl/minidump/GinIndex.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GinIndex.mdp
@@ -139,7 +139,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.20124.1.0" Name="t" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.20124.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.20124.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.3802.1.0" Nullable="true" ColWidth="90">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GinIndexPathOpfamily.mdp b/src/backend/gporca/data/dxl/minidump/GinIndexPathOpfamily.mdp
index 0d289cc5ab..8de8d5b00e 100644
--- a/src/backend/gporca/data/dxl/minidump/GinIndexPathOpfamily.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GinIndexPathOpfamily.mdp
@@ -139,7 +139,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.20124.1.0" Name="t" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.20124.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.20124.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.3802.1.0" Nullable="true" ColWidth="90">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GinIndexSearchModeAll.mdp b/src/backend/gporca/data/dxl/minidump/GinIndexSearchModeAll.mdp
index 77f4a65c55..e24ca1f443 100644
--- a/src/backend/gporca/data/dxl/minidump/GinIndexSearchModeAll.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GinIndexSearchModeAll.mdp
@@ -139,7 +139,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.20124.1.0" Name="t" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.20124.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.20124.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.3802.1.0" Nullable="true" ColWidth="90">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-AOCOTable-NonLossy-BitmapIndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-AOCOTable-NonLossy-BitmapIndexPlan.mdp
index c2ec87a655..16ff260ecb 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-AOCOTable-NonLossy-BitmapIndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-AOCOTable-NonLossy-BitmapIndexPlan.mdp
@@ -123,7 +123,7 @@ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..0.00 rows=1 width=4)
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.566277.1.0" Name="aoco_gist_tbl" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.566277.1.0" Name="aoco_gist_tbl" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,4">
+ <dxl:Relation Mdid="6.566277.1.0" Name="aoco_gist_tbl" IsTemporary="false" Rows="0.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,4">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Lossy-IndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Lossy-IndexPlan.mdp
index 132e126490..fa581328a0 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Lossy-IndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Lossy-IndexPlan.mdp
@@ -57,7 +57,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.16400.1.0" Name="gist_tbl" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16400.1.0" Name="gist_tbl" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
+ <dxl:Relation Mdid="6.16400.1.0" Name="gist_tbl" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.603.1.0" Nullable="true" ColWidth="32">
</dxl:Column>
@@ -91,7 +91,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.16407.1.0" Name="gist_tbl2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16407.1.0" Name="gist_tbl2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16407.1.0" Name="gist_tbl2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Postgis-IndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Postgis-IndexPlan.mdp
index 90a46631ec..04ff6ae2e9 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Postgis-IndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-NestedLoopJoin-Postgis-IndexPlan.mdp
@@ -165,7 +165,7 @@ Gather Motion 3:1 (slice2; segments: 3) (cost=0.00..433.00 rows=1 width=24)
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.581648.1.0" Name="postgis" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.581648.1.0" Name="postgis" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.581648.1.0" Name="postgis" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -200,7 +200,7 @@ Gather Motion 3:1 (slice2; segments: 3) (cost=0.00..433.00 rows=1 width=24)
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.577571.1.0" Name="postgis2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.577571.1.0" Name="postgis2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.577571.1.0" Name="postgis2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-BitmapIndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-BitmapIndexPlan.mdp
index a801345425..6fcec20821 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-BitmapIndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-BitmapIndexPlan.mdp
@@ -128,7 +128,7 @@ Optimizer status: PQO version 2.65.1
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.566257.1.0" Name="gist_tbl" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.566257.1.0" Name="gist_tbl" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
+ <dxl:Relation Mdid="6.566257.1.0" Name="gist_tbl" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.603.1.0" Nullable="true" ColWidth="32">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-IndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-IndexPlan.mdp
index cd85b4bedc..ae89edaf46 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-IndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-NonPart-Lossy-IndexPlan.mdp
@@ -128,7 +128,7 @@ Optimizer status: PQO version 2.65.1
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.573684.1.0" Name="gist_tbl" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.573684.1.0" Name="gist_tbl" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
+ <dxl:Relation Mdid="6.573684.1.0" Name="gist_tbl" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Random" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.603.1.0" Nullable="true" ColWidth="32">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-BitmapPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-BitmapPlan.mdp
index f902b3b1f6..13a49bd534 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-BitmapPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-BitmapPlan.mdp
@@ -198,7 +198,7 @@ Result (cost=0.00..0.00 rows=1 width=36)
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.573456.1.0" Name="gist_tbl2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.573456.1.0" Name="gist_tbl2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.573456.1.0" Name="gist_tbl2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -362,7 +362,7 @@ Result (cost=0.00..0.00 rows=1 width=36)
</dxl:ProjElem>
<dxl:ProjElem ColId="10" Alias="?column?">
<dxl:OpExpr OperatorName="<->" OperatorMdid="0.712.1.0" OperatorType="0.701.1.0">
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA
gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
<dxl:Ident ColId="1" ColName="p" TypeMdid="0.604.1.0"/>
</dxl:OpExpr>
</dxl:ProjElem>
@@ -404,13 +404,13 @@ Result (cost=0.00..0.00 rows=1 width=36)
<dxl:Filter>
<dxl:Comparison ComparisonOperator="<@" OperatorMdid="0.489.1.0">
<dxl:Ident ColId="1" ColName="p" TypeMdid="0.604.1.0"/>
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA
gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
</dxl:Comparison>
</dxl:Filter>
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="<@" OperatorMdid="0.489.1.0">
<dxl:Ident ColId="1" ColName="p" TypeMdid="0.604.1.0"/>
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA
gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions/>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-IndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-IndexPlan.mdp
index 57665fa4c3..4885fde7c4 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-IndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-OrderBy-IndexPlan.mdp
@@ -236,7 +236,7 @@ Result (cost=0.00..8.00 rows=2 width=36)
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.573456.1.0" Name="gist_tbl2" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.573456.1.0" Name="gist_tbl2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.573456.1.0" Name="gist_tbl2" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -422,7 +422,7 @@ Result (cost=0.00..8.00 rows=2 width=36)
</dxl:ProjElem>
<dxl:ProjElem ColId="10" Alias="?column?">
<dxl:OpExpr OperatorName="<->" OperatorMdid="0.712.1.0" OperatorType="0.701.1.0">
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA
gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
<dxl:Ident ColId="1" ColName="p" TypeMdid="0.604.1.0"/>
</dxl:OpExpr>
</dxl:ProjElem>
@@ -447,13 +447,13 @@ Result (cost=0.00..8.00 rows=2 width=36)
<dxl:Filter>
<dxl:Comparison ComparisonOperator="<@" OperatorMdid="0.489.1.0">
<dxl:Ident ColId="1" ColName="p" TypeMdid="0.604.1.0"/>
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA
gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
</dxl:Comparison>
</dxl:Filter>
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="<@" OperatorMdid="0.489.1.0">
<dxl:Ident ColId="1" ColName="p" TypeMdid="0.604.1.0"/>
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA
gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAMBVQAAAAAAAwFVAAAAAAABAVUAAAAAAAEBVQAAAAAAA gFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAEBVQA=="/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions/>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-PartTable-Lossy-IndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-PartTable-Lossy-IndexPlan.mdp
index bdd8aa7d9b..6612e33511 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-PartTable-Lossy-IndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-PartTable-Lossy-IndexPlan.mdp
@@ -172,7 +172,7 @@ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.573974.1.0" Name="part_gist_tbl" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.573974.1.0" Name="part_gist_tbl" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.573974.1.0" Name="part_gist_tbl" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -416,13 +416,13 @@ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
<dxl:Filter>
<dxl:Comparison ComparisonOperator="~=" OperatorMdid="0.491.1.0">
<dxl:Ident ColId="2" ColName="p" TypeMdid="0.604.1.0"/>
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAIBTQAAAAAAAAFNAAAAAAAAA8D8AAAAAAAAAQAAAAAAA
APA/AAAAAAAAAEAAAAAAAAAIQAAAAAAAABBAAAAAAACAU0AAAAAAAABTQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAIBTQAAAAAAAAFNAAAAAAAAA8D8AAAAAAAAAQAAAAAAA APA/AAAAAAAAAEAAAAAAAAAIQAAAAAAAABBAAAAAAACAU0AAAAAAAABTQA=="/>
</dxl:Comparison>
</dxl:Filter>
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="~=" OperatorMdid="0.491.1.0">
<dxl:Ident ColId="2" ColName="p" TypeMdid="0.604.1.0"/>
- <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAIBTQAAAAAAAAFNAAAAAAAAA8D8AAAAAAAAAQAAAAAAA
APA/AAAAAAAAAEAAAAAAAAAIQAAAAAAAABBAAAAAAACAU0AAAAAAAABTQA=="/>
+ <dxl:ConstValue TypeMdid="0.604.1.0" Value="AAAAWAMAAAAAAAAAAIBTQAAAAAAAAFNAAAAAAAAA8D8AAAAAAAAAQAAAAAAA APA/AAAAAAAAAEAAAAAAAAAIQAAAAAAAABBAAAAAAACAU0AAAAAAAABTQA=="/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-PartTable-NonLossy-BitmapIndexPlan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-PartTable-NonLossy-BitmapIndexPlan.mdp
index d2a73e8c40..ce3043b47a 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-PartTable-NonLossy-BitmapIndexPlan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-PartTable-NonLossy-BitmapIndexPlan.mdp
@@ -211,7 +211,7 @@ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..0.00 rows=1 width=4)
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.566304.1.0" Name="part_gist_tbl" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.566304.1.0" Name="part_gist_tbl" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.566304.1.0" Name="part_gist_tbl" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="id" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Gist-PartialIndex-TableScan.mdp b/src/backend/gporca/data/dxl/minidump/Gist-PartialIndex-TableScan.mdp
index 54e1265cfc..9065c7e000 100644
--- a/src/backend/gporca/data/dxl/minidump/Gist-PartialIndex-TableScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Gist-PartialIndex-TableScan.mdp
@@ -112,7 +112,7 @@ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=44)
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.573531.1.0" Name="partial_gist_tbl" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.573531.1.0" Name="partial_gist_tbl" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,5,3" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.573531.1.0" Name="partial_gist_tbl" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,5,3" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GreedyNAryDelayCrossJoin.mdp b/src/backend/gporca/data/dxl/minidump/GreedyNAryDelayCrossJoin.mdp
index 8abba96906..b86e2fee21 100644
--- a/src/backend/gporca/data/dxl/minidump/GreedyNAryDelayCrossJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GreedyNAryDelayCrossJoin.mdp
@@ -1026,7 +1026,7 @@ EXPLAIN SELECT * FROM t1, t2, t3, t4 where b = c;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.106558.1.0" Name="t1" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.106558.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106558.1.0" Name="t1" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1049,7 +1049,7 @@ EXPLAIN SELECT * FROM t1, t2, t3, t4 where b = c;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.106564.1.0" Name="t3" Rows="300.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.106564.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106564.1.0" Name="t3" IsTemporary="false" Rows="300.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1072,7 +1072,7 @@ EXPLAIN SELECT * FROM t1, t2, t3, t4 where b = c;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.106567.1.0" Name="t4" Rows="20.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.106567.1.0" Name="t4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106567.1.0" Name="t4" IsTemporary="false" Rows="20.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="d" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1095,7 +1095,7 @@ EXPLAIN SELECT * FROM t1, t2, t3, t4 where b = c;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.106561.1.0" Name="t2" Rows="300.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.106561.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106561.1.0" Name="t2" IsTemporary="false" Rows="300.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GreedyNAryJoin.mdp b/src/backend/gporca/data/dxl/minidump/GreedyNAryJoin.mdp
index 2f97d0f6d0..58d75e5911 100644
--- a/src/backend/gporca/data/dxl/minidump/GreedyNAryJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GreedyNAryJoin.mdp
@@ -138,7 +138,7 @@ EXPLAIN SELECT * FROM t1 INNER JOIN t2 ON a =b INNER JOIN t3 ON b = c;
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.74012.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.74012.1.0" Name="t1" IsTemporary="false" Rows="10001.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -161,7 +161,7 @@ EXPLAIN SELECT * FROM t1 INNER JOIN t2 ON a =b INNER JOIN t3 ON b = c;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.74015.1.0" Name="t2" Rows="1001.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.74015.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.74015.1.0" Name="t2" IsTemporary="false" Rows="1001.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -184,7 +184,7 @@ EXPLAIN SELECT * FROM t1 INNER JOIN t2 ON a =b INNER JOIN t3 ON b = c;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.74018.1.0" Name="t3" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.74018.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.74018.1.0" Name="t3" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GreedyNAryJoinWithDisconnectedEdges.mdp b/src/backend/gporca/data/dxl/minidump/GreedyNAryJoinWithDisconnectedEdges.mdp
index eb301917e7..9d6f0929f7 100644
--- a/src/backend/gporca/data/dxl/minidump/GreedyNAryJoinWithDisconnectedEdges.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GreedyNAryJoinWithDisconnectedEdges.mdp
@@ -1321,7 +1321,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.32822.1.0" Name="t3" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32822.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32822.1.0" Name="t3" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1346,7 +1346,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32816.1.0" Name="t1" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32816.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32816.1.0" Name="t1" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1371,7 +1371,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32819.1.0" Name="t2" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32819.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32819.1.0" Name="t2" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1396,7 +1396,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32828.1.0" Name="t5" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32828.1.0" Name="t5" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32828.1.0" Name="t5" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -2217,7 +2217,7 @@
<dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
- <dxl:Relation Mdid="6.32831.1.0" Name="t6" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32831.1.0" Name="t6" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -2242,7 +2242,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32825.1.0" Name="t4" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32825.1.0" Name="t4" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32825.1.0" Name="t4" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -2267,7 +2267,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32837.1.0" Name="t8" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32837.1.0" Name="t8" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32837.1.0" Name="t8" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -2292,7 +2292,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.32834.1.0" Name="t7" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32834.1.0" Name="t7" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.32834.1.0" Name="t7" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GreedyNAryOnlyCrossJoins.mdp b/src/backend/gporca/data/dxl/minidump/GreedyNAryOnlyCrossJoins.mdp
index f979c753e2..ca527834c7 100644
--- a/src/backend/gporca/data/dxl/minidump/GreedyNAryOnlyCrossJoins.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GreedyNAryOnlyCrossJoins.mdp
@@ -532,7 +532,7 @@ EXPLAIN SELECT * FROM t1, t2, t3;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.106573.1.0" Name="t2" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.106573.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106573.1.0" Name="t2" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -953,7 +953,7 @@ EXPLAIN SELECT * FROM t1, t2, t3;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.106570.1.0" Name="t1" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.106570.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106570.1.0" Name="t1" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -976,7 +976,7 @@ EXPLAIN SELECT * FROM t1, t2, t3;
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.106576.1.0" Name="t3" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.106576.1.0" Name="t3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.106576.1.0" Name="t3" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GroupByEmptySetNoAgg.mdp b/src/backend/gporca/data/dxl/minidump/GroupByEmptySetNoAgg.mdp
index 083f9c022d..0a3a1e508a 100644
--- a/src/backend/gporca/data/dxl/minidump/GroupByEmptySetNoAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GroupByEmptySetNoAgg.mdp
@@ -127,7 +127,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.179990.1.1" Name="gpb" Rows="2.000000"/>
- <dxl:Relation Mdid="6.179990.1.1" Name="gpb" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.179990.1.1" Name="gpb" IsTemporary="false" Rows="2.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp b/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp
index fa2021c670..3e5da5bdbb 100644
--- a/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GroupByOuterRef.mdp
@@ -193,7 +193,7 @@ where t.a in (select count(s.i) from s);
<dxl:ColumnStatistics Mdid="1.839942.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
<dxl:RelationStatistics Mdid="2.839968.1.1" Name="s" Rows="0.000000"/>
<dxl:RelationStatistics Mdid="2.839942.1.1" Name="t" Rows="0.000000"/>
- <dxl:Relation Mdid="6.839968.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.839968.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -217,7 +217,7 @@ where t.a in (select count(s.i) from s);
<dxl:IndexInfoList/>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.839942.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.839942.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp b/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp
index 9f24d66331..75be1fc433 100644
--- a/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp
@@ -488,7 +488,7 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.672855.1.1" Name="item" Rows="17940.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.672855.1.0" Name="item" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
+ <dxl:Relation Mdid="6.672855.1.0" Name="item" IsTemporary="false" Rows="17940.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
<dxl:Columns>
<dxl:Column Name="i_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -554,7 +554,7 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.672855.1.1" Name="item" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
+ <dxl:Relation Mdid="6.672855.1.1" Name="item" IsTemporary="false" Rows="17940.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;28,22">
<dxl:Columns>
<dxl:Column Name="i_item_sk" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -5972,7 +5972,7 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.673545.1.1" Name="store_sales" Rows="2881479.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.673545.1.0" Name="store_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9;29,23">
+ <dxl:Relation Mdid="6.673545.1.0" Name="store_sales" IsTemporary="false" Rows="2881479.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9;29,23">
<dxl:Columns>
<dxl:Column Name="ss_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -6040,7 +6040,7 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.673545.1.1" Name="store_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9;29,23">
+ <dxl:Relation Mdid="6.673545.1.1" Name="store_sales" IsTemporary="false" Rows="2881479.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="2,9" Keys="2,9;29,23">
<dxl:Columns>
<dxl:Column Name="ss_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-2.mdp b/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-2.mdp
index 2362ee4932..72b0e3dbc1 100644
--- a/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-2.mdp
@@ -1497,7 +1497,7 @@
<dxl:MDCast Mdid="3.1114.1.0;1114.1.0" Name="timestamp" BinaryCoercible="true" SourceTypeId="0.1114.1.0" DestinationTypeId="0.1114.1.0" CastFuncId="0.0.0.0"/>
<dxl:MDCast Mdid="3.1043.1.0;25.1.0" Name="text" BinaryCoercible="true" SourceTypeId="0.1043.1.0" DestinationTypeId="0.25.1.0" CastFuncId="0.0.0.0"/>
<dxl:RelationStatistics Mdid="2.2284492.1.1" Name="coverage" Rows="3780020.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2284492.1.1" Name="coverage" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="2" Keys="15,13">
+ <dxl:Relation Mdid="6.2284492.1.1" Name="coverage" IsTemporary="false" Rows="3780020.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="2" Keys="15,13">
<dxl:Columns>
<dxl:Column Name="date" Attno="1" Mdid="0.1114.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -3284,7 +3284,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.2372852.1.1" Name="asset_records" Rows="43026700.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2372852.1.1" Name="asset_records" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="5" Keys="25,26,24" PartitionColumns="23" PartitionTypes="r">
+ <dxl:Relation Mdid="6.2372852.1.1" Name="asset_records" IsTemporary="false" Rows="43026700.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="5" Keys="25,26,24" PartitionColumns="23" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="parent" Attno="1" Mdid="0.16.1.0" Nullable="true" ColWidth="1">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/GroupingSets.mdp b/src/backend/gporca/data/dxl/minidump/GroupingSets.mdp
index 794dd42188..d8a5ec031c 100644
--- a/src/backend/gporca/data/dxl/minidump/GroupingSets.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GroupingSets.mdp
@@ -132,7 +132,7 @@
<dxl:ColumnStatistics Mdid="1.17288.1.1.3" Name="xmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17288.1.1.2" Name="ctid" Width="6.000000"/>
<dxl:RelationStatistics Mdid="2.17288.1.1" Name="r" Rows="0.000000"/>
- <dxl:Relation Mdid="6.17288.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.17288.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp b/src/backend/gporca/data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp
index 51b76fba29..376252899c 100644
--- a/src/backend/gporca/data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp
+++ b/src/backend/gporca/data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp
@@ -798,7 +798,7 @@ ORDER BY s_name;
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.11778196.1.1" Name="nation_ao_column_none_level0" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,4">
+ <dxl:Relation Mdid="6.11778196.1.1" Name="nation_ao_column_none_level0" IsTemporary="false" Rows="50.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="6,4">
<dxl:Columns>
<dxl:Column Name="n_nationkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -1920,7 +1920,7 @@ ORDER BY s_name;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.11778349.1.1" Name="supplier_ao_column_none_level0" Rows="128000000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.11778349.1.1" Name="supplier_ao_column_none_level0" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,7">
+ <dxl:Relation Mdid="6.11778349.1.1" Name="supplier_ao_column_none_level0" IsTemporary="false" Rows="128000000.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,7">
<dxl:Columns>
<dxl:Column Name="s_suppkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -3245,7 +3245,7 @@ ORDER BY s_name;
<dxl:ResultType Mdid="0.1700.1.0"/>
</dxl:GPDBFunc>
<dxl:RelationStatistics Mdid="2.11778256.1.1" Name="part_ao_column_none_level0" Rows="2559980032.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.11778256.1.1" Name="part_ao_column_none_level0" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,9">
+ <dxl:Relation Mdid="6.11778256.1.1" Name="part_ao_column_none_level0" IsTemporary="false" Rows="2559980032.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="11,9">
<dxl:Columns>
<dxl:Column Name="p_partkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -4782,7 +4782,7 @@ ORDER BY s_name;
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.11778286.1.1" Name="partsupp_ao_column_none_level0" Rows="10239899648.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.11778286.1.1" Name="partsupp_ao_column_none_level0" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,5">
+ <dxl:Relation Mdid="6.11778286.1.1" Name="partsupp_ao_column_none_level0" IsTemporary="false" Rows="10239899648.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,5">
<dxl:Columns>
<dxl:Column Name="ps_partkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -4809,7 +4809,7 @@ ORDER BY s_name;
<dxl:ResultType Mdid="0.20.1.0"/>
<dxl:IntermediateResultType Mdid="0.20.1.0"/>
</dxl:GPDBAgg>
- <dxl:Relation Mdid="6.11778166.1.1" Name="lineitem_ao_column_none_level0" IsTemporary="false" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="18,16">
+ <dxl:Relation Mdid="6.11778166.1.1" Name="lineitem_ao_column_none_level0" IsTemporary="false" Rows="76800000000.000000" StorageType="AppendOnly, Column-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="18,16">
<dxl:Columns>
<dxl:Column Name="l_orderkey" Attno="1" Mdid="0.20.1.0" Nullable="false" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/HJN-DPE-Bitmap-Outer-Child.mdp b/src/backend/gporca/data/dxl/minidump/HJN-DPE-Bitmap-Outer-Child.mdp
index d958b5de70..7e74c5b134 100644
--- a/src/backend/gporca/data/dxl/minidump/HJN-DPE-Bitmap-Outer-Child.mdp
+++ b/src/backend/gporca/data/dxl/minidump/HJN-DPE-Bitmap-Outer-Child.mdp
@@ -165,7 +165,7 @@ select * from dbs_target, dbs_helper where dbs_target.c1 = dbs_helper.c1 and dbs
<dxl:ColumnStatistics Mdid="1.42822392.1.1.5" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.42822392.1.1.4" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.42822392.1.1" Name="dbs_target" Rows="19000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.42822392.1.0" Name="dbs_target" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.42822392.1.0" Name="dbs_target" IsTemporary="false" Rows="19000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -635,7 +635,7 @@ select * from dbs_target, dbs_helper where dbs_target.c1 = dbs_helper.c1 and dbs
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.42822392.1.1" Name="dbs_target" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.42822392.1.1" Name="dbs_target" IsTemporary="false" Rows="19000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -1166,7 +1166,7 @@ select * from dbs_target, dbs_helper where dbs_target.c1 = dbs_helper.c1 and dbs
<dxl:ColumnStatistics Mdid="1.42822392.1.1.7" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.42822392.1.1.6" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.42823040.1.1" Name="dbs_helper" Rows="12.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.42823040.1.1" Name="dbs_helper" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.42823040.1.1" Name="dbs_helper" IsTemporary="false" Rows="12.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp b/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp
index f937bfd841..cbfe9bec8e 100644
--- a/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp
+++ b/src/backend/gporca/data/dxl/minidump/HJN-DeeperOuter.mdp
@@ -147,7 +147,7 @@ SELECT z.*,x.* FROM x,y,z WHERE x.i=y.i AND x.i=z.i;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.15210462.1.1" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.15210462.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.15210462.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.21.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -174,7 +174,7 @@ SELECT z.*,x.* FROM x,y,z WHERE x.i=y.i AND x.i=z.i;
<dxl:ColumnStatistics Mdid="1.15210488.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.15210488.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.15210488.1.1" Name="y" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.15210488.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.15210488.1.1" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.21.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -208,7 +208,7 @@ SELECT z.*,x.* FROM x,y,z WHERE x.i=y.i AND x.i=z.i;
<dxl:ColumnStatistics Mdid="1.15210488.1.1.1" Name="j" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.15210488.1.1.0" Name="i" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.15210514.1.1" Name="z" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.15210514.1.1" Name="z" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.15210514.1.1" Name="z" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp b/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp
index 859d6162b5..b922a5f958 100644
--- a/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp
+++ b/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp
@@ -566,7 +566,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.5844948.1.1" Name="orders" Rows="1502372.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.5844948.1.1" Name="orders" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="15,9">
+ <dxl:Relation Mdid="6.5844948.1.1" Name="orders" IsTemporary="false" Rows="1502372.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="15,9">
<dxl:Columns>
<dxl:Column Name="o_orderkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -1879,7 +1879,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.5844974.1.1" Name="lineitem" Rows="6003249.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.5844974.1.1" Name="lineitem" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
+ <dxl:Relation Mdid="6.5844974.1.1" Name="lineitem" IsTemporary="false" Rows="6003249.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="22,16">
<dxl:Columns>
<dxl:Column Name="l_orderkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan-InArray.mdp b/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan-InArray.mdp
index ef85f63634..ffd1f3bb67 100644
--- a/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan-InArray.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan-InArray.mdp
@@ -33,7 +33,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16947.1.0" Name="foo" Rows="100.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16947.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16947.1.0" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan.mdp b/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan.mdp
index 69f26ee8ab..d2ef90db3a 100644
--- a/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Hash-BitmapScan.mdp
@@ -155,7 +155,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.52420.1.0" Name="foo" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.52420.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.52420.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Hash-IndexScan.mdp b/src/backend/gporca/data/dxl/minidump/Hash-IndexScan.mdp
index 198674950f..596968a379 100644
--- a/src/backend/gporca/data/dxl/minidump/Hash-IndexScan.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Hash-IndexScan.mdp
@@ -152,7 +152,7 @@
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.52420.1.0" Name="foo" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.52420.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.52420.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Hash-TableScan-AllArray.mdp b/src/backend/gporca/data/dxl/minidump/Hash-TableScan-AllArray.mdp
index 290b0b86e0..50799f8cdd 100644
--- a/src/backend/gporca/data/dxl/minidump/Hash-TableScan-AllArray.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Hash-TableScan-AllArray.mdp
@@ -32,7 +32,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16947.1.0" Name="foo" Rows="100.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16947.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16947.1.0" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/HashJoinOnRelabeledColumns.mdp b/src/backend/gporca/data/dxl/minidump/HashJoinOnRelabeledColumns.mdp
index 700e5b9c50..9b00874a7e 100644
--- a/src/backend/gporca/data/dxl/minidump/HashJoinOnRelabeledColumns.mdp
+++ b/src/backend/gporca/data/dxl/minidump/HashJoinOnRelabeledColumns.mdp
@@ -142,7 +142,7 @@
<dxl:ColumnStatistics Mdid="1.4015159.1.1.5" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.4015159.1.1.4" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.4015133.1.1" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.4015133.1.1" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.4015133.1.1" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
@@ -177,7 +177,7 @@
<dxl:ColumnStatistics Mdid="1.4015159.1.1.7" Name="gp_segment_id" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.4015159.1.1.6" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.4015159.1.1" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.4015159.1.1" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.4015159.1.1" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IDF-NotNullConstant.mdp b/src/backend/gporca/data/dxl/minidump/IDF-NotNullConstant.mdp
index 757e3d2b28..0b92fbdd2a 100644
--- a/src/backend/gporca/data/dxl/minidump/IDF-NotNullConstant.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IDF-NotNullConstant.mdp
@@ -195,7 +195,7 @@
<dxl:ColumnStatistics Mdid="1.2428752.1.1.5" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.2428752.1.1.4" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.2428752.1.1" Name="idf" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IDF-NullConstant.mdp b/src/backend/gporca/data/dxl/minidump/IDF-NullConstant.mdp
index c72b921478..f211f55b56 100644
--- a/src/backend/gporca/data/dxl/minidump/IDF-NullConstant.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IDF-NullConstant.mdp
@@ -195,7 +195,7 @@
<dxl:ColumnStatistics Mdid="1.2428752.1.1.5" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.2428752.1.1.4" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.2428752.1.1" Name="idf" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IN-ArrayCmp.mdp b/src/backend/gporca/data/dxl/minidump/IN-ArrayCmp.mdp
index 737555c503..1368a3cd91 100644
--- a/src/backend/gporca/data/dxl/minidump/IN-ArrayCmp.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IN-ArrayCmp.mdp
@@ -122,7 +122,7 @@
<dxl:ColumnStatistics Mdid="1.711616.1.1.1" Name="j" Width="8.000000"/>
<dxl:ColumnStatistics Mdid="1.711616.1.1.0" Name="i" Width="8.000000"/>
<dxl:RelationStatistics Mdid="2.711616.1.1" Name="x" Rows="0.000000"/>
- <dxl:Relation Mdid="6.711616.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.711616.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -151,7 +151,7 @@
<dxl:ColumnStatistics Mdid="1.711616.1.1.3" Name="xmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.711616.1.1.2" Name="ctid" Width="6.000000"/>
<dxl:RelationStatistics Mdid="2.719808.1.1" Name="y" Rows="0.000000"/>
- <dxl:Relation Mdid="6.719808.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
+ <dxl:Relation Mdid="6.719808.1.1" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IN-Nulls-ArrayCmpAny.mdp b/src/backend/gporca/data/dxl/minidump/IN-Nulls-ArrayCmpAny.mdp
index 3a4db6e73e..d8395b59bc 100644
--- a/src/backend/gporca/data/dxl/minidump/IN-Nulls-ArrayCmpAny.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IN-Nulls-ArrayCmpAny.mdp
@@ -25,7 +25,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="550.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="550.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IN-Numeric.mdp b/src/backend/gporca/data/dxl/minidump/IN-Numeric.mdp
index 7c28a693f5..23f36306c9 100644
--- a/src/backend/gporca/data/dxl/minidump/IN-Numeric.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IN-Numeric.mdp
@@ -82,7 +82,7 @@ explain select * from t_numeric where c5 in (10, 11);
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.4025183.1.1" Name="t_numeric" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.4025183.1.0" Name="t_numeric" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.4025183.1.0" Name="t_numeric" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c4" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -138,7 +138,7 @@ explain select * from t_numeric where c5 in (10, 11);
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.4025183.1.1" Name="t_numeric" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.4025183.1.1" Name="t_numeric" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c4" Attno="1" Mdid="0.1700.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IN.mdp b/src/backend/gporca/data/dxl/minidump/IN.mdp
index fcb6eaef4c..2602318090 100644
--- a/src/backend/gporca/data/dxl/minidump/IN.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IN.mdp
@@ -695,7 +695,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.41018.1.1" Name="part" Rows="200092.000000"/>
- <dxl:Relation Mdid="6.41018.1.1" Name="part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="15,9">
+ <dxl:Relation Mdid="6.41018.1.1" Name="part" IsTemporary="false" Rows="200092.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="15,9">
<dxl:Columns>
<dxl:Column Name="p_partkey" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/INDF-NotNullConstant.mdp b/src/backend/gporca/data/dxl/minidump/INDF-NotNullConstant.mdp
index abe30b8977..0ff67b5885 100644
--- a/src/backend/gporca/data/dxl/minidump/INDF-NotNullConstant.mdp
+++ b/src/backend/gporca/data/dxl/minidump/INDF-NotNullConstant.mdp
@@ -195,7 +195,7 @@
<dxl:ColumnStatistics Mdid="1.2428752.1.1.5" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.2428752.1.1.4" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.2428752.1.1" Name="idf" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/INDF-NullConstant.mdp b/src/backend/gporca/data/dxl/minidump/INDF-NullConstant.mdp
index 43918099b5..4df31ecd5c 100644
--- a/src/backend/gporca/data/dxl/minidump/INDF-NullConstant.mdp
+++ b/src/backend/gporca/data/dxl/minidump/INDF-NullConstant.mdp
@@ -195,7 +195,7 @@
<dxl:ColumnStatistics Mdid="1.2428752.1.1.5" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.2428752.1.1.4" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.2428752.1.1" Name="idf" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.2428752.1.1" Name="idf" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/InClauseWithMCV.mdp b/src/backend/gporca/data/dxl/minidump/InClauseWithMCV.mdp
index 4f65d93fc6..fef5732659 100644
--- a/src/backend/gporca/data/dxl/minidump/InClauseWithMCV.mdp
+++ b/src/backend/gporca/data/dxl/minidump/InClauseWithMCV.mdp
@@ -24,7 +24,7 @@ explain select * from bar where a in (1, (select count(*) from bar));
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="bar" Rows="20000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.16385.1.0" Name="bar" IsTemporary="false" Rows="20000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/InEqualityJoin.mdp b/src/backend/gporca/data/dxl/minidump/InEqualityJoin.mdp
index 15bf23798d..2dd8185add 100644
--- a/src/backend/gporca/data/dxl/minidump/InEqualityJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/InEqualityJoin.mdp
@@ -5433,7 +5433,7 @@
<dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2452642"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
- <dxl:Relation Mdid="6.25732.1.0" Name="web_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17;40,34">
+ <dxl:Relation Mdid="6.25732.1.0" Name="web_sales" IsTemporary="false" Rows="184296000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17;40,34">
<dxl:Columns>
<dxl:Column Name="ws_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -9708,7 +9708,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.25732.1.1" Name="web_sales" Rows="184296000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.25732.1.1" Name="web_sales" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17;40,34">
+ <dxl:Relation Mdid="6.25732.1.1" Name="web_sales" IsTemporary="false" Rows="184296000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="3,17" Keys="3,17;40,34">
<dxl:Columns>
<dxl:Column Name="ws_sold_date_sk" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnIn.mdp b/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnIn.mdp
index 2a86ad7980..e5cb7c7c1a 100644
--- a/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnIn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnIn.mdp
@@ -43,7 +43,7 @@ EXPLAIN SELECT * FROM foo WHERE a IN (SELECT b+1 FROM bar);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.90119.1.0" Name="foo" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90119.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.90119.1.0" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -68,7 +68,7 @@ EXPLAIN SELECT * FROM foo WHERE a IN (SELECT b+1 FROM bar);
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.90122.1.0" Name="bar" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90122.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.90122.1.0" Name="bar" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnPlusConstIn.mdp b/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnPlusConstIn.mdp
index b64d8110a3..b70e4634a3 100644
--- a/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnPlusConstIn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefColumnPlusConstIn.mdp
@@ -43,7 +43,7 @@ EXPLAIN SELECT * FROM foo WHERE 1+a IN (SELECT b+1 FROM bar);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.90119.1.0" Name="foo" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90119.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.90119.1.0" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -68,7 +68,7 @@ EXPLAIN SELECT * FROM foo WHERE 1+a IN (SELECT b+1 FROM bar);
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.90122.1.0" Name="bar" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90122.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.90122.1.0" Name="bar" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefConstIn.mdp b/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefConstIn.mdp
index d0cd2058a4..c36f477580 100644
--- a/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefConstIn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/InSubqWithPrjListOuterRefNoInnerRefConstIn.mdp
@@ -40,7 +40,7 @@ SELECT * FROM foo WHERE 2 IN (SELECT b+1 FROM bar);
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.90119.1.0" Name="foo" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90119.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.90119.1.0" Name="foo" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -65,7 +65,7 @@ SELECT * FROM foo WHERE 2 IN (SELECT b+1 FROM bar);
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.90122.1.0" Name="bar" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.90122.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.90122.1.0" Name="bar" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/InSubqueryWithNotNullCol.mdp b/src/backend/gporca/data/dxl/minidump/InSubqueryWithNotNullCol.mdp
index 3aede8e8bf..4cc2084e39 100644
--- a/src/backend/gporca/data/dxl/minidump/InSubqueryWithNotNullCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/InSubqueryWithNotNullCol.mdp
@@ -62,7 +62,7 @@ select *
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.147463.1.0" Name="cust" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.147463.1.0" Name="cust" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.147463.1.0" Name="cust" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c_cust_id" Attno="1" Mdid="0.1043.1.0" TypeModifier="20" Nullable="true" ColWidth="16">
</dxl:Column>
@@ -87,7 +87,7 @@ select *
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.147460.1.0" Name="item" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.147460.1.0" Name="item" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Relation Mdid="6.147460.1.0" Name="item" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
<dxl:Columns>
<dxl:Column Name="i_item_id" Attno="1" Mdid="0.1043.1.0" TypeModifier="20" Nullable="false" ColWidth="16">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/Index-Join-With-Subquery-In-Pred.mdp b/src/backend/gporca/data/dxl/minidump/Index-Join-With-Subquery-In-Pred.mdp
index e79269fa70..88e30dfcec 100644
--- a/src/backend/gporca/data/dxl/minidump/Index-Join-With-Subquery-In-Pred.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Index-Join-With-Subquery-In-Pred.mdp
@@ -175,7 +175,7 @@ Optimizer: Pivotal Optimizer (GPORCA)
<dxl:ColumnStatistics Mdid="1.6639066.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.6639066.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.6639063.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.6639063.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.6639063.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -205,7 +205,7 @@ Optimizer: Pivotal Optimizer (GPORCA)
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.6639066.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.6639066.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.6639066.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-BothSidesPartitioned.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-BothSidesPartitioned.mdp
index 87d64292e5..a81cfb8aad 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-BothSidesPartitioned.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-BothSidesPartitioned.mdp
@@ -193,7 +193,7 @@ select * from x, y where (x.i > y.j);
<dxl:ColumnStatistics Mdid="1.54648430.1.1.1" Name="j" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.54648430.1.1.0" Name="i" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.54648535.1.1" Name="y" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.54648535.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.54648535.1.0" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -317,7 +317,7 @@ select * from x, y where (x.i > y.j);
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.54648535.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.54648535.1.1" Name="y" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -467,7 +467,7 @@ select * from x, y where (x.i > y.j);
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.54648430.1.1" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.54648430.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.54648430.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -591,7 +591,7 @@ select * from x, y where (x.i > y.j);
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.54648430.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.54648430.1.1" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-DTS.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-DTS.mdp
index 56a73df535..e5a838853f 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-DTS.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-DTS.mdp
@@ -66,7 +66,7 @@ WHERE tt.event_ts >= tq.ets AND
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.16033549.1.1" Name="my_tt_agg_small" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16033549.1.1" Name="my_tt_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.16033549.1.1" Name="my_tt_agg_small" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="symbol" Attno="1" Mdid="0.1042.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
@@ -244,7 +244,7 @@ WHERE tt.event_ts >= tq.ets AND
<dxl:ColumnStatistics Mdid="1.16033575.1.1.8" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.16033575.1.1.1" Name="sym" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.16033575.1.1.0" Name="ets" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:Relation Mdid="6.16033575.1.0" Name="my_tq_agg_small_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16033575.1.0" Name="my_tq_agg_small_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -427,7 +427,7 @@ WHERE tt.event_ts >= tq.ets AND
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16033575.1.1" Name="my_tq_agg_small_part" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16033575.1.1" Name="my_tq_agg_small_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16033575.1.1" Name="my_tq_agg_small_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-NoDTS.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-NoDTS.mdp
index 8c39a65a0d..9b5427ca36 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-NoDTS.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-Heterogeneous-NoDTS.mdp
@@ -231,7 +231,7 @@ ORDER BY 1 asc ;
<dxl:ColumnStatistics Mdid="1.16032574.1.1.5" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.16032574.1.1.4" Name="end_ts" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.16032548.1.1" Name="my_tt_agg_small" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16032548.1.1" Name="my_tt_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.16032548.1.1" Name="my_tt_agg_small" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="symbol" Attno="1" Mdid="0.1042.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
@@ -276,7 +276,7 @@ ORDER BY 1 asc ;
<dxl:ColumnStatistics Mdid="1.16032548.1.1.10" Name="gp_segment_id" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.16032548.1.1.3" Name="trade_volume" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.16032548.1.1.2" Name="trade_price" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
- <dxl:Relation Mdid="6.16032574.1.0" Name="my_tq_agg_small_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16032574.1.0" Name="my_tq_agg_small_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -410,7 +410,7 @@ ORDER BY 1 asc ;
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16032574.1.1" Name="my_tq_agg_small_part" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16032574.1.1" Name="my_tq_agg_small_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16032574.1.1" Name="my_tq_agg_small_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondDisjointWithHashedDistr.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondDisjointWithHashedDistr.mdp
index dfe9ee0544..2cb0ad0c51 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondDisjointWithHashedDistr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondDisjointWithHashedDistr.mdp
@@ -74,7 +74,7 @@
<dxl:Opfamily Mdid="0.3027.1.0"/>
</dxl:Opfamilies>
</dxl:Index>
- <dxl:Relation Mdid="6.9393858.1.0" Name="r1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.9393858.1.0" Name="r1" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -685,7 +685,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.9393858.1.1" Name="r1" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.9393858.1.1" Name="r1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.9393858.1.1" Name="r1" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -720,7 +720,7 @@
<dxl:ColumnStatistics Mdid="1.9393858.1.1.7" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.9393858.1.1.6" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondIntersectWithHashedDistr.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondIntersectWithHashedDistr.mdp
index 8d885965cd..890d6d30f9 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondIntersectWithHashedDistr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondIntersectWithHashedDistr.mdp
@@ -74,7 +74,7 @@
<dxl:Opfamily Mdid="0.3027.1.0"/>
</dxl:Opfamilies>
</dxl:Index>
- <dxl:Relation Mdid="6.9393858.1.0" Name="r1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.9393858.1.0" Name="r1" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -685,7 +685,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.9393858.1.1" Name="r1" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.9393858.1.1" Name="r1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.9393858.1.1" Name="r1" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -720,7 +720,7 @@
<dxl:ColumnStatistics Mdid="1.9393858.1.1.7" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.9393858.1.1.6" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondMatchHashedDistr.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondMatchHashedDistr.mdp
index 5c9ec1a10d..7fd2ef8ab8 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondMatchHashedDistr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondMatchHashedDistr.mdp
@@ -235,7 +235,7 @@
<dxl:Opfamily Mdid="0.3027.1.0"/>
</dxl:Opfamilies>
</dxl:Index>
- <dxl:Relation Mdid="6.9385666.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.9385666.1.0" Name="r" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -673,7 +673,7 @@
<dxl:ColumnStatistics Mdid="1.3373352.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.3373352.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.9385666.1.1" Name="r" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.9385666.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.9385666.1.1" Name="r" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -702,7 +702,7 @@
<dxl:ColumnStatistics Mdid="1.9385666.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.9385666.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSubsetOfHashedDistr.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSubsetOfHashedDistr.mdp
index dfe9ee0544..2cb0ad0c51 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSubsetOfHashedDistr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSubsetOfHashedDistr.mdp
@@ -74,7 +74,7 @@
<dxl:Opfamily Mdid="0.3027.1.0"/>
</dxl:Opfamilies>
</dxl:Index>
- <dxl:Relation Mdid="6.9393858.1.0" Name="r1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.9393858.1.0" Name="r1" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -685,7 +685,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.9393858.1.1" Name="r1" Rows="1000.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.9393858.1.1" Name="r1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
+ <dxl:Relation Mdid="6.9393858.1.1" Name="r1" IsTemporary="false" Rows="1000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1,2" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -720,7 +720,7 @@
<dxl:ColumnStatistics Mdid="1.9393858.1.1.7" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.9393858.1.1.6" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSupersetOfHashedDistr.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSupersetOfHashedDistr.mdp
index e45686c14f..9dbbf8253f 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSupersetOfHashedDistr.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexCondSupersetOfHashedDistr.mdp
@@ -243,7 +243,7 @@
<dxl:Opfamily Mdid="0.3027.1.0"/>
</dxl:Opfamilies>
</dxl:Index>
- <dxl:Relation Mdid="6.9385666.1.0" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.9385666.1.0" Name="r" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -681,7 +681,7 @@
<dxl:ColumnStatistics Mdid="1.3373352.1.1.3" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.3373352.1.1.2" Name="ctid" Width="6.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.9385666.1.1" Name="r" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.9385666.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.9385666.1.1" Name="r" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -710,7 +710,7 @@
<dxl:ColumnStatistics Mdid="1.9385666.1.1.7" Name="tableoid" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.9385666.1.1.6" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexOnCoordinatorOnlyTable.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexOnCoordinatorOnlyTable.mdp
index 733625d1ba..ab54c41546 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-IndexOnCoordinatorOnlyTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-IndexOnCoordinatorOnlyTable.mdp
@@ -843,7 +843,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.1259.1.0" Name="pg_class" IsTemporary="false" StorageType="Heap" DistributionPolicy="CoordinatorOnly" Keys="37,30">
+ <dxl:Relation Mdid="6.1259.1.0" Name="pg_class" IsTemporary="false" Rows="337.000000" StorageType="Heap" DistributionPolicy="CoordinatorOnly" Keys="37,30">
<dxl:Columns>
<dxl:Column Name="relname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -1567,7 +1567,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.1259.1.1" Name="pg_class" Rows="337.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.1259.1.1" Name="pg_class" IsTemporary="false" StorageType="Heap" DistributionPolicy="CoordinatorOnly" Keys="37,30">
+ <dxl:Relation Mdid="6.1259.1.1" Name="pg_class" IsTemporary="false" Rows="337.000000" StorageType="Heap" DistributionPolicy="CoordinatorOnly" Keys="37,30">
<dxl:Columns>
<dxl:Column Name="relname" Attno="1" Mdid="0.19.1.0" Nullable="false" ColWidth="64">
</dxl:Column>
@@ -1653,7 +1653,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.3373352.1.1" Name="x" Rows="9011.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.3373352.1.1" Name="x" IsTemporary="false" Rows="9011.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Basic.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Basic.mdp
index e113f7b0f9..2d748a26c6 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Basic.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Basic.mdp
@@ -155,7 +155,7 @@ explain SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c1 > 10;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32518839.1.1" Name="s" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32518839.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.32518839.1.1" Name="s" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -228,7 +228,7 @@ explain SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c1 > 10;
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32518867.1.1" Name="t" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32518867.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.32518867.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -264,7 +264,7 @@ explain SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c1 > 10;
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.32518867.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.32518867.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Heterogeneous-DTS.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Heterogeneous-DTS.mdp
index 7858b70949..fc5d6eea66 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Heterogeneous-DTS.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-Heterogeneous-DTS.mdp
@@ -137,7 +137,7 @@ WHERE tt.event_ts >= tq.ets AND
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.32989847.1.1" Name="my_tq_agg_small_part" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32989847.1.0" Name="my_tq_agg_small_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.32989847.1.0" Name="my_tq_agg_small_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -319,7 +319,7 @@ WHERE tt.event_ts >= tq.ets AND
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.32989847.1.1" Name="my_tq_agg_small_part" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.32989847.1.1" Name="my_tq_agg_small_part" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -712,7 +712,7 @@ WHERE tt.event_ts >= tq.ets AND
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.32989821.1.1" Name="my_tt_agg_small" Rows="1.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.32989821.1.1" Name="my_tt_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.32989821.1.1" Name="my_tt_agg_small" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="symbol" Attno="1" Mdid="0.1042.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable.mdp
index ddbac52ee9..3c4f41c820 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable.mdp
@@ -33,7 +33,7 @@ SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c1 > 10;
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.32553346.1.1" Name="t" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.32553346.1.0" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.32553346.1.0" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -227,7 +227,7 @@ SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c1 > 10;
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.32553346.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.32553346.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="12,13,7" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -662,7 +662,7 @@ SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c1 > 10;
<dxl:Opfamily Mdid="0.3040.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.32553318.1.1" Name="s" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
+ <dxl:Relation Mdid="6.32553318.1.1" Name="s" IsTemporary="false" Rows="1.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="13,7">
<dxl:Columns>
<dxl:Column Name="c1" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable2.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable2.mdp
index c3d516f9c7..11aa5654c5 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-InnerSelect-PartTable2.mdp
@@ -176,7 +176,7 @@ select * from bar, (select * from foo where foo.a in (select h.a from bar h, bar
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.50586.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
+ <dxl:Relation Mdid="6.50586.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,8,2" PartitionColumns="1" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -289,7 +289,7 @@ select * from bar, (select * from foo where foo.a in (select h.a from bar h, bar
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.57376.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.57376.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.57376.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-LeftOuter-NLJoin.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-LeftOuter-NLJoin.mdp
index 5f532b7337..31e8fef586 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-LeftOuter-NLJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-LeftOuter-NLJoin.mdp
@@ -87,7 +87,7 @@ explain select * from t0 left join t1 on t0.a=t1.a left join t2 on (t2.a=t0.a an
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.195592.1.0" Name="t2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.195592.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;8,2">
+ <dxl:Relation Mdid="6.195592.1.0" Name="t2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
@@ -149,7 +149,7 @@ explain select * from t0 left join t1 on t0.a=t1.a left join t2 on (t2.a=t0.a an
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.195615.1.0" Name="t4" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.195615.1.0" Name="t4" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
+ <dxl:Relation Mdid="6.195615.1.0" Name="t4" IsTemporary="false" Rows="0.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -235,7 +235,7 @@ explain select * from t0 left join t1 on t0.a=t1.a left join t2 on (t2.a=t0.a an
<dxl:ColumnStatistics Mdid="1.195615.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.195615.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.195656.1.0" Name="t0" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.195656.1.0" Name="t0" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.195656.1.0" Name="t0" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -260,7 +260,7 @@ explain select * from t0 left join t1 on t0.a=t1.a left join t2 on (t2.a=t0.a an
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.195670.1.0" Name="t3" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.195670.1.0" Name="t3" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
+ <dxl:Relation Mdid="6.195670.1.0" Name="t3" IsTemporary="false" Rows="0.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="4,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -313,7 +313,7 @@ explain select * from t0 left join t1 on t0.a=t1.a left join t2 on (t2.a=t0.a an
<dxl:ColumnStatistics Mdid="1.195592.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.195656.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.195576.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.195576.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;8,2">
+ <dxl:Relation Mdid="6.195576.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKey-WithComplexPreds.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKey-WithComplexPreds.mdp
index fce4047512..1ef0baf85f 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKey-WithComplexPreds.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKey-WithComplexPreds.mdp
@@ -35,7 +35,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.16385.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -65,7 +65,7 @@
</dxl:Opfamilies>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.16388.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap-WithComplexPreds.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap-WithComplexPreds.mdp
index 6b2603edc7..ce9bc9a526 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap-WithComplexPreds.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap-WithComplexPreds.mdp
@@ -143,7 +143,7 @@
<dxl:ColumnStatistics Mdid="1.98259.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.98259.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.98259.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.98259.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.98259.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -168,7 +168,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.98262.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.98262.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.98262.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap.mdp
index 05fc022997..d8c1a72dad 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-MultiDistKeys-Bitmap.mdp
@@ -135,7 +135,7 @@
<dxl:ColumnStatistics Mdid="1.98259.1.0.1" Name="b" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.98259.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.98259.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.98259.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.98259.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -160,7 +160,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.98262.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.98262.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
+ <dxl:Relation Mdid="6.98262.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
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 b2432d3845..4dc387e3ba 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
@@ -153,7 +153,7 @@
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.409633.1.0" Name="foo" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.409633.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="11,5">
+ <dxl:Relation Mdid="6.409633.1.0" Name="foo" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -189,7 +189,7 @@
</dxl:DistrOpfamilies>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.409636.1.0" Name="bar" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.409636.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="11,5">
+ <dxl:Relation Mdid="6.409636.1.0" Name="bar" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0,1,2" Keys="11,5">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-No-Motion-Below-Join.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-No-Motion-Below-Join.mdp
index eeaeddd53e..038c4f54b0 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-No-Motion-Below-Join.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-No-Motion-Below-Join.mdp
@@ -14,7 +14,7 @@ Table X (int i, int j) is distributed by i, column j has index
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16422594.1.1" Name="x" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16422594.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16422594.1.0" Name="x" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -43,7 +43,7 @@ Table X (int i, int j) is distributed by i, column j has index
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.16422594.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16422594.1.1" Name="x" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-PartKey-Is-IndexKey.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-PartKey-Is-IndexKey.mdp
index fe977279da..e5fe129fdd 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-PartKey-Is-IndexKey.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-PartKey-Is-IndexKey.mdp
@@ -182,7 +182,7 @@ select z_p.j from z_p,tt_p where z_p.i=6 and z_p.i<tt_p.i;
</dxl:Partitions>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.41880825.1.1" Name="tt_p" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.41880825.1.0" Name="tt_p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.41880825.1.0" Name="tt_p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -294,7 +294,7 @@ select z_p.j from z_p,tt_p where z_p.i=6 and z_p.i<tt_p.i;
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.41880825.1.1" Name="tt_p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.41880825.1.1" Name="tt_p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Random" Keys="7,8,2" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -424,7 +424,7 @@ select z_p.j from z_p,tt_p where z_p.i=6 and z_p.i<tt_p.i;
</dxl:Partitions>
</dxl:Index>
<dxl:RelationStatistics Mdid="2.41880987.1.1" Name="z_p" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.41880987.1.0" Name="z_p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.41880987.1.0" Name="z_p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -545,7 +545,7 @@ select z_p.j from z_p,tt_p where z_p.i=6 and z_p.i<tt_p.i;
</dxl:And>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.41880987.1.1" Name="z_p" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.41880987.1.1" Name="z_p" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,9,3" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-PartResolverExpand.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-PartResolverExpand.mdp
index 5a6f7baf6f..1a79c9ba40 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-PartResolverExpand.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-PartResolverExpand.mdp
@@ -263,7 +263,7 @@ select count(*) from x10, y10 where (x10.i > y10.j AND x10.j <= y10.i);
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.26854881.1.1" Name="x10" Rows="10.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.26854881.1.1" Name="x10" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.26854881.1.1" Name="x10" IsTemporary="false" Rows="10.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="33">
</dxl:Column>
@@ -292,7 +292,7 @@ select count(*) from x10, y10 where (x10.i > y10.j AND x10.j <= y10.i);
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.26854909.1.1" Name="y10" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.26854909.1.0" Name="y10" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.26854909.1.0" Name="y10" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="33">
</dxl:Column>
@@ -328,7 +328,7 @@ select count(*) from x10, y10 where (x10.i > y10.j AND x10.j <= y10.i);
</dxl:Comparison>
</dxl:PartConstraint>
</dxl:Relation>
- <dxl:Relation Mdid="6.26854909.1.1" Name="y10" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
+ <dxl:Relation Mdid="6.26854909.1.1" Name="y10" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="1" Keys="9,10,4" PartitionColumns="0" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.25.1.0" Nullable="true" ColWidth="33">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-PartTable.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-PartTable.mdp
index 52c5a287ff..33811e8b7d 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-PartTable.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-PartTable.mdp
@@ -54,7 +54,7 @@ ORDER BY 1 asc ;
<dxl:TraceFlags Value="102001,102002,102003,102024,103046,103045,102115,102116,102117,102119,102144,103027,103033"/>
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
- <dxl:Relation Mdid="6.16166659.1.0" Name="my_tq_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16166659.1.0" Name="my_tq_agg_small" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -233,7 +233,7 @@ ORDER BY 1 asc ;
</dxl:PartConstraint>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16166659.1.1" Name="my_tq_agg_small" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16166659.1.1" Name="my_tq_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
+ <dxl:Relation Mdid="6.16166659.1.1" Name="my_tq_agg_small" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,11,5" PartitionColumns="2" PartitionTypes="r">
<dxl:Columns>
<dxl:Column Name="ets" Attno="1" Mdid="0.20.1.0" Nullable="true" ColWidth="8">
</dxl:Column>
@@ -1490,7 +1490,7 @@ ORDER BY 1 asc ;
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.16166631.1.1" Name="my_tt_agg_small" Rows="420.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16166631.1.1" Name="my_tt_agg_small" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.16166631.1.1" Name="my_tt_agg_small" IsTemporary="false" Rows="420.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="symbol" Attno="1" Mdid="0.1042.1.0" Nullable="true" ColWidth="16">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply-Redistribute-Const-Table.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply-Redistribute-Const-Table.mdp
index fc34ca2f78..c1b939b101 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply-Redistribute-Const-Table.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply-Redistribute-Const-Table.mdp
@@ -14,7 +14,7 @@ Table X (int i, int j) is distributed by i, column i has index
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16422594.1.1" Name="x" Rows="100.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.16422594.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16422594.1.0" Name="x" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -43,7 +43,7 @@ Table X (int i, int j) is distributed by i, column i has index
</dxl:IndexInfoList>
<dxl:CheckConstraints/>
</dxl:Relation>
- <dxl:Relation Mdid="6.16422594.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.16422594.1.1" Name="x" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply1-CalibratedCostModel.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply1-CalibratedCostModel.mdp
index 8b6524981b..1766c364d1 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply1-CalibratedCostModel.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply1-CalibratedCostModel.mdp
@@ -174,7 +174,7 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.27319.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.27319.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
- <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -277,7 +277,7 @@
<dxl:ColumnStatistics Mdid="1.40972.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.40972.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
<dxl:RelationStatistics Mdid="2.27319.1.1" Name="x" Rows="610848.000000"/>
- <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" Rows="610848.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -623,7 +623,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply1.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply1.mdp
index 33ba760654..b7518a083b 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply1.mdp
@@ -169,7 +169,7 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.27319.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.27319.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
- <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -272,7 +272,7 @@
<dxl:ColumnStatistics Mdid="1.40972.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.40972.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
<dxl:RelationStatistics Mdid="2.27319.1.1" Name="x" Rows="610848.000000"/>
- <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" Rows="610848.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -618,7 +618,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply2.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply2.mdp
index 9a576beb68..63b9265c3e 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply2.mdp
@@ -169,7 +169,7 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.27319.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.27319.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
- <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -265,7 +265,7 @@
<dxl:ColumnStatistics Mdid="1.40972.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.40972.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
<dxl:RelationStatistics Mdid="2.27319.1.1" Name="x" Rows="610848.000000"/>
- <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" Rows="610848.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -611,7 +611,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply3.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply3.mdp
index 1cf5af9900..8f6a0e301e 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply3.mdp
@@ -169,7 +169,7 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.27319.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.27319.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
- <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -272,7 +272,7 @@
<dxl:ColumnStatistics Mdid="1.40972.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.40972.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
<dxl:RelationStatistics Mdid="2.27319.1.1" Name="x" Rows="610848.000000"/>
- <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" Rows="610848.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -618,7 +618,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply4.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply4.mdp
index ecf21351b8..6fe6ceb9c9 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply4.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply4.mdp
@@ -169,7 +169,7 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.27319.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.27319.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
- <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.0" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -272,7 +272,7 @@
<dxl:ColumnStatistics Mdid="1.40972.1.1.5" Name="xmax" Width="4.000000" NullFreq="0.000000"/>
<dxl:ColumnStatistics Mdid="1.40972.1.1.4" Name="cmin" Width="4.000000" NullFreq="0.000000"/>
<dxl:RelationStatistics Mdid="2.27319.1.1" Name="x" Rows="610848.000000"/>
- <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.27319.1.1" Name="x" IsTemporary="false" Rows="610848.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -618,7 +618,7 @@
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.40972.1.1" Name="y" Rows="10000.000000"/>
- <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.40972.1.1" Name="y" IsTemporary="false" Rows="10000.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="i" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexApply_NestLoopWithNestParamTrue.mdp b/src/backend/gporca/data/dxl/minidump/IndexApply_NestLoopWithNestParamTrue.mdp
index afb757951c..d00730366a 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexApply_NestLoopWithNestParamTrue.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexApply_NestLoopWithNestParamTrue.mdp
@@ -42,7 +42,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.16385.1.0" Name="t1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16385.1.0" Name="t1" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -69,7 +69,7 @@
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.16388.1.0" Name="t2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.16388.1.0" Name="t2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.16388.1.0" Name="t2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexConstraintsMDidCache.mdp b/src/backend/gporca/data/dxl/minidump/IndexConstraintsMDidCache.mdp
index cb0b565061..a4857b7ca4 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexConstraintsMDidCache.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexConstraintsMDidCache.mdp
@@ -104,7 +104,7 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Relation Mdid="6.16400.1.0" Name="test_mdid" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;10,4">
+ <dxl:Relation Mdid="6.16400.1.0" Name="test_mdid" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexGet-OuterRefs.mdp b/src/backend/gporca/data/dxl/minidump/IndexGet-OuterRefs.mdp
index e5e6f2ca16..3d0f031ea2 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexGet-OuterRefs.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexGet-OuterRefs.mdp
@@ -128,7 +128,7 @@
<dxl:ColumnStatistics Mdid="1.1077075.1.1.5" Name="xmax" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1077075.1.1.4" Name="cmin" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.1077075.1.1" Name="r" Rows="0.000000"/>
- <dxl:Relation Mdid="6.1077075.1.1" Name="r" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1077075.1.1" Name="r" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -155,7 +155,7 @@
<dxl:ColumnStatistics Mdid="1.1119916.1.1.7" Name="tableoid" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.1119916.1.1.6" Name="cmax" Width="4.000000"/>
<dxl:RelationStatistics Mdid="2.1119916.1.1" Name="t" Rows="0.000000"/>
- <dxl:Relation Mdid="6.1119916.1.1" Name="t" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Relation Mdid="6.1119916.1.1" Name="t" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexNLJ-IndexGet-OuterRef.mdp b/src/backend/gporca/data/dxl/minidump/IndexNLJ-IndexGet-OuterRef.mdp
index 25a24b7b6a..04b9d846a4 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexNLJ-IndexGet-OuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexNLJ-IndexGet-OuterRef.mdp
@@ -26,7 +26,7 @@
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
<dxl:RelationStatistics Mdid="2.98304.1.0" Name="foo" Rows="100145.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.98304.1.0" Name="foo" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.98304.1.0" Name="foo" IsTemporary="false" Rows="100145.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
@@ -61,7 +61,7 @@
<dxl:Opfamily Mdid="0.1976.1.0"/>
</dxl:Opfamilies>
</dxl:Index>
- <dxl:Relation Mdid="6.98319.1.0" Name="bar" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
+ <dxl:Relation Mdid="6.98319.1.0" Name="bar" IsTemporary="false" Rows="100.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="9,3">
<dxl:Columns>
<dxl:Column Name="c" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp b/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp
index 89bdc5313f..e7e48843a7 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp
@@ -176,7 +176,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
<dxl:RelationStatistics Mdid="2.130073.1.0" Name="r2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.130073.1.0" Name="r2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;7,1">
+ <dxl:Relation Mdid="6.130073.1.0" Name="r2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;7,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.1043.1.0" Nullable="false" ColWidth="8">
</dxl:Column>
@@ -201,7 +201,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.130094.1.0" Name="s2" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.130094.1.0" Name="s2" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;7,1">
+ <dxl:Relation Mdid="6.130094.1.0" Name="s2" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="0;7,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.1043.1.0" Nullable="false" ColWidth="8">
</dxl:Column>
@@ -240,7 +240,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
</dxl:Index>
<dxl:ColumnStatistics Mdid="1.130094.1.0.0" Name="b" Width="8.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:RelationStatistics Mdid="2.122064.1.0" Name="r1" Rows="11.000000" EmptyRelation="false"/>
- <dxl:Relation Mdid="6.122064.1.0" Name="r1" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,1">
+ <dxl:Relation Mdid="6.122064.1.0" Name="r1" IsTemporary="false" Rows="11.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,1">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="2">
</dxl:Column>
@@ -257,7 +257,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
<dxl:CheckConstraints/>
</dxl:Relation>
<dxl:RelationStatistics Mdid="2.122074.1.0" Name="s1" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.122074.1.0" Name="s1" IsTemporary="false" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,1">
+ <dxl:Relation Mdid="6.122074.1.0" Name="s1" IsTemporary="false" Rows="0.000000" StorageType="AppendOnly, Row-oriented" DistributionPolicy="Hash" DistributionColumns="0" Keys="3,1">
<dxl:Columns>
<dxl:Column Name="b" Attno="1" Mdid="0.1043.1.0" Nullable="true" ColWidth="2">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddNewPartitionToRootTableContainingHeterogenousIndex.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddNewPartitionToRootTableContainingHeterogenousIndex.mdp
index 9bb83acf3c..0de36c67f6 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddNewPartitionToRootTableContainingHeterogenousIndex.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddNewPartitionToRootTableContainingHeterogenousIndex.mdp
@@ -80,7 +80,7 @@ EXPLAIN SELECT * FROM foo_1_prt_p3 WHERE c > 10;
<dxl:Opfamily Mdid="0.3027.1.0"/>
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
- <dxl:Relation Mdid="6.829513.1.0" Name="foo_1_prt_p3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.829513.1.0" Name="foo_1_prt_p3" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddPartitionToRootWithHomogenousIndex.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddPartitionToRootWithHomogenousIndex.mdp
index 489872d557..99f96f535a 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddPartitionToRootWithHomogenousIndex.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-AddPartitionToRootWithHomogenousIndex.mdp
@@ -305,7 +305,7 @@ EXPLAIN SELECT * FROM foo_1_prt_p3 WHERE c > 10;
</dxl:Opfamilies>
</dxl:GPDBScalarOp>
<dxl:RelationStatistics Mdid="2.829357.1.0" Name="foo_1_prt_p3" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.829357.1.0" Name="foo_1_prt_p3" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
+ <dxl:Relation Mdid="6.829357.1.0" Name="foo_1_prt_p3" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="10,4">
<dxl:Columns>
<dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
</dxl:Column>
diff --git a/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-IndexOnPartitionsWithDifferentStorageTypes.mdp b/src/backend/gporca/data/dxl/minidump/IndexOnLeaf-IndexOnPartitionsWithDifferentStorageTypes.mdp
index 528984fa9c..21740d060d 100644
... 12587 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 01/30: Remove unused index strategy and subtype information from Orca (#16868)
Posted by ma...@apache.org.
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 38d8088792319ce214daccd50a17e9d435c53dc8
Author: Chris Hajas <ch...@vmware.com>
AuthorDate: Tue Dec 19 09:18:35 2023 -0800
Remove unused index strategy and subtype information from Orca (#16868)
Since the GPDB 5 merge, this logic is now done during execution and is no longer populated in the plan node. Thus Orca doesn't need to retrieve this information and we can simplify some code paths.
Additionally, the previous code was wrong and wouldn't work: we were populating the index strategy information with the subtype oid:
```
*index_strategy_list = gpdb::LAppendInt(*index_strategy_list, index_qual_info->m_index_subtype_oid);
```
---
.../gpopt/translate/CTranslatorDXLToPlStmt.cpp | 65 ++++------------------
src/backend/gpopt/translate/CTranslatorUtils.cpp | 51 -----------------
src/include/gpopt/translate/CIndexQualInfo.h | 15 +----
.../gpopt/translate/CTranslatorDXLToPlStmt.h | 3 +-
src/include/gpopt/translate/CTranslatorUtils.h | 6 --
5 files changed, 13 insertions(+), 127 deletions(-)
diff --git a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
index b6b8231ae2..b4e06c53c3 100644
--- a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
+++ b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
@@ -865,8 +865,6 @@ CTranslatorDXLToPlStmt::TranslateDXLIndexScan(
// translate index condition list
List *index_cond = NIL;
List *index_orig_cond = NIL;
- List *index_strategy_list = NIL;
- List *index_subtype_list = NIL;
// Translate Index Conditions if Index isn't used for order by.
if (!IsIndexForOrderBy(&base_table_context, ctxt_translation_prev_siblings,
@@ -878,8 +876,7 @@ CTranslatorDXLToPlStmt::TranslateDXLIndexScan(
physical_idx_scan_dxlop->GetDXLTableDescr(),
false, // is_bitmap_index_probe
md_index, md_rel, output_context, &base_table_context,
- ctxt_translation_prev_siblings, &index_cond, &index_orig_cond,
- &index_strategy_list, &index_subtype_list);
+ ctxt_translation_prev_siblings, &index_cond, &index_orig_cond);
}
index_scan->indexqual = index_cond;
@@ -1019,8 +1016,6 @@ CTranslatorDXLToPlStmt::TranslateDXLIndexOnlyScan(
// translate index condition list
List *index_cond = NIL;
List *index_orig_cond = NIL;
- List *index_strategy_list = NIL;
- List *index_subtype_list = NIL;
// Translate Index Conditions if Index isn't used for order by.
if (!IsIndexForOrderBy(&base_table_context, ctxt_translation_prev_siblings,
@@ -1032,8 +1027,7 @@ CTranslatorDXLToPlStmt::TranslateDXLIndexOnlyScan(
physical_idx_scan_dxlop->GetDXLTableDescr(),
false, // is_bitmap_index_probe
md_index, md_rel, output_context, &base_table_context,
- ctxt_translation_prev_siblings, &index_cond, &index_orig_cond,
- &index_strategy_list, &index_subtype_list);
+ ctxt_translation_prev_siblings, &index_cond, &index_orig_cond);
}
index_scan->indexqual = index_cond;
@@ -1092,8 +1086,7 @@ CTranslatorDXLToPlStmt::TranslateIndexConditions(
const IMDRelation *md_rel, CDXLTranslateContext *output_context,
CDXLTranslateContextBaseTable *base_table_context,
CDXLTranslationContextArray *ctxt_translation_prev_siblings,
- List **index_cond, List **index_orig_cond, List **index_strategy_list,
- List **index_subtype_list)
+ List **index_cond, List **index_orig_cond)
{
// array of index qual info
CIndexQualInfoArray *index_qual_info_array =
@@ -1180,12 +1173,10 @@ CTranslatorDXLToPlStmt::TranslateIndexConditions(
Node *left_arg;
Node *right_arg;
- bool is_null_test_type = false;
if (IsA(index_cond_expr, NullTest))
{
// NullTest only has one arg
left_arg = (Node *) (((NullTest *) index_cond_expr)->arg);
- is_null_test_type = true;
right_arg = nullptr;
}
else
@@ -1247,33 +1238,10 @@ CTranslatorDXLToPlStmt::TranslateIndexConditions(
attno = ((Var *) right_arg)->varattno;
}
- // NullTest indexqual doesn't need strategy or subtype
- if (is_null_test_type)
- {
- index_qual_info_array->Append(GPOS_NEW(m_mp) CIndexQualInfo(
- attno, index_cond_expr, original_index_cond_expr,
- InvalidStrategy, InvalidOid));
- }
- else
- {
- // retrieve index strategy and subtype
- StrategyNumber strategy_num;
- OID index_subtype_oid = InvalidOid;
-
- OID cmp_operator_oid =
- CTranslatorUtils::OidCmpOperator(index_cond_expr);
- GPOS_ASSERT(InvalidOid != cmp_operator_oid);
- OID op_family_oid = CTranslatorUtils::GetOpFamilyForIndexQual(
- attno, CMDIdGPDB::CastMdid(index->MDId())->Oid());
- GPOS_ASSERT(InvalidOid != op_family_oid);
- gpdb::IndexOpProperties(cmp_operator_oid, op_family_oid,
- &strategy_num, &index_subtype_oid);
-
- // create index qual
- index_qual_info_array->Append(GPOS_NEW(m_mp) CIndexQualInfo(
- attno, index_cond_expr, original_index_cond_expr, strategy_num,
- index_subtype_oid));
- }
+ // create index qual
+ index_qual_info_array->Append(GPOS_NEW(m_mp) CIndexQualInfo(
+ attno, index_cond_expr, original_index_cond_expr));
+
if (modified_null_test_cond_dxlnode != nullptr)
{
modified_null_test_cond_dxlnode->Release();
@@ -1290,10 +1258,6 @@ CTranslatorDXLToPlStmt::TranslateIndexConditions(
*index_cond = gpdb::LAppend(*index_cond, index_qual_info->m_expr);
*index_orig_cond =
gpdb::LAppend(*index_orig_cond, index_qual_info->m_original_expr);
- *index_strategy_list = gpdb::LAppendInt(
- *index_strategy_list, index_qual_info->m_index_subtype_oid);
- *index_subtype_list = gpdb::LAppendOid(
- *index_subtype_list, index_qual_info->m_index_subtype_oid);
}
// clean up
@@ -4507,8 +4471,6 @@ CTranslatorDXLToPlStmt::TranslateDXLDynIdxOnlyScan(
// translate index condition list
List *index_cond = NIL;
List *index_orig_cond = NIL;
- List *index_strategy_list = NIL;
- List *index_subtype_list = NIL;
TranslateIndexConditions(
(*dyn_idx_only_scan_dxlnode)
@@ -4516,8 +4478,7 @@ CTranslatorDXLToPlStmt::TranslateDXLDynIdxOnlyScan(
dyn_index_only_scan_dxlop->GetDXLTableDescr(),
false, // is_bitmap_index_probe
md_index, md_rel, output_context, &base_table_context,
- ctxt_translation_prev_siblings, &index_cond, &index_orig_cond,
- &index_strategy_list, &index_subtype_list);
+ ctxt_translation_prev_siblings, &index_cond, &index_orig_cond);
dyn_idx_only_scan->indexscan.indexqual = index_cond;
@@ -4590,8 +4551,6 @@ CTranslatorDXLToPlStmt::TranslateDXLDynIdxScan(
// translate index condition list
List *index_cond = NIL;
List *index_orig_cond = NIL;
- List *index_strategy_list = NIL;
- List *index_subtype_list = NIL;
TranslateIndexConditions(
(*dyn_idx_only_scan_dxlnode)
@@ -4599,8 +4558,7 @@ CTranslatorDXLToPlStmt::TranslateDXLDynIdxScan(
dyn_index_scan_dxlop->GetDXLTableDescr(),
false, // is_bitmap_index_probe
md_index, md_rel, output_context, &base_table_context,
- ctxt_translation_prev_siblings, &index_cond, &index_orig_cond,
- &index_strategy_list, &index_subtype_list);
+ ctxt_translation_prev_siblings, &index_cond, &index_orig_cond);
dyn_idx_only_scan->indexscan.indexqual = index_cond;
@@ -6688,14 +6646,11 @@ CTranslatorDXLToPlStmt::TranslateDXLBitmapIndexProbe(
CDXLNode *index_cond_list_dxlnode = (*bitmap_index_probe_dxlnode)[0];
List *index_cond = NIL;
List *index_orig_cond = NIL;
- List *index_strategy_list = NIL;
- List *index_subtype_list = NIL;
TranslateIndexConditions(
index_cond_list_dxlnode, table_descr, true /*is_bitmap_index_probe*/,
index, md_rel, output_context, base_table_context,
- ctxt_translation_prev_siblings, &index_cond, &index_orig_cond,
- &index_strategy_list, &index_subtype_list);
+ ctxt_translation_prev_siblings, &index_cond, &index_orig_cond);
bitmap_idx_scan->indexqual = index_cond;
bitmap_idx_scan->indexqualorig = index_orig_cond;
diff --git a/src/backend/gpopt/translate/CTranslatorUtils.cpp b/src/backend/gpopt/translate/CTranslatorUtils.cpp
index 904c455844..0887c72725 100644
--- a/src/backend/gpopt/translate/CTranslatorUtils.cpp
+++ b/src/backend/gpopt/translate/CTranslatorUtils.cpp
@@ -792,57 +792,6 @@ CTranslatorUtils::GetScanDirection(EdxlIndexScanDirection idx_scan_direction)
return NoMovementScanDirection;
}
-//---------------------------------------------------------------------------
-// @function:
-// CTranslatorUtils::OidCmpOperator
-//
-// @doc:
-// Extract comparison operator from an OpExpr, ScalarArrayOpExpr or RowCompareExpr
-//
-//---------------------------------------------------------------------------
-OID
-CTranslatorUtils::OidCmpOperator(Expr *expr)
-{
- GPOS_ASSERT(IsA(expr, OpExpr) || IsA(expr, ScalarArrayOpExpr) ||
- IsA(expr, RowCompareExpr));
-
- switch (expr->type)
- {
- case T_OpExpr:
- return ((OpExpr *) expr)->opno;
-
- case T_ScalarArrayOpExpr:
- return ((ScalarArrayOpExpr *) expr)->opno;
-
- case T_RowCompareExpr:
- return LInitialOID(((RowCompareExpr *) expr)->opnos);
-
- default:
- GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXL2PlStmtConversion,
- GPOS_WSZ_LIT("Unsupported comparison"));
- return InvalidOid;
- }
-}
-
-//---------------------------------------------------------------------------
-// @function:
-// CTranslatorUtils::GetOpFamilyForIndexQual
-//
-// @doc:
-// Extract comparison operator family for the given index column
-//
-//---------------------------------------------------------------------------
-OID
-CTranslatorUtils::GetOpFamilyForIndexQual(INT attno, OID index_oid)
-{
- gpdb::RelationWrapper rel = gpdb::GetRelation(index_oid);
- GPOS_ASSERT(rel);
- GPOS_ASSERT(attno <= rel->rd_index->indnatts);
-
- OID op_family_oid = rel->rd_opfamily[attno - 1];
-
- return op_family_oid;
-}
//---------------------------------------------------------------------------
// @function:
diff --git a/src/include/gpopt/translate/CIndexQualInfo.h b/src/include/gpopt/translate/CIndexQualInfo.h
index b2c45d080c..52c9853d94 100644
--- a/src/include/gpopt/translate/CIndexQualInfo.h
+++ b/src/include/gpopt/translate/CIndexQualInfo.h
@@ -48,20 +48,9 @@ public:
// original index qual expression
Expr *m_original_expr;
- // index strategy information
- StrategyNumber m_strategy_num;
-
- // index subtype
- OID m_index_subtype_oid;
-
// ctor
- CIndexQualInfo(AttrNumber attno, Expr *expr, Expr *original_expr,
- StrategyNumber strategy_number, OID index_subtype_oid)
- : m_attno(attno),
- m_expr(expr),
- m_original_expr(original_expr),
- m_strategy_num(strategy_number),
- m_index_subtype_oid(index_subtype_oid)
+ CIndexQualInfo(AttrNumber attno, Expr *expr, Expr *original_expr)
+ : m_attno(attno), m_expr(expr), m_original_expr(original_expr)
{
GPOS_ASSERT((IsA(m_expr, OpExpr) && IsA(m_original_expr, OpExpr)) ||
(IsA(m_expr, ScalarArrayOpExpr) &&
diff --git a/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h b/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
index d37da06dba..50a250edca 100644
--- a/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
+++ b/src/include/gpopt/translate/CTranslatorDXLToPlStmt.h
@@ -562,8 +562,7 @@ private:
const IMDRelation *md_rel, CDXLTranslateContext *output_context,
CDXLTranslateContextBaseTable *base_table_context,
CDXLTranslationContextArray *ctxt_translation_prev_siblings,
- List **index_cond, List **index_orig_cond, List **index_strategy_list,
- List **index_subtype_list);
+ List **index_cond, List **index_orig_cond);
// translate the index filters
List *TranslateDXLIndexFilter(
diff --git a/src/include/gpopt/translate/CTranslatorUtils.h b/src/include/gpopt/translate/CTranslatorUtils.h
index a7add28929..b6187ad099 100644
--- a/src/include/gpopt/translate/CTranslatorUtils.h
+++ b/src/include/gpopt/translate/CTranslatorUtils.h
@@ -134,12 +134,6 @@ public:
static ScanDirection GetScanDirection(
EdxlIndexScanDirection idx_scan_direction);
- // get the oid of comparison operator
- static OID OidCmpOperator(Expr *expr);
-
- // get the opfamily for index key
- static OID GetOpFamilyForIndexQual(INT attno, OID oid_index);
-
// find the n-th column descriptor in the table descriptor
static const CDXLColDescr *GetColumnDescrAt(
const CDXLTableDescr *table_descr, ULONG pos);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 13/30: [ORCA] Implement plan hints for scan types (#16731)
Posted by ma...@apache.org.
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 f9c64761ce530d9d25274f6766393f6eeb289afe
Author: David Kimura <dk...@vmware.com>
AuthorDate: Fri Jan 12 11:03:16 2024 -0800
[ORCA] Implement plan hints for scan types (#16731)
Plan hints is a way to override the optimizer in order to coerce a plan
shape by disregarding its estimated cost compared to alternative plans.
The feature offers two significant benefits:
1) It enables an immediate customer workaround for bugs in the
optimizer when optimizer generates an inferior plan.
2) It enables easy testing of plan performance which in turn can be
used to drive optimizer improvements.
For more discussion (including drawbacks) refer to gpdb-dev thread [1].
This change is the first to implement support for plan hints in GPDB.
In this patch, only scan hints are implemented. The syntax mirrors
Postgres extension pg_hint_plan [2].
Following hints are supported:
SeqScan
NoSeqScan
IndexScan
NoIndexScan
IndexOnlyScan,
NoIndexOnlyScan
BitmapScan
NoBitmapScan
Example usage:
LOAD 'pg_hint_plan';
CREATE TABLE my_table(a int, b int);
CREATE INDEX my_awesome_index ON my_table(a);
CREATE INDEX my_incredible_index ON my_table(a);
/*+
IndexScan(t1 my_incredible_index)
*/
EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
In DXL format the hint looks like:
```
<dxl:OptimizerConfig>
...
<dxl:PlanHint>
<dxl:ScanHint Alias="t1" OperatorName="IndexScan" IndexName="my_incredible_index"/>
</dxl:PlanHint>
...
</dxl:OptimizerConfig>
```
Note: This feature depends on a patch version of pg_hint_plan installed
on the GPDB cluster. This patch includes only the changes relevant to
the ORCA optimizer.
For more details refer to src/backend/gporca/libgpopt/src/hints/README
[1] https://groups.google.com/a/greenplum.org/g/gpdb-dev/c/V-p8mASZmEo/m/d22ai2ldDwAJ
[2] https://github.com/ossc-db/pg_hint_plan
---
src/backend/gpopt/utils/COptTasks.cpp | 124 +-
.../dxl/minidump/Hint-BitmapScan-Over-Table.mdp | 316 ++++
.../dxl/minidump/Hint-IndexOnlyScan-Over-Table.mdp | 287 ++++
.../data/dxl/minidump/Hint-IndexScan-Over-Join.mdp | 366 +++++
.../dxl/minidump/Hint-IndexScan-Over-Table.mdp | 289 ++++
.../dxl/minidump/Hint-NoBitmapScan-Over-Table.mdp | 277 ++++
.../minidump/Hint-NoIndexOnlyScan-Over-Table.mdp | 286 ++++
.../dxl/minidump/Hint-NoIndexScan-Over-Table.mdp | 291 ++++
.../data/dxl/minidump/Hint-SeqScan-Over-Join.mdp | 360 +++++
.../data/dxl/minidump/Hint-SeqScan-Over-Table.mdp | 291 ++++
.../libgpopt/include/gpopt/hints/CHintUtils.h | 53 +
.../libgpopt/include/gpopt/hints/CPlanHint.h | 58 +
.../libgpopt/include/gpopt/hints/CScanHint.h | 112 ++
.../gporca/libgpopt/include/gpopt/hints/IHint.h | 27 +
.../gpopt/operators/CScalarBitmapIndexProbe.h | 13 +-
.../include/gpopt/optimizer/COptimizerConfig.h | 12 +-
src/backend/gporca/libgpopt/src/Makefile | 2 +-
.../gporca/libgpopt/src/hints/CHintUtils.cpp | 241 +++
.../gporca/libgpopt/src/hints/CPlanHint.cpp | 93 ++
.../gporca/libgpopt/src/hints/CScanHint.cpp | 146 ++
src/backend/gporca/libgpopt/src/hints/Makefile | 16 +
src/backend/gporca/libgpopt/src/hints/README | 116 ++
.../src/operators/CScalarBitmapIndexProbe.cpp | 8 +-
.../libgpopt/src/optimizer/COptimizerConfig.cpp | 23 +-
.../xforms/CXformDynamicGet2DynamicTableScan.cpp | 9 +
.../CXformDynamicIndexGet2DynamicIndexScan.cpp | 9 +
...ormDynamicIndexOnlyGet2DynamicIndexOnlyScan.cpp | 9 +
.../libgpopt/src/xforms/CXformGet2TableScan.cpp | 9 +
.../xforms/CXformIndexOnlyGet2IndexOnlyScan.cpp | 9 +
.../gporca/libgpopt/src/xforms/CXformUtils.cpp | 79 +-
.../libnaucrates/include/naucrates/dxl/CDXLUtils.h | 37 +
.../naucrates/dxl/parser/CParseHandlerBase.h | 1 +
.../naucrates/dxl/parser/CParseHandlerFactory.h | 5 +
.../naucrates/dxl/parser/CParseHandlerPlanHint.h | 76 +
.../include/naucrates/dxl/parser/parsehandlers.h | 1 +
.../include/naucrates/dxl/xml/dxltokens.h | 2 +
src/backend/gporca/libnaucrates/src/CDXLUtils.cpp | 27 +
.../src/operators/CDXLOperatorFactory.cpp | 6 +-
.../src/parser/CParseHandlerFactory.cpp | 11 +
.../src/parser/CParseHandlerOptimizerConfig.cpp | 35 +-
.../src/parser/CParseHandlerPlanHint.cpp | 177 +++
.../gporca/libnaucrates/src/parser/Makefile | 1 +
.../gporca/libnaucrates/src/xml/dxltokens.cpp | 2 +
src/backend/gporca/server/CMakeLists.txt | 6 +
.../gporca/server/src/unittest/CTestUtils.cpp | 6 +-
.../src/unittest/gpopt/minidump/CICGTest.cpp | 2 +-
.../unittest/gpopt/minidump/CMiniDumperDXLTest.cpp | 3 +-
.../unittest/gpopt/minidump/CMissingStatsTest.cpp | 2 +-
.../unittest/gpopt/operators/CExpressionTest.cpp | 8 +-
src/include/gpopt/utils/COptTasks.h | 7 +-
src/include/optimizer/hints.h | 235 +++
src/include/optimizer/orca.h | 4 +
src/include/parser/parse_relation.h | 1 +
src/test/regress/expected/planhints.out | 1564 ++++++++++++++++++++
src/test/regress/sql/planhints.sql | 546 +++++++
55 files changed, 6669 insertions(+), 27 deletions(-)
diff --git a/src/backend/gpopt/utils/COptTasks.cpp b/src/backend/gpopt/utils/COptTasks.cpp
index b339a8da73..8d99f5f93e 100644
--- a/src/backend/gpopt/utils/COptTasks.cpp
+++ b/src/backend/gpopt/utils/COptTasks.cpp
@@ -17,6 +17,8 @@
extern "C" {
#include "cdb/cdbvars.h"
+#include "optimizer/hints.h"
+#include "optimizer/orca.h"
#include "utils/fmgroids.h"
#include "utils/guc.h"
}
@@ -39,6 +41,7 @@ extern "C" {
#include "gpopt/eval/CConstExprEvaluatorDXL.h"
#include "gpopt/exception.h"
#include "gpopt/gpdbwrappers.h"
+#include "gpopt/hints/CPlanHint.h"
#include "gpopt/mdcache/CAutoMDAccessor.h"
#include "gpopt/mdcache/CMDCache.h"
#include "gpopt/minidump/CMinidumperUtils.h"
@@ -84,6 +87,8 @@ using namespace gpdbcost;
// default id for the source system
const CSystemId default_sysid(IMDId::EmdidGeneral, GPOS_WSZ_STR_LENGTH("GPDB"));
+plan_hint_hook_type plan_hint_hook = nullptr;
+
//---------------------------------------------------------------------------
// @function:
@@ -346,7 +351,8 @@ COptTasks::LoadSearchStrategy(CMemoryPool *mp, char *path)
//
//---------------------------------------------------------------------------
COptimizerConfig *
-COptTasks::CreateOptimizerConfig(CMemoryPool *mp, ICostModel *cost_model)
+COptTasks::CreateOptimizerConfig(CMemoryPool *mp, ICostModel *cost_model,
+ CPlanHint *plan_hints)
{
// get chosen plan number, cost threshold
ULLONG plan_id = (ULLONG) optimizer_plan_id;
@@ -384,6 +390,7 @@ COptTasks::CreateOptimizerConfig(CMemoryPool *mp, ICostModel *cost_model)
* enforce them ourselves in the executor */
push_group_by_below_setop_threshold, xform_bind_threshold,
skew_factor),
+ plan_hints,
GPOS_NEW(mp) CWindowOids(OID(F_ROW_NUMBER), OID(F_RANK_)));
}
@@ -457,6 +464,118 @@ COptTasks::GetCostModel(CMemoryPool *mp, ULONG num_segments)
return cost_model;
}
+
+//---------------------------------------------------------------------------
+// @function:
+// COptTasks::GetPlanHints
+//
+// @doc:
+// Generate an instance of plan hints by parsing the query tree.
+//
+//---------------------------------------------------------------------------
+CPlanHint *
+COptTasks::GetPlanHints(CMemoryPool *mp, Query *query)
+{
+ HintState *hintstate = nullptr;
+ if (plan_hint_hook != nullptr)
+ {
+ hintstate = (HintState *) plan_hint_hook(query);
+ }
+
+ if (nullptr == hintstate)
+ {
+ return nullptr;
+ }
+
+ CPlanHint *plan_hints = GPOS_NEW(mp) CPlanHint(mp);
+
+ for (int ul = 0; ul < hintstate->num_hints[HINT_TYPE_SCAN_METHOD]; ul++)
+ {
+ ScanMethodHint *scan_hint =
+ (ScanMethodHint *) hintstate->scan_hints[ul];
+ if (nullptr == scan_hint->relname)
+ {
+ continue;
+ }
+
+ StringPtrArray *indexnames = GPOS_NEW(mp) StringPtrArray(mp);
+ CScanHint::EType type = CScanHint::Sentinal;
+ switch (scan_hint->base.hint_keyword)
+ {
+ case HINT_KEYWORD_SEQSCAN:
+ {
+ type = CScanHint::SeqScan;
+ break;
+ }
+ case HINT_KEYWORD_NOSEQSCAN:
+ {
+ type = CScanHint::NoSeqScan;
+ break;
+ }
+ case HINT_KEYWORD_INDEXSCAN:
+ {
+ type = CScanHint::IndexScan;
+ break;
+ }
+ case HINT_KEYWORD_NOINDEXSCAN:
+ {
+ type = CScanHint::NoIndexScan;
+ break;
+ }
+ case HINT_KEYWORD_INDEXONLYSCAN:
+ {
+ type = CScanHint::IndexOnlyScan;
+ break;
+ }
+ case HINT_KEYWORD_NOINDEXONLYSCAN:
+ {
+ type = CScanHint::NoIndexOnlyScan;
+ break;
+ }
+ case HINT_KEYWORD_BITMAPSCAN:
+ {
+ type = CScanHint::BitmapScan;
+ break;
+ }
+ case HINT_KEYWORD_NOBITMAPSCAN:
+ {
+ type = CScanHint::NoBitmapScan;
+ break;
+ }
+ default:
+ {
+ CWStringDynamic *error_message = GPOS_NEW(mp) CWStringDynamic(
+ mp, GPOS_WSZ_LIT("Unsupported plan hint: "));
+ error_message->AppendFormat(GPOS_WSZ_LIT("%s"),
+ scan_hint->base.keyword);
+
+ GPOS_RAISE(gpopt::ExmaGPOPT, gpopt::ExmiUnsupportedOp,
+ error_message->GetBuffer());
+ break;
+ }
+ }
+
+ ListCell *l;
+ foreach (l, scan_hint->indexnames)
+ {
+ char *indexname = (char *) lfirst(l);
+ indexnames->Append(GPOS_NEW(mp) CWStringConst(mp, indexname));
+ }
+
+ CScanHint *hint = plan_hints->GetScanHint(scan_hint->relname);
+ if (nullptr == hint)
+ {
+ hint = GPOS_NEW(mp) CScanHint(
+ mp, GPOS_NEW(mp) CWStringConst(mp, scan_hint->relname),
+ indexnames);
+ plan_hints->AddHint(hint);
+ }
+ hint->AddType(type);
+ }
+
+ return plan_hints;
+}
+
//---------------------------------------------------------------------------
// @function:
// COptTasks::OptimizeTask
@@ -545,8 +664,9 @@ COptTasks::OptimizeTask(void *ptr)
mp, &mda, (Query *) opt_ctxt->m_query);
ICostModel *cost_model = GetCostModel(mp, num_segments_for_costing);
+ CPlanHint *plan_hints = GetPlanHints(mp, opt_ctxt->m_query);
COptimizerConfig *optimizer_config =
- CreateOptimizerConfig(mp, cost_model);
+ CreateOptimizerConfig(mp, cost_model, plan_hints);
CConstExprEvaluatorProxy expr_eval_proxy(mp, &mda);
IConstExprEvaluator *expr_evaluator =
GPOS_NEW(mp) CConstExprEvaluatorDXL(mp, &mda, &expr_eval_proxy);
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-BitmapScan-Over-Table.mdp b/src/backend/gporca/data/dxl/minidump/Hint-BitmapScan-Over-Table.mdp
new file mode 100644
index 0000000000..29621224c8
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-BitmapScan-Over-Table.mdp
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with multiple indexes, if a scan hint is used
+ specifying a bitmap scan on index (e.g. our_incredible_index), then that's
+ the scan type and index that should be used in the plan.
+
+ LOAD 'pg_hint_plan';
+
+ -- Test hints using scan types
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+ CREATE INDEX some_bitmap_index ON hint_table_1 USING bitmap(a);
+ CREATE INDEX another_bitmap_index ON hint_table_1 USING bitmap(a);
+
+ /*+
+ BitmapScan(hint_table_1 some_bitmap_index)
+ */
+ EXPLAIN SELECT * FROM hint_table_1 WHERE a=42;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="hint_table_1" OperatorName="BitmapScan" IndexName="some_bitmap_index"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ </dxl:OptimizerConfig>
+ <dxl:Metadata SystemIds="0.GPDB">
+ <dxl:Index Mdid="7.389311.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389310.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389309.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389308.1.0" Name="my_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:RelationStatistics Mdid="2.389305.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.389305.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.389308.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389309.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389310.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389311.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389312.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389315.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationExtendedStatistics Mdid="10.389305.1.0" Name="hint_table_1"/>
+ <dxl:Index Mdid="7.389315.1.0" Name="another_bitmap_index" IsClustered="false" AmCanOrder="false" IndexType="Bitmap" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.10009.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389312.1.0" Name="some_bitmap_index" IsClustered="false" AmCanOrder="false" IndexType="Bitmap" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.10009.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:ColumnStatistics Mdid="1.389305.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalSelect>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.389305.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" 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="391.295563" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:BitmapTableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="391.295528" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:RecheckCond>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:RecheckCond>
+ <dxl:BitmapIndexProbe>
+ <dxl:IndexCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:IndexCondList>
+ <dxl:IndexDescriptor Mdid="7.389312.1.0" IndexName="some_bitmap_index"/>
+ </dxl:BitmapIndexProbe>
+ <dxl:TableDescriptor Mdid="6.389305.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:BitmapTableScan>
+ </dxl:GatherMotion>
+ <dxl:DirectDispatchInfo>
+ <dxl:KeyValue>
+ <dxl:Datum TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:KeyValue>
+ </dxl:DirectDispatchInfo>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-IndexOnlyScan-Over-Table.mdp b/src/backend/gporca/data/dxl/minidump/Hint-IndexOnlyScan-Over-Table.mdp
new file mode 100644
index 0000000000..37e445cb1d
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-IndexOnlyScan-Over-Table.mdp
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with multiple indexes, if a scan hint is used
+ specifying an index (e.g. our_incredible_index), then that's the index that
+ should be used in the plan.
+
+ LOAD 'pg_hint_plan';
+
+ -- Test hints using scan types
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+
+ /*+
+ IndexOnlyScan(hint_table_1 our_incredible_index)
+ */
+ EXPLAIN SELECT a FROM hint_table_1 WHERE a=42;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="hint_table_1" OperatorName="IndexOnlyScan" IndexName="our_incredible_index"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ </dxl:OptimizerConfig>
+ <dxl:Metadata SystemIds="0.GPDB">
+ <dxl:RelationStatistics Mdid="2.389297.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.389297.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.389300.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389301.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389302.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389303.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.389303.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389302.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389301.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389300.1.0" Name="my_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:ColumnStatistics Mdid="1.389297.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationExtendedStatistics Mdid="10.389297.1.0" Name="hint_table_1"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalSelect>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" 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="6.000120" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:IndexOnlyScan IndexScanDirection="Forward">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="6.000102" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:IndexCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:IndexCondList>
+ <dxl:Partitions/>
+ <dxl:IndexDescriptor Mdid="7.389302.1.0" IndexName="our_incredible_index"/>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:IndexOnlyScan>
+ </dxl:GatherMotion>
+ <dxl:DirectDispatchInfo>
+ <dxl:KeyValue>
+ <dxl:Datum TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:KeyValue>
+ </dxl:DirectDispatchInfo>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-IndexScan-Over-Join.mdp b/src/backend/gporca/data/dxl/minidump/Hint-IndexScan-Over-Join.mdp
new file mode 100644
index 0000000000..30b5f66974
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-IndexScan-Over-Join.mdp
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a join on table with multiple indexes, if a scan hint is
+ used specifying an index (e.g. our_incredible_index), then that's the index
+ that should be used in the plan.
+
+ LOAD 'pg_hint_plan';
+
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+
+ /*+
+ IndexScan(t1 our_incredible_index)
+ */
+ EXPLAIN SELECT * FROM hint_table_1 AS t1 JOIN hint_table_1 AS t2 ON t1.a=t2.a;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="t1" OperatorName="IndexScan" IndexName="our_incredible_index"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ </dxl:OptimizerConfig>
+ <dxl:Metadata SystemIds="0.GPDB">
+ <dxl:RelationStatistics Mdid="2.123814.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <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:PartOpfamily Mdid="0.424.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:Relation Mdid="6.123814.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.123817.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.123818.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.123819.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.123820.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.123820.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.123819.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.123818.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.123817.1.0" Name="my_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:ColumnStatistics Mdid="1.123814.1.0.0" Name="a" 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" CoercePathType="0"/>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationExtendedStatistics Mdid="10.123814.1.0" Name="hint_table_1"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="11" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalJoin JoinType="Inner">
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.123814.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.123814.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:Comparison>
+ </dxl:LogicalJoin>
+ </dxl:Query>
+ <dxl:Plan Id="0" SpaceSize="1">
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="437.000225" Rows="1.000000" Width="16"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="10" Alias="b">
+ <dxl:Ident ColId="10" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="true" OuterRefAsParam="true">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="437.000166" Rows="1.000000" Width="16"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="10" Alias="b">
+ <dxl:Ident ColId="10" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:JoinFilter>
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:JoinFilter>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="10" Alias="b">
+ <dxl:Ident ColId="10" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.123814.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="9" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="10" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="12" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:TableScan>
+ <dxl:IndexScan IndexScanDirection="Forward">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="6.000101" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:IndexCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:Comparison>
+ </dxl:IndexCondList>
+ <dxl:Partitions/>
+ <dxl:IndexDescriptor Mdid="7.123819.1.0" IndexName="our_incredible_index"/>
+ <dxl:TableDescriptor Mdid="6.123814.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:IndexScan>
+ <dxl:NLJIndexParamList>
+ <dxl:NLJIndexParam ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:NLJIndexParamList>
+ </dxl:NestedLoopJoin>
+ </dxl:GatherMotion>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-IndexScan-Over-Table.mdp b/src/backend/gporca/data/dxl/minidump/Hint-IndexScan-Over-Table.mdp
new file mode 100644
index 0000000000..ad17d8eef4
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-IndexScan-Over-Table.mdp
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with multiple indexes, if a scan hint is used
+ specifying an index (e.g. our_incredible_index), then that's the index that
+ should be used in the plan.
+
+ LOAD 'pg_hint_plan';
+
+ -- Test hints using scan types
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+
+ /*+
+ IndexScan(hint_table_1 our_incredible_index)
+ */
+ EXPLAIN SELECT * FROM hint_table_1 WHERE a=42;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="hint_table_1" OperatorName="IndexScan" IndexName="our_incredible_index"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,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:PartOpfamily Mdid="0.424.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:RelationStatistics Mdid="2.119969.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <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:PartOpfamily Mdid="0.1976.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:Relation Mdid="6.119969.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.119972.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.119973.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.119974.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.119974.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.119973.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.119972.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:ColumnStatistics Mdid="1.119969.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationExtendedStatistics Mdid="10.119969.1.0" Name="hint_table_1"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalSelect>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.119969.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" 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="6.000136" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:IndexScan IndexScanDirection="Forward">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="6.000101" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:IndexCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:IndexCondList>
+ <dxl:Partitions/>
+ <dxl:IndexDescriptor Mdid="7.119973.1.0" IndexName="our_incredible_index"/>
+ <dxl:TableDescriptor Mdid="6.119969.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:IndexScan>
+ </dxl:GatherMotion>
+ <dxl:DirectDispatchInfo>
+ <dxl:KeyValue>
+ <dxl:Datum TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:KeyValue>
+ </dxl:DirectDispatchInfo>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-NoBitmapScan-Over-Table.mdp b/src/backend/gporca/data/dxl/minidump/Hint-NoBitmapScan-Over-Table.mdp
new file mode 100644
index 0000000000..57301cadac
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-NoBitmapScan-Over-Table.mdp
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with a bitmap index, if a no bitmap scan hint is
+ used , then plan should not include bitmap scan.
+
+ LOAD 'pg_hint_plan';
+
+ -- Test hints using scan types
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX some_bitmap_index ON hint_table_1 USING bitmap(a);
+ CREATE INDEX another_bitmap_index ON hint_table_1 USING bitmap(a);
+
+ /*+
+ NoBitmapScan(hint_table_1)
+ */
+ EXPLAIN SELECT * FROM hint_table_1 WHERE a=42;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="hint_table_1" OperatorName="NoBitmapScan" IndexName="some_bitmap_index"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:RelationExtendedStatistics Mdid="10.322285.1.0" Name="hint_table_1"/>
+ <dxl:Index Mdid="7.322291.1.0" Name="another_bitmap_index" IsClustered="false" AmCanOrder="false" IndexType="Bitmap" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.10009.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.322288.1.0" Name="some_bitmap_index" IsClustered="false" AmCanOrder="false" IndexType="Bitmap" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.10009.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:RelationStatistics Mdid="2.322285.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.322285.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.322288.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.322291.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:ColumnStatistics Mdid="1.322285.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalSelect>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.322285.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" 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.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.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.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:Filter>
+ <dxl:TableDescriptor Mdid="6.322285.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ </dxl:GatherMotion>
+ <dxl:DirectDispatchInfo>
+ <dxl:KeyValue>
+ <dxl:Datum TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:KeyValue>
+ </dxl:DirectDispatchInfo>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-NoIndexOnlyScan-Over-Table.mdp b/src/backend/gporca/data/dxl/minidump/Hint-NoIndexOnlyScan-Over-Table.mdp
new file mode 100644
index 0000000000..ebcf343faa
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-NoIndexOnlyScan-Over-Table.mdp
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with multiple indexes, if a scan hint is used
+ specifying no index only scan, then plan should not include index only scan.
+
+ LOAD 'pg_hint_plan';
+
+ -- Test hints using scan types
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+
+ /*+
+ NoIndexOnlyScan(hint_table_1)
+ */
+ EXPLAIN SELECT a FROM hint_table_1 WHERE a=42;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="hint_table_1" OperatorName="NoIndexOnlyScan"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:ColumnStatistics Mdid="1.322277.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:RelationExtendedStatistics Mdid="10.322277.1.0" Name="hint_table_1"/>
+ <dxl:RelationStatistics Mdid="2.322277.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.322277.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.322280.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.322281.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.322282.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.322283.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.322283.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.322282.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.322281.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.322280.1.0" Name="my_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalSelect>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.322277.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" 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="5">
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="6.000119" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:IndexScan IndexScanDirection="Forward">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="6.000101" Rows="1.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:IndexCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:IndexCondList>
+ <dxl:Partitions/>
+ <dxl:IndexDescriptor Mdid="7.322280.1.0" IndexName="my_awesome_index"/>
+ <dxl:TableDescriptor Mdid="6.322277.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:IndexScan>
+ </dxl:GatherMotion>
+ <dxl:DirectDispatchInfo>
+ <dxl:KeyValue>
+ <dxl:Datum TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:KeyValue>
+ </dxl:DirectDispatchInfo>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-NoIndexScan-Over-Table.mdp b/src/backend/gporca/data/dxl/minidump/Hint-NoIndexScan-Over-Table.mdp
new file mode 100644
index 0000000000..d5a600e9fd
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-NoIndexScan-Over-Table.mdp
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with multiple indexes, if a no index scan hint is
+ used then no indexes should be used in the plan.
+
+ LOAD 'pg_hint_plan';
+
+ -- Test hints using scan types
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+
+ /*+
+ NoSeqScan(hint_table_1)
+ */
+ EXPLAIN SELECT * FROM hint_table_1 WHERE a=42;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="hint_table_1" OperatorName="NoIndexScan"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ </dxl:OptimizerConfig>
+ <dxl:Metadata SystemIds="0.GPDB">
+ <dxl:RelationExtendedStatistics Mdid="10.322269.1.0" Name="hint_table_1"/>
+ <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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:Index Mdid="7.322275.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.322274.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:ColumnStatistics Mdid="1.322269.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:Index Mdid="7.322273.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.322272.1.0" Name="my_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationStatistics Mdid="2.322269.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.322269.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.322272.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.322273.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.322274.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.322275.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalSelect>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.322269.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" 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.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.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.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:Filter>
+ <dxl:TableDescriptor Mdid="6.322269.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ </dxl:GatherMotion>
+ <dxl:DirectDispatchInfo>
+ <dxl:KeyValue>
+ <dxl:Datum TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:KeyValue>
+ </dxl:DirectDispatchInfo>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-SeqScan-Over-Join.mdp b/src/backend/gporca/data/dxl/minidump/Hint-SeqScan-Over-Join.mdp
new file mode 100644
index 0000000000..d3de9eaa95
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-SeqScan-Over-Join.mdp
@@ -0,0 +1,360 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with multiple indexes, if a seq scan hint is used
+ then no indexes should be used in the plan.
+
+ LOAD 'pg_hint_plan';
+
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+
+ /*+
+ SeqScan(t1)
+ SeqScan(t2)
+ */
+ EXPLAIN SELECT * FROM hint_table_1 AS t1 JOIN hint_table_1 AS t2 ON t1.a=t2.a;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="t1" OperatorName="SeqScan"/>
+ <dxl:ScanHint Alias="t2" OperatorName="SeqScan"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ </dxl:OptimizerConfig>
+ <dxl:Metadata SystemIds="0.GPDB">
+ <dxl:RelationStatistics Mdid="2.389297.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.389297.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.389300.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389301.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389302.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389303.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.389303.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389302.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389301.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389300.1.0" Name="my_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:ColumnStatistics Mdid="1.389297.1.0.0" Name="a" 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" CoercePathType="0"/>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationExtendedStatistics Mdid="10.389297.1.0" Name="hint_table_1"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="11" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalJoin JoinType="Inner">
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="10" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:LogicalGet>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="10" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:Comparison>
+ </dxl:LogicalJoin>
+ </dxl:Query>
+ <dxl:Plan Id="0" SpaceSize="8">
+ <dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="862.000610" Rows="1.000000" Width="16"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="10" Alias="b">
+ <dxl:Ident ColId="10" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:SortingColumnList/>
+ <dxl:HashJoin JoinType="Inner">
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="862.000550" Rows="1.000000" Width="16"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="10" Alias="b">
+ <dxl:Ident ColId="10" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:JoinFilter/>
+ <dxl:HashCondList>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:Comparison>
+ </dxl:HashCondList>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="a">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="t1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="9" Alias="a">
+ <dxl:Ident ColId="9" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="10" Alias="b">
+ <dxl:Ident ColId="10" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="t2" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="9" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="10" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="11" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="12" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:TableScan>
+ </dxl:HashJoin>
+ </dxl:GatherMotion>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/data/dxl/minidump/Hint-SeqScan-Over-Table.mdp b/src/backend/gporca/data/dxl/minidump/Hint-SeqScan-Over-Table.mdp
new file mode 100644
index 0000000000..0acce9c0cd
--- /dev/null
+++ b/src/backend/gporca/data/dxl/minidump/Hint-SeqScan-Over-Table.mdp
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
+ <dxl:Comment><![CDATA[
+ Objective: Given a table with multiple indexes, if a seq scan hint is used
+ then no indexes should be used in the plan.
+
+ LOAD 'pg_hint_plan';
+
+ -- Test hints using scan types
+ CREATE TABLE hint_table_1(a int, b int);
+ CREATE INDEX my_awesome_index ON hint_table_1(a);
+ CREATE INDEX your_amazing_index ON hint_table_1(a);
+ CREATE INDEX our_incredible_index ON hint_table_1(a);
+ CREATE INDEX their_awesome_index ON hint_table_1(a);
+
+ /*+
+ SeqScan(hint_table_1)
+ */
+ EXPLAIN SELECT * FROM hint_table_1 WHERE a=42;
+ ]]>
+ </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:PlanHint>
+ <dxl:ScanHint Alias="hint_table_1" OperatorName="SeqScan"/>
+ </dxl:PlanHint>
+ <dxl:TraceFlags Value="102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,105000,106000"/>
+ </dxl:OptimizerConfig>
+ <dxl:Metadata SystemIds="0.GPDB">
+ <dxl:RelationStatistics Mdid="2.389297.1.0" Name="hint_table_1" Rows="0.000000" RelPages="0" RelAllVisible="0" EmptyRelation="true"/>
+ <dxl:Relation Mdid="6.389297.1.0" Name="hint_table_1" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="8,2">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="b" Attno="2" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList>
+ <dxl:IndexInfo Mdid="7.389300.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389301.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389302.1.0" IsPartial="false"/>
+ <dxl:IndexInfo Mdid="7.389303.1.0" IsPartial="false"/>
+ </dxl:IndexInfoList>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Index Mdid="7.389303.1.0" Name="their_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389302.1.0" Name="our_incredible_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389301.1.0" Name="your_amazing_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <dxl:Index Mdid="7.389300.1.0" Name="my_awesome_index" IsClustered="false" AmCanOrder="true" IndexType="B-tree" IndexItemType="0.2283.1.0" KeyColumns="0" IncludedColumns="" ReturnableColumns="0" SortDirection="ASC" NullsDirection="LAST">
+ <dxl:Opfamilies>
+ <dxl:Opfamily Mdid="0.1976.1.0"/>
+ </dxl:Opfamilies>
+ </dxl:Index>
+ <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:PartOpfamily Mdid="0.424.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:PartOpfamily Mdid="0.1976.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:PartOpfamily Mdid="0.1989.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:PartOpfamily Mdid="0.2789.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:ColumnStatistics Mdid="1.389297.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
+ <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.65.1.0"/>
+ <dxl:Commutator Mdid="0.96.1.0"/>
+ <dxl:InverseOp Mdid="0.518.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:RelationExtendedStatistics Mdid="10.389297.1.0" Name="hint_table_1"/>
+ </dxl:Metadata>
+ <dxl:Query>
+ <dxl:OutputColumns>
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:Ident ColId="2" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:OutputColumns>
+ <dxl:CTEList/>
+ <dxl:LogicalSelect>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="1" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ <dxl:LogicalGet>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="1" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="2" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" 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.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.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.23.1.0"/>
+ </dxl:ProjElem>
+ <dxl:ProjElem ColId="1" Alias="b">
+ <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter>
+ <dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
+ <dxl:Ident ColId="0" ColName="a" TypeMdid="0.23.1.0"/>
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:Comparison>
+ </dxl:Filter>
+ <dxl:TableDescriptor Mdid="6.389297.1.0" TableName="hint_table_1" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="0" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <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:TableScan>
+ </dxl:GatherMotion>
+ <dxl:DirectDispatchInfo>
+ <dxl:KeyValue>
+ <dxl:Datum TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:KeyValue>
+ </dxl:DirectDispatchInfo>
+ </dxl:Plan>
+ </dxl:Thread>
+</dxl:DXLMessage>
diff --git a/src/backend/gporca/libgpopt/include/gpopt/hints/CHintUtils.h b/src/backend/gporca/libgpopt/include/gpopt/hints/CHintUtils.h
new file mode 100644
index 0000000000..dfd21670da
--- /dev/null
+++ b/src/backend/gporca/libgpopt/include/gpopt/hints/CHintUtils.h
@@ -0,0 +1,53 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CHintUtils.h
+//---------------------------------------------------------------------------
+#ifndef GPOS_CHintUtils_H
+#define GPOS_CHintUtils_H
+
+#include "gpos/base.h"
+
+#include "gpopt/hints/CPlanHint.h"
+#include "gpopt/operators/CLogicalDynamicGet.h"
+#include "gpopt/operators/CLogicalDynamicIndexGet.h"
+#include "gpopt/operators/CLogicalGet.h"
+#include "gpopt/operators/CLogicalIndexGet.h"
+#include "gpopt/operators/COperator.h"
+#include "gpopt/operators/CScalarBitmapIndexProbe.h"
+
+namespace gpopt
+{
+class CHintUtils
+{
+public:
+ // Check if CLogicalGet operator satisfies plan hints
+ static BOOL SatisfiesPlanHints(CLogicalGet *pop, CPlanHint *plan_hint);
+
+ // Check if CLogicalIndexGet operator satisfies plan hints
+ static BOOL SatisfiesPlanHints(CLogicalIndexGet *pop, CPlanHint *plan_hint);
+
+ // Check if CLogicalDynamicGet operator satisfies plan hints
+ static BOOL SatisfiesPlanHints(CLogicalDynamicGet *pop,
+ CPlanHint *plan_hint);
+
+ // Check if CLogicalDynamicIndexGet operator satisfies plan hints
+ static BOOL SatisfiesPlanHints(CLogicalDynamicIndexGet *pop,
+ CPlanHint *plan_hint);
+
+ // Check if CScalarBitmapIndexProbe operator satisfies plan hints
+ static BOOL SatisfiesPlanHints(CScalarBitmapIndexProbe *pop,
+ CPlanHint *plan_hint);
+
+ static const WCHAR *ScanHintEnumToString(CScanHint::EType type);
+
+ static CScanHint::EType ScanHintStringToEnum(const WCHAR *type);
+};
+
+} // namespace gpopt
+
+#endif // !GPOS_CHintUtils_H
+
+// EOF
diff --git a/src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h b/src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h
new file mode 100644
index 0000000000..d48a3f6118
--- /dev/null
+++ b/src/backend/gporca/libgpopt/include/gpopt/hints/CPlanHint.h
@@ -0,0 +1,58 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CPlanHint.h
+//
+// @doc:
+// CPlanHint is a container for all hints (IHint) used by a query.
+//---------------------------------------------------------------------------
+#ifndef GPOS_CPlanHint_H
+#define GPOS_CPlanHint_H
+
+#include "gpos/base.h"
+#include "gpos/common/CDynamicPtrArray.h"
+#include "gpos/common/CRefCount.h"
+
+#include "gpopt/hints/CScanHint.h"
+#include "gpopt/hints/IHint.h"
+#include "gpopt/operators/COperator.h"
+#include "naucrates/dxl/xml/CXMLSerializer.h"
+
+namespace gpopt
+{
+//---------------------------------------------------------------------------
+// @class:
+// CPlanHint
+//---------------------------------------------------------------------------
+class CPlanHint : public CRefCount, public DbgPrintMixin<CPlanHint>
+{
+private:
+ CMemoryPool *m_mp{nullptr};
+
+ ScanHintList *m_scan_hints{nullptr};
+
+public:
+ CPlanHint(CMemoryPool *mp);
+
+ ~CPlanHint() override;
+
+ // Add a scan hint
+ void AddHint(CScanHint *hint);
+
+ // Get a scan hint that matches a name (table or alias)
+ CScanHint *GetScanHint(const char *name);
+ CScanHint *GetScanHint(const CWStringBase *name);
+
+ IOstream &OsPrint(IOstream &os) const;
+
+ void Serialize(CXMLSerializer *xml_serializer) const;
+}; // class CPlanHint
+
+} // namespace gpopt
+
+
+#endif // !GPOS_CPlanHint_H
+
+// EOF
diff --git a/src/backend/gporca/libgpopt/include/gpopt/hints/CScanHint.h b/src/backend/gporca/libgpopt/include/gpopt/hints/CScanHint.h
new file mode 100644
index 0000000000..c14972f9da
--- /dev/null
+++ b/src/backend/gporca/libgpopt/include/gpopt/hints/CScanHint.h
@@ -0,0 +1,112 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CScanHint.h
+//
+// @doc:
+// CScanHint represents an ORCA optimizer hint that favors a specific scan
+// type (e.g. index scan, bitmap scan, seq scan) on a specific relation
+// (identified by table name or alias) in a query.
+//---------------------------------------------------------------------------
+#ifndef GPOS_CScanHint_H
+#define GPOS_CScanHint_H
+
+#include <vector>
+
+#include "gpos/base.h"
+#include "gpos/common/CDynamicPtrArray.h"
+#include "gpos/common/CEnumSet.h"
+#include "gpos/common/CEnumSetIter.h"
+#include "gpos/common/CRefCount.h"
+
+#include "gpopt/hints/IHint.h"
+#include "gpopt/operators/COperator.h"
+#include "naucrates/dxl/xml/CXMLSerializer.h"
+
+namespace gpopt
+{
+class CScanHint : public IHint, public DbgPrintMixin<CScanHint>
+{
+public:
+ enum EType
+ {
+ SeqScan,
+ NoSeqScan,
+ IndexScan,
+ NoIndexScan,
+ IndexOnlyScan,
+ NoIndexOnlyScan,
+ BitmapScan,
+ NoBitmapScan,
+
+ Sentinal
+ };
+
+ using CEHintTypeSet = CEnumSet<CScanHint::EType, CScanHint::Sentinal>;
+ using CEHintTypeSetSetIter =
+ CEnumSetIter<CScanHint::EType, CScanHint::Sentinal>;
+
+protected:
+ CMemoryPool *m_mp;
+
+private:
+ // relation or alias used in the query
+ const CWStringBase *m_name;
+
+ // specfied index names (if any) for index and bitmap scans
+ StringPtrArray *m_indexnames;
+
+ // all scan hint associated with this relation
+ CEHintTypeSet *m_types;
+
+public:
+ CScanHint(CMemoryPool *mp, const CWStringBase *name,
+ StringPtrArray *indexnames)
+ : m_mp(mp),
+ m_name(name),
+ m_indexnames(indexnames),
+ m_types(GPOS_NEW(mp) CEHintTypeSet(mp))
+ {
+ }
+
+ ~CScanHint() override
+ {
+ GPOS_DELETE(m_name);
+ m_indexnames->Release();
+ m_types->Release();
+ }
+
+ const CWStringBase *
+ GetName() const
+ {
+ return m_name;
+ }
+
+ const StringPtrArray *
+ GetIndexNames() const
+ {
+ return m_indexnames;
+ }
+
+ void
+ AddType(CScanHint::EType type)
+ {
+ m_types->ExchangeSet(type);
+ }
+
+ virtual BOOL SatisfiesOperator(COperator *op) const;
+
+ virtual IOstream &OsPrint(IOstream &os) const;
+
+ virtual void Serialize(CXMLSerializer *xml_serializer) const;
+};
+
+using ScanHintList = CDynamicPtrArray<CScanHint, CleanupRelease>;
+
+} // namespace gpopt
+
+#endif // !GPOS_CScanHint_H
+
+// EOF
diff --git a/src/backend/gporca/libgpopt/include/gpopt/hints/IHint.h b/src/backend/gporca/libgpopt/include/gpopt/hints/IHint.h
new file mode 100644
index 0000000000..41f46af902
--- /dev/null
+++ b/src/backend/gporca/libgpopt/include/gpopt/hints/IHint.h
@@ -0,0 +1,27 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// IHint.h
+//---------------------------------------------------------------------------
+#ifndef GPOS_IHint_H
+#define GPOS_IHint_H
+
+#include "gpos/base.h"
+#include "gpos/common/CRefCount.h"
+
+namespace gpopt
+{
+using namespace gpos;
+
+class IHint : public CRefCount
+{
+};
+
+
+} // namespace gpopt
+
+#endif // !GPOS_IHint_H
+
+// EOF
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CScalarBitmapIndexProbe.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CScalarBitmapIndexProbe.h
index 53936c2d2d..4845626f84 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CScalarBitmapIndexProbe.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CScalarBitmapIndexProbe.h
@@ -20,6 +20,7 @@
#include "gpos/base.h"
+#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/CScalar.h"
namespace gpopt
@@ -42,6 +43,9 @@ private:
// index descriptor
CIndexDescriptor *m_pindexdesc;
+ // table descriptor
+ CTableDescriptor *m_ptabdesc;
+
// bitmap type id
IMDId *m_pmdidBitmapType;
@@ -51,7 +55,7 @@ private:
public:
// ctor
CScalarBitmapIndexProbe(CMemoryPool *mp, CIndexDescriptor *pindexdesc,
- IMDId *pmdidBitmapType);
+ CTableDescriptor *ptabdesc, IMDId *pmdidBitmapType);
// ctor
// only for transforms
@@ -67,6 +71,13 @@ public:
return m_pindexdesc;
}
+ // return table's descriptor
+ CTableDescriptor *
+ Ptabdesc() const
+ {
+ return m_ptabdesc;
+ }
+
// bitmap type id
IMDId *
MdidType() const override
diff --git a/src/backend/gporca/libgpopt/include/gpopt/optimizer/COptimizerConfig.h b/src/backend/gporca/libgpopt/include/gpopt/optimizer/COptimizerConfig.h
index af8dd2c8da..159ddafbed 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/optimizer/COptimizerConfig.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/optimizer/COptimizerConfig.h
@@ -21,6 +21,7 @@
#include "gpopt/engine/CEnumeratorConfig.h"
#include "gpopt/engine/CHint.h"
#include "gpopt/engine/CStatisticsConfig.h"
+#include "gpopt/hints/CPlanHint.h"
namespace gpopt
{
@@ -62,6 +63,9 @@ private:
// hint configuration
CHint *m_hint;
+ // optimizer plan hints
+ CPlanHint *m_plan_hint{nullptr};
+
// default window oids
CWindowOids *m_window_oids;
@@ -69,7 +73,7 @@ public:
// ctor
COptimizerConfig(CEnumeratorConfig *pec, CStatisticsConfig *stats_config,
CCTEConfig *pcteconf, ICostModel *pcm, CHint *phint,
- CWindowOids *pdefoidsGPDB);
+ CPlanHint *pplanhint, CWindowOids *pdefoidsGPDB);
// dtor
~COptimizerConfig() override;
@@ -117,6 +121,12 @@ public:
return m_hint;
}
+ CPlanHint *
+ GetPlanHint() const
+ {
+ return m_plan_hint;
+ }
+
// generate default optimizer configurations
static COptimizerConfig *PoconfDefault(CMemoryPool *mp);
diff --git a/src/backend/gporca/libgpopt/src/Makefile b/src/backend/gporca/libgpopt/src/Makefile
index ff2949f7ed..3e485b9df0 100644
--- a/src/backend/gporca/libgpopt/src/Makefile
+++ b/src/backend/gporca/libgpopt/src/Makefile
@@ -10,7 +10,7 @@ include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/src/backend/gporca/gporca.mk
-SUBDIRS = base engine eval mdcache metadata minidump operators optimizer search translate xforms
+SUBDIRS = base engine eval hints mdcache metadata minidump operators optimizer search translate xforms
OBJS = exception.o init.o
include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/gporca/libgpopt/src/hints/CHintUtils.cpp b/src/backend/gporca/libgpopt/src/hints/CHintUtils.cpp
new file mode 100644
index 0000000000..a57fe51c86
--- /dev/null
+++ b/src/backend/gporca/libgpopt/src/hints/CHintUtils.cpp
@@ -0,0 +1,241 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CHintUtils.cpp
+//
+// @doc:
+// Utilitiies for plan hint objects
+//---------------------------------------------------------------------------
+
+#include "gpopt/hints/CHintUtils.h"
+
+#include "gpos/common/clibwrapper.h"
+
+using namespace gpopt;
+
+
+// Find a scan hint that matches the operator based on the relation or alias
+// name.
+template <typename T>
+static CScanHint *
+GetScanHint(T *pop, CPlanHint *plan_hint)
+{
+ GPOS_ASSERT(nullptr != pop);
+
+ if (nullptr == plan_hint)
+ {
+ // no parsed hints
+ return nullptr;
+ }
+
+ const CWStringConst *name = pop->Ptabdesc()->Name().Pstr();
+
+ return plan_hint->GetScanHint(name);
+}
+
+
+BOOL
+CHintUtils::SatisfiesPlanHints(CLogicalGet *pop, CPlanHint *plan_hint)
+{
+ GPOS_ASSERT(nullptr != pop);
+
+ CScanHint *scan_hint = GetScanHint(pop, plan_hint);
+ if (scan_hint == nullptr)
+ {
+ // no matched hint, so everything goes...
+ return true;
+ }
+
+ // If opertor matches hint operator _or_ it doesn't match and is a not.
+ return scan_hint->SatisfiesOperator(pop);
+}
+
+BOOL
+CHintUtils::SatisfiesPlanHints(CLogicalIndexGet *pop, CPlanHint *plan_hint)
+{
+ GPOS_ASSERT(nullptr != pop);
+
+ CScanHint *scan_hint = GetScanHint(pop, plan_hint);
+ if (scan_hint == nullptr)
+ {
+ // no matched hint, so everything goes...
+ return true;
+ }
+
+ for (ULONG ul = 0; ul < scan_hint->GetIndexNames()->Size(); ul++)
+ {
+ if (pop->Pindexdesc()->Name().Pstr()->Equals(
+ (*scan_hint->GetIndexNames())[ul]))
+ {
+ // If opertor matches hint operator and index matches hint index.
+ return scan_hint->SatisfiesOperator(pop);
+ }
+ }
+
+ return scan_hint->GetIndexNames()->Size() == 0 &&
+ scan_hint->SatisfiesOperator(pop);
+}
+
+
+BOOL
+CHintUtils::SatisfiesPlanHints(CLogicalDynamicGet *pop, CPlanHint *plan_hint)
+{
+ GPOS_ASSERT(nullptr != pop);
+
+ CScanHint *scan_hint = GetScanHint(pop, plan_hint);
+ if (scan_hint == nullptr)
+ {
+ // no matched hint, so everything goes...
+ return true;
+ }
+
+ return scan_hint->SatisfiesOperator(pop);
+}
+
+
+BOOL
+CHintUtils::SatisfiesPlanHints(CLogicalDynamicIndexGet *pop,
+ CPlanHint *plan_hint)
+{
+ GPOS_ASSERT(nullptr != pop);
+
+ CScanHint *scan_hint = GetScanHint(pop, plan_hint);
+ if (scan_hint == nullptr)
+ {
+ // no matched hint, so everything goes...
+ return true;
+ }
+
+ for (ULONG ul = 0; ul < scan_hint->GetIndexNames()->Size(); ul++)
+ {
+ if (pop->Pindexdesc()->Name().Pstr()->Equals(
+ (*scan_hint->GetIndexNames())[ul]))
+ {
+ // If opertor matches hint operator and index matches hint index.
+ return scan_hint->SatisfiesOperator(pop);
+ }
+ }
+
+ return scan_hint->GetIndexNames()->Size() == 0 &&
+ scan_hint->SatisfiesOperator(pop);
+}
+
+
+BOOL
+CHintUtils::SatisfiesPlanHints(CScalarBitmapIndexProbe *pop,
+ CPlanHint *plan_hint)
+{
+ GPOS_ASSERT(nullptr != pop);
+
+ CScanHint *scan_hint = GetScanHint(pop, plan_hint);
+ if (scan_hint == nullptr)
+ {
+ // no matched hint, so everything goes...
+ return true;
+ }
+
+ for (ULONG ul = 0; ul < scan_hint->GetIndexNames()->Size(); ul++)
+ {
+ if (pop->Pindexdesc()->Name().Pstr()->Equals(
+ (*scan_hint->GetIndexNames())[ul]))
+ {
+ // If opertor matches hint operator and index matches hint index.
+ return scan_hint->SatisfiesOperator(pop);
+ }
+ }
+
+ return scan_hint->GetIndexNames()->Size() == 0 &&
+ scan_hint->SatisfiesOperator(pop);
+}
+
+const WCHAR *
+CHintUtils::ScanHintEnumToString(CScanHint::EType type)
+{
+ switch (type)
+ {
+ case CScanHint::SeqScan:
+ {
+ return GPOS_WSZ_LIT("SeqScan");
+ }
+ case CScanHint::NoSeqScan:
+ {
+ return GPOS_WSZ_LIT("NoSeqScan");
+ }
+ case CScanHint::IndexScan:
+ {
+ return GPOS_WSZ_LIT("IndexScan");
+ }
+ case CScanHint::NoIndexScan:
+ {
+ return GPOS_WSZ_LIT("NoIndexScan");
+ }
+ case CScanHint::IndexOnlyScan:
+ {
+ return GPOS_WSZ_LIT("IndexOnlyScan");
+ }
+ case CScanHint::NoIndexOnlyScan:
+ {
+ return GPOS_WSZ_LIT("NoIndexOnlyScan");
+ }
+ case CScanHint::BitmapScan:
+ {
+ return GPOS_WSZ_LIT("BitmapScan");
+ }
+ case CScanHint::NoBitmapScan:
+ {
+ return GPOS_WSZ_LIT("NoBitmapScan");
+ }
+ default:
+ {
+ return nullptr;
+ }
+ }
+}
+
+CScanHint::EType
+CHintUtils::ScanHintStringToEnum(const WCHAR *type)
+{
+ if (0 ==
+ clib::Wcsncmp(type, GPOS_WSZ_LIT("SeqScan"), gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::SeqScan;
+ }
+ if (0 == clib::Wcsncmp(type, GPOS_WSZ_LIT("NoSeqScan"),
+ gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::NoSeqScan;
+ }
+ if (0 == clib::Wcsncmp(type, GPOS_WSZ_LIT("IndexScan"),
+ gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::IndexScan;
+ }
+ if (0 == clib::Wcsncmp(type, GPOS_WSZ_LIT("NoIndexScan"),
+ gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::NoIndexScan;
+ }
+ if (0 == clib::Wcsncmp(type, GPOS_WSZ_LIT("IndexOnlyScan"),
+ gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::IndexOnlyScan;
+ }
+ if (0 == clib::Wcsncmp(type, GPOS_WSZ_LIT("NoIndexOnlyScan"),
+ gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::NoIndexOnlyScan;
+ }
+ if (0 == clib::Wcsncmp(type, GPOS_WSZ_LIT("BitmapScan"),
+ gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::BitmapScan;
+ }
+ if (0 == clib::Wcsncmp(type, GPOS_WSZ_LIT("NoBitmapScan"),
+ gpos::clib::Wcslen(type)))
+ {
+ return CScanHint::NoBitmapScan;
+ }
+ return CScanHint::Sentinal;
+}
diff --git a/src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp b/src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp
new file mode 100644
index 0000000000..8fc34e7163
--- /dev/null
+++ b/src/backend/gporca/libgpopt/src/hints/CPlanHint.cpp
@@ -0,0 +1,93 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CPlanHint.cpp
+//
+// @doc:
+// Container of plan hint objects
+//---------------------------------------------------------------------------
+
+#include "gpopt/hints/CPlanHint.h"
+
+#include "gpos/base.h"
+
+using namespace gpopt;
+
+FORCE_GENERATE_DBGSTR(CPlanHint);
+
+//---------------------------------------------------------------------------
+// @function:
+// CPlanHint::CPlanHint
+//---------------------------------------------------------------------------
+CPlanHint::CPlanHint(CMemoryPool *mp)
+ : m_mp(mp), m_scan_hints(GPOS_NEW(mp) ScanHintList(mp))
+{
+}
+
+CPlanHint::~CPlanHint()
+{
+ m_scan_hints->Release();
+}
+
+void
+CPlanHint::AddHint(CScanHint *hint)
+{
+ m_scan_hints->Append(hint);
+}
+
+CScanHint *
+CPlanHint::GetScanHint(const char *relname)
+{
+ CWStringConst *name = GPOS_NEW(m_mp) CWStringConst(m_mp, relname);
+ CScanHint *hint = GetScanHint(name);
+ GPOS_DELETE(name);
+ return hint;
+}
+
+CScanHint *
+CPlanHint::GetScanHint(const CWStringBase *name)
+{
+ for (ULONG ul = 0; ul < m_scan_hints->Size(); ul++)
+ {
+ CScanHint *hint = (*m_scan_hints)[ul];
+ if (name->Equals(hint->GetName()))
+ {
+ return hint;
+ }
+ }
+ return nullptr;
+}
+
+IOstream &
+CPlanHint::OsPrint(IOstream &os) const
+{
+ os << "PlanHint: [";
+ if (nullptr == m_scan_hints)
+ {
+ os << "]";
+ return os;
+ }
+
+ os << "\n";
+ for (ULONG ul = 0; ul < m_scan_hints->Size(); ul++)
+ {
+ os << " ";
+ (*m_scan_hints)[ul]->OsPrint(os) << "\n";
+ }
+ os << "]";
+ return os;
+}
+
+void
+CPlanHint::Serialize(CXMLSerializer *xml_serializer) const
+{
+ for (ULONG ul = 0; ul < m_scan_hints->Size(); ul++)
+ {
+ (*m_scan_hints)[ul]->Serialize(xml_serializer);
+ }
+}
+
+
+// EOF
diff --git a/src/backend/gporca/libgpopt/src/hints/CScanHint.cpp b/src/backend/gporca/libgpopt/src/hints/CScanHint.cpp
new file mode 100644
index 0000000000..d32a7dc340
--- /dev/null
+++ b/src/backend/gporca/libgpopt/src/hints/CScanHint.cpp
@@ -0,0 +1,146 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (c) 2023 VMware, Inc. or its affiliates. All Rights Reserved.
+//
+// @filename:
+// CScanHint.cpp
+//
+// @doc:
+// Container of plan hint objects
+//---------------------------------------------------------------------------
+
+#include "gpopt/hints/CScanHint.h"
+
+#include "gpopt/exception.h"
+#include "gpopt/hints/CHintUtils.h"
+#include "naucrates/dxl/CDXLUtils.h"
+
+using namespace gpopt;
+
+FORCE_GENERATE_DBGSTR(CScanHint);
+
+
+BOOL
+CScanHint::SatisfiesOperator(COperator *op) const
+{
+ BOOL is_satisfied = true;
+
+ CEHintTypeSetSetIter type_info(*m_types);
+ while (type_info.Advance() && is_satisfied)
+ {
+ switch (type_info.TBit())
+ {
+ case SeqScan:
+ {
+ is_satisfied = op->Eopid() == COperator::EopLogicalDynamicGet ||
+ op->Eopid() == COperator::EopLogicalGet;
+ break;
+ }
+ case NoSeqScan:
+ {
+ is_satisfied = op->Eopid() != COperator::EopLogicalDynamicGet &&
+ op->Eopid() != COperator::EopLogicalGet;
+ break;
+ }
+ case IndexScan:
+ {
+ is_satisfied =
+ op->Eopid() == COperator::EopLogicalDynamicIndexGet ||
+ op->Eopid() == COperator::EopLogicalIndexGet;
+ break;
+ }
+ case NoIndexScan:
+ {
+ is_satisfied =
+ op->Eopid() != COperator::EopLogicalDynamicIndexGet &&
+ op->Eopid() != COperator::EopLogicalIndexGet;
+ break;
+ }
+ case IndexOnlyScan:
+ {
+ is_satisfied =
+ op->Eopid() == COperator::EopLogicalDynamicIndexOnlyGet ||
+ op->Eopid() == COperator::EopLogicalIndexOnlyGet;
+ break;
+ }
+ case NoIndexOnlyScan:
+ {
+ is_satisfied =
+ op->Eopid() != COperator::EopLogicalDynamicIndexOnlyGet &&
+ op->Eopid() != COperator::EopLogicalIndexOnlyGet;
+ break;
+ }
+ case BitmapScan:
+ {
+ is_satisfied =
+ op->Eopid() == COperator::EopScalarBitmapIndexProbe;
+ break;
+ }
+ case NoBitmapScan:
+ {
+ is_satisfied =
+ op->Eopid() != COperator::EopScalarBitmapIndexProbe;
+ break;
+ }
+ default:
+ {
+ CWStringDynamic *error_message = GPOS_NEW(m_mp)
+ CWStringDynamic(m_mp, GPOS_WSZ_LIT("Unknown scan type: "));
+
+ GPOS_RAISE(gpopt::ExmaGPOPT, gpopt::ExmiUnsupportedOp,
+ error_message->GetBuffer());
+ }
+ }
+ }
+ return is_satisfied;
+}
+
+IOstream &
+CScanHint::OsPrint(IOstream &os) const
+{
+ os << "ScanHint: " << m_name->GetBuffer() << "[";
+ os << "indexes:";
+ CWStringDynamic *indexes =
+ CDXLUtils::SerializeToCommaSeparatedString(m_mp, GetIndexNames());
+ os << indexes->GetBuffer();
+ GPOS_DELETE(indexes);
+
+ os << " types:";
+ CWStringDynamic *hints =
+ CDXLUtils::Serialize(m_mp, m_types, CHintUtils::ScanHintEnumToString);
+ os << hints->GetBuffer();
+ GPOS_DELETE(hints);
+
+ os << "]";
+ return os;
+}
+
+void
+CScanHint::Serialize(CXMLSerializer *xml_serializer) const
+{
+ xml_serializer->OpenElement(
+ CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
+ CDXLTokens::GetDXLTokenStr(EdxltokenScanHint));
+
+ xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenAlias),
+ GetName());
+
+ CWStringDynamic *hints =
+ CDXLUtils::Serialize(m_mp, m_types, CHintUtils::ScanHintEnumToString);
+ xml_serializer->AddAttribute(CDXLTokens::GetDXLTokenStr(EdxltokenOpName),
+ hints);
+ GPOS_DELETE(hints);
+
+ if (GetIndexNames()->Size() > 0)
+ {
+ CWStringDynamic *indexes =
+ CDXLUtils::SerializeToCommaSeparatedString(m_mp, GetIndexNames());
+ xml_serializer->AddAttribute(
+ CDXLTokens::GetDXLTokenStr(EdxltokenIndexName), indexes);
+ GPOS_DELETE(indexes);
+ }
+
+ xml_serializer->CloseElement(
+ CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
+ CDXLTokens::GetDXLTokenStr(EdxltokenScanHint));
+}
diff --git a/src/backend/gporca/libgpopt/src/hints/Makefile b/src/backend/gporca/libgpopt/src/hints/Makefile
new file mode 100644
index 0000000000..2f610a5fe9
--- /dev/null
+++ b/src/backend/gporca/libgpopt/src/hints/Makefile
@@ -0,0 +1,16 @@
+#
+# Makefile for optimizer
+#
+# src/backend/gporca/libgpopt/src/hints/Makefile
+#
+
+subdir = src/backend/gporca/libgpopt/src/hints
+top_builddir = ../../../../../..
+include $(top_builddir)/src/Makefile.global
+
+include $(top_srcdir)/src/backend/gporca/gporca.mk
+
+OBJS = CPlanHint.o CScanHint.o CHintUtils.o
+
+include $(top_srcdir)/src/backend/common.mk
+
diff --git a/src/backend/gporca/libgpopt/src/hints/README b/src/backend/gporca/libgpopt/src/hints/README
new file mode 100644
index 0000000000..26f204ec80
--- /dev/null
+++ b/src/backend/gporca/libgpopt/src/hints/README
@@ -0,0 +1,116 @@
+What are hints?
+--------------
+
+A hint allows the user to override the optimizer in order to coerce a plan
+shape by disregarding its estimated cost compared to alternative plans. It may
+only be used to coerce plans that exist in ORCA's plan space.
+
+In Greenplum, plan hints are enabled through a custom extension [1] that
+provides a similar interface to pg_hint_plan [2], which is based on Postgres.
+
+
+Parser
+------
+
+Writing a parser is hard. Instead, let's utilize the parser provided by
+pg_hint_plan. But, how can ORCA access an extension's parsed data structures?
+Hooks!
+
+When the hint extension is loaded, it sets plan_hint_hook to the hint parser
+routine. When ORCA finds plan_hint_hook is set, it executes the parser routine
+and then translates the pg_hint_plan HintState into ORCA hint structures.
+
+There are 4 hint types:
+
+ 1. Scan
+ 2. Row
+ 3. Join
+ 4. Motion
+
+
+Hint Container
+--------------
+
+CPlanHint is a container that holds all the parsed hints. It is a globally
+accessible structure attached to COptimizerConfig.
+
+In DXL format it might look like:
+```
+<dxl:OptimizerConfig>
+ ...
+ <dxl:PlanHint>
+ <dxl:ScanHint Alias="table_1" OperatorName="NoIndexScan,NoIndexOnlyScan"/>
+ <dxl:ScanHint Alias="table_2" OperatorName="ScanScan"/>
+ <dxl:ScanHint Alias="table_3" OperatorName="IndexScan" IndexName="my_awesome_index"/>
+ </dxl:PlanHint>
+ ...
+</dxl:OptimizerConfig>
+```
+
+
+Scan Hints
+----------
+
+How is it represented?
+
+CScanHint contains all the scan hints on a single relation. There may be more
+than one hint per relation.
+
+How does it work?
+
+In exploration phase, transfoms add logical plan alternatives. If scan hints
+are specified, then the transformed operators must satisfy the hints in order
+to be considered as a valid alternative.
+
+Each relevant operator has a CHintUtils::SatisfiesPlanHints() function. That
+function is responsible for checking that the proposed alternative operator
+satisfies all corresponding hints.
+
+Each scan hint specifies one ore more scan types (e.g. NoSeqScan, NoIndexScan,
+etc). It is the responsiblity of CScanHint::SatisfiesOperator() to check that
+the proposed alternative operator satisfies all of the hint's scan types.
+
+
+Row Hints
+---------
+TODO
+
+
+Join Hints
+----------
+TODO
+
+
+Motion Hints
+------------
+TODO
+
+
+Supported Hints
+---------------
+ SeqScan
+ NoSeqScan
+ IndexScan
+ NoIndexScan
+ IndexOnlyScan
+ NoIndexOnlyScan,
+ BitmapScan
+ NoBitmapScan.
+
+
+Unsupported Hints
+-----------------
+ TidScan
+ NoTidScan
+ NestLoop
+ NoNestLoop
+ HashJoin
+ NoHashJoin
+ MergeJoin,
+ NoMergeJoin
+ Leading
+ Rows
+ Parallel
+
+[1] https://github.com/pivotal/pg_hint_plan/tree/PG12
+[2] https://github.com/ossc-db/pg_hint_plan
diff --git a/src/backend/gporca/libgpopt/src/operators/CScalarBitmapIndexProbe.cpp b/src/backend/gporca/libgpopt/src/operators/CScalarBitmapIndexProbe.cpp
index 7d435d2af2..07a8dc677f 100644
--- a/src/backend/gporca/libgpopt/src/operators/CScalarBitmapIndexProbe.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CScalarBitmapIndexProbe.cpp
@@ -38,11 +38,16 @@ using namespace gpopt;
//---------------------------------------------------------------------------
CScalarBitmapIndexProbe::CScalarBitmapIndexProbe(CMemoryPool *mp,
CIndexDescriptor *pindexdesc,
+ CTableDescriptor *ptabdesc,
IMDId *pmdidBitmapType)
- : CScalar(mp), m_pindexdesc(pindexdesc), m_pmdidBitmapType(pmdidBitmapType)
+ : CScalar(mp),
+ m_pindexdesc(pindexdesc),
+ m_ptabdesc(ptabdesc),
+ m_pmdidBitmapType(pmdidBitmapType)
{
GPOS_ASSERT(nullptr != mp);
GPOS_ASSERT(nullptr != pindexdesc);
+ GPOS_ASSERT(nullptr != ptabdesc);
GPOS_ASSERT(nullptr != pmdidBitmapType);
}
@@ -57,6 +62,7 @@ CScalarBitmapIndexProbe::CScalarBitmapIndexProbe(CMemoryPool *mp,
CScalarBitmapIndexProbe::~CScalarBitmapIndexProbe()
{
m_pindexdesc->Release();
+ m_ptabdesc->Release();
m_pmdidBitmapType->Release();
}
diff --git a/src/backend/gporca/libgpopt/src/optimizer/COptimizerConfig.cpp b/src/backend/gporca/libgpopt/src/optimizer/COptimizerConfig.cpp
index a44229ce7a..dc5ce1ad4e 100644
--- a/src/backend/gporca/libgpopt/src/optimizer/COptimizerConfig.cpp
+++ b/src/backend/gporca/libgpopt/src/optimizer/COptimizerConfig.cpp
@@ -32,12 +32,14 @@ using namespace gpopt;
COptimizerConfig::COptimizerConfig(CEnumeratorConfig *pec,
CStatisticsConfig *stats_config,
CCTEConfig *pcteconf, ICostModel *cost_model,
- CHint *phint, CWindowOids *pwindowoids)
+ CHint *phint, CPlanHint *pplanhint,
+ CWindowOids *pwindowoids)
: m_enumerator_cfg(pec),
m_stats_conf(stats_config),
m_cte_conf(pcteconf),
m_cost_model(cost_model),
m_hint(phint),
+ m_plan_hint(pplanhint),
m_window_oids(pwindowoids)
{
GPOS_ASSERT(nullptr != pec);
@@ -62,6 +64,7 @@ COptimizerConfig::~COptimizerConfig()
m_stats_conf->Release();
m_cte_conf->Release();
m_cost_model->Release();
+ CRefCount::SafeRelease(m_plan_hint);
m_hint->Release();
m_window_oids->Release();
}
@@ -81,7 +84,8 @@ COptimizerConfig::PoconfDefault(CMemoryPool *mp)
GPOS_NEW(mp) CEnumeratorConfig(mp, 0 /*plan_id*/, 0 /*ullSamples*/),
CStatisticsConfig::PstatsconfDefault(mp),
CCTEConfig::PcteconfDefault(mp), ICostModel::PcmDefault(mp),
- CHint::PhintDefault(mp), CWindowOids::GetWindowOids(mp));
+ CHint::PhintDefault(mp), nullptr /* pplanhint */,
+ CWindowOids::GetWindowOids(mp));
}
//---------------------------------------------------------------------------
@@ -101,7 +105,7 @@ COptimizerConfig::PoconfDefault(CMemoryPool *mp, ICostModel *pcm)
GPOS_NEW(mp) CEnumeratorConfig(mp, 0 /*plan_id*/, 0 /*ullSamples*/),
CStatisticsConfig::PstatsconfDefault(mp),
CCTEConfig::PcteconfDefault(mp), pcm, CHint::PhintDefault(mp),
- CWindowOids::GetWindowOids(mp));
+ nullptr /* pplanhint */, CWindowOids::GetWindowOids(mp));
}
//---------------------------------------------------------------------------
@@ -214,6 +218,19 @@ COptimizerConfig::Serialize(CMemoryPool *mp, CXMLSerializer *xml_serializer,
CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
CDXLTokens::GetDXLTokenStr(EdxltokenHint));
+ if (nullptr != GetPlanHint())
+ {
+ xml_serializer->OpenElement(
+ CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
+ CDXLTokens::GetDXLTokenStr(EdxltokenPlanHint));
+
+ GetPlanHint()->Serialize(xml_serializer);
+
+ xml_serializer->CloseElement(
+ CDXLTokens::GetDXLTokenStr(EdxltokenNamespacePrefix),
+ CDXLTokens::GetDXLTokenStr(EdxltokenPlanHint));
+ }
+
// Serialize traceflags represented in bitset into stream
gpos::CBitSetIter bsi(*pbsTrace);
CWStringDynamic wsTraceFlags(mp);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformDynamicGet2DynamicTableScan.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformDynamicGet2DynamicTableScan.cpp
index 832e1b73b8..270a589e66 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformDynamicGet2DynamicTableScan.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformDynamicGet2DynamicTableScan.cpp
@@ -13,10 +13,12 @@
#include "gpos/base.h"
+#include "gpopt/hints/CHintUtils.h"
#include "gpopt/metadata/CPartConstraint.h"
#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/CLogicalDynamicGet.h"
#include "gpopt/operators/CPhysicalDynamicTableScan.h"
+#include "gpopt/optimizer/COptimizerConfig.h"
using namespace gpopt;
@@ -69,6 +71,13 @@ CXformDynamicGet2DynamicTableScan::Transform(CXformContext *pxfctxt,
GPOS_ASSERT(FCheckPattern(pexpr));
CLogicalDynamicGet *popGet = CLogicalDynamicGet::PopConvert(pexpr->Pop());
+ if (!CHintUtils::SatisfiesPlanHints(
+ popGet,
+ COptCtxt::PoctxtFromTLS()->GetOptimizerConfig()->GetPlanHint()))
+ {
+ return;
+ }
+
CMemoryPool *mp = pxfctxt->Pmp();
// create/extract components for alternative
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexGet2DynamicIndexScan.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexGet2DynamicIndexScan.cpp
index e536ffaff0..664a075216 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexGet2DynamicIndexScan.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexGet2DynamicIndexScan.cpp
@@ -13,11 +13,13 @@
#include "gpos/base.h"
+#include "gpopt/hints/CHintUtils.h"
#include "gpopt/metadata/CPartConstraint.h"
#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/CLogicalDynamicIndexGet.h"
#include "gpopt/operators/CPatternLeaf.h"
#include "gpopt/operators/CPhysicalDynamicIndexScan.h"
+#include "gpopt/optimizer/COptimizerConfig.h"
using namespace gpopt;
@@ -81,6 +83,13 @@ CXformDynamicIndexGet2DynamicIndexScan::Transform(
CLogicalDynamicIndexGet::PopConvert(pexpr->Pop());
CMemoryPool *mp = pxfctxt->Pmp();
+ if (!CHintUtils::SatisfiesPlanHints(
+ popIndexGet,
+ COptCtxt::PoctxtFromTLS()->GetOptimizerConfig()->GetPlanHint()))
+ {
+ return;
+ }
+
// create/extract components for alternative
CName *pname = GPOS_NEW(mp) CName(mp, popIndexGet->Name());
GPOS_ASSERT(pname != nullptr);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexOnlyGet2DynamicIndexOnlyScan.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexOnlyGet2DynamicIndexOnlyScan.cpp
index eae73f744c..b749396515 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexOnlyGet2DynamicIndexOnlyScan.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformDynamicIndexOnlyGet2DynamicIndexOnlyScan.cpp
@@ -13,11 +13,13 @@
#include "gpos/base.h"
+#include "gpopt/hints/CHintUtils.h"
#include "gpopt/metadata/CPartConstraint.h"
#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/CLogicalDynamicIndexOnlyGet.h"
#include "gpopt/operators/CPatternLeaf.h"
#include "gpopt/operators/CPhysicalDynamicIndexOnlyScan.h"
+#include "gpopt/optimizer/COptimizerConfig.h"
#include "gpopt/xforms/CXformUtils.h"
using namespace gpopt;
@@ -75,6 +77,13 @@ CXformDynamicIndexOnlyGet2DynamicIndexOnlyScan::Transform(
CLogicalDynamicIndexOnlyGet *popIndexGet =
CLogicalDynamicIndexOnlyGet::PopConvert(pexpr->Pop());
+ if (!CHintUtils::SatisfiesPlanHints(
+ popIndexGet,
+ COptCtxt::PoctxtFromTLS()->GetOptimizerConfig()->GetPlanHint()))
+ {
+ return;
+ }
+
CMemoryPool *mp = pxfctxt->Pmp();
CTableDescriptor *ptabdesc = popIndexGet->Ptabdesc();
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformGet2TableScan.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformGet2TableScan.cpp
index 3ad41ca4e6..05e826aec9 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformGet2TableScan.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformGet2TableScan.cpp
@@ -13,10 +13,12 @@
#include "gpos/base.h"
+#include "gpopt/hints/CHintUtils.h"
#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/CExpressionHandle.h"
#include "gpopt/operators/CLogicalGet.h"
#include "gpopt/operators/CPhysicalTableScan.h"
+#include "gpopt/optimizer/COptimizerConfig.h"
using namespace gpopt;
@@ -76,6 +78,13 @@ CXformGet2TableScan::Transform(CXformContext *pxfctxt, CXformResult *pxfres,
GPOS_ASSERT(FCheckPattern(pexpr));
CLogicalGet *popGet = CLogicalGet::PopConvert(pexpr->Pop());
+ if (!CHintUtils::SatisfiesPlanHints(
+ popGet,
+ COptCtxt::PoctxtFromTLS()->GetOptimizerConfig()->GetPlanHint()))
+ {
+ return;
+ }
+
CMemoryPool *mp = pxfctxt->Pmp();
// create/extract components for alternative
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformIndexOnlyGet2IndexOnlyScan.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformIndexOnlyGet2IndexOnlyScan.cpp
index c2918cb959..641cbd5b22 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformIndexOnlyGet2IndexOnlyScan.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformIndexOnlyGet2IndexOnlyScan.cpp
@@ -16,12 +16,14 @@
#include "gpos/base.h"
#include "gpopt/base/COptCtxt.h"
+#include "gpopt/hints/CHintUtils.h"
#include "gpopt/metadata/CIndexDescriptor.h"
#include "gpopt/metadata/CTableDescriptor.h"
#include "gpopt/operators/CExpressionHandle.h"
#include "gpopt/operators/CLogicalIndexOnlyGet.h"
#include "gpopt/operators/CPatternLeaf.h"
#include "gpopt/operators/CPhysicalIndexOnlyScan.h"
+#include "gpopt/optimizer/COptimizerConfig.h"
#include "gpopt/xforms/CXformUtils.h"
#include "naucrates/md/CMDIndexGPDB.h"
@@ -89,6 +91,13 @@ CXformIndexOnlyGet2IndexOnlyScan::Transform(CXformContext *pxfctxt,
return;
}
+ if (!CHintUtils::SatisfiesPlanHints(
+ pop,
+ COptCtxt::PoctxtFromTLS()->GetOptimizerConfig()->GetPlanHint()))
+ {
+ return;
+ }
+
pindexdesc->AddRef();
ptabdesc->AddRef();
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
index 8f903e984f..d13b5d1c5c 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
@@ -22,6 +22,7 @@
#include "gpopt/base/CKeyCollection.h"
#include "gpopt/base/CUtils.h"
#include "gpopt/exception.h"
+#include "gpopt/hints/CHintUtils.h"
#include "gpopt/operators/CExpressionHandle.h"
#include "gpopt/operators/CLogicalAssert.h"
#include "gpopt/operators/CLogicalBitmapTableGet.h"
@@ -2557,6 +2558,21 @@ CXformUtils::PexprBuildBtreeIndexPlan(CMemoryPool *mp, CMDAccessor *md_accessor,
GPOS_NEW(mp) CName(mp, CName(alias)), ulPartIndex,
pdrgpcrOutput, pdrgpdrgpcrPart, partition_mdids,
ulUnindexedPredColCount);
+ if (!CHintUtils::SatisfiesPlanHints(
+ CLogicalDynamicIndexOnlyGet::PopConvert(popLogicalGet),
+ COptCtxt::PoctxtFromTLS()
+ ->GetOptimizerConfig()
+ ->GetPlanHint()))
+ {
+ // clean up
+ GPOS_DELETE(alias);
+ pdrgppcrIndexCols->Release();
+ pdrgpexprResidual->Release();
+ pdrgpexprIndex->Release();
+ outer_refs_in_index_get->Release();
+ popLogicalGet->Release();
+ return nullptr;
+ }
}
else
{
@@ -2566,6 +2582,21 @@ CXformUtils::PexprBuildBtreeIndexPlan(CMemoryPool *mp, CMDAccessor *md_accessor,
GPOS_NEW(mp) CName(mp, CName(alias)), ulPartIndex,
pdrgpcrOutput, pdrgpdrgpcrPart, partition_mdids,
ulUnindexedPredColCount);
+ if (!CHintUtils::SatisfiesPlanHints(
+ CLogicalDynamicIndexGet::PopConvert(popLogicalGet),
+ COptCtxt::PoctxtFromTLS()
+ ->GetOptimizerConfig()
+ ->GetPlanHint()))
+ {
+ // clean up
+ GPOS_DELETE(alias);
+ pdrgppcrIndexCols->Release();
+ pdrgpexprResidual->Release();
+ pdrgpexprIndex->Release();
+ outer_refs_in_index_get->Release();
+ popLogicalGet->Release();
+ return nullptr;
+ }
}
}
else
@@ -2577,6 +2608,21 @@ CXformUtils::PexprBuildBtreeIndexPlan(CMemoryPool *mp, CMDAccessor *md_accessor,
mp, pmdindex, ptabdesc, ulOriginOpId,
GPOS_NEW(mp) CName(mp, CName(alias)), pdrgpcrOutput,
ulUnindexedPredColCount, indexscanDirection);
+ if (!CHintUtils::SatisfiesPlanHints(
+ CLogicalIndexOnlyGet::PopConvert(popLogicalGet),
+ COptCtxt::PoctxtFromTLS()
+ ->GetOptimizerConfig()
+ ->GetPlanHint()))
+ {
+ // clean up
+ GPOS_DELETE(alias);
+ pdrgppcrIndexCols->Release();
+ pdrgpexprResidual->Release();
+ pdrgpexprIndex->Release();
+ outer_refs_in_index_get->Release();
+ popLogicalGet->Release();
+ return nullptr;
+ }
}
else
{
@@ -2584,6 +2630,21 @@ CXformUtils::PexprBuildBtreeIndexPlan(CMemoryPool *mp, CMDAccessor *md_accessor,
mp, pmdindex, ptabdesc, ulOriginOpId,
GPOS_NEW(mp) CName(mp, CName(alias)), pdrgpcrOutput,
ulUnindexedPredColCount, indexscanDirection);
+ if (!CHintUtils::SatisfiesPlanHints(
+ CLogicalIndexGet::PopConvert(popLogicalGet),
+ COptCtxt::PoctxtFromTLS()
+ ->GetOptimizerConfig()
+ ->GetPlanHint()))
+ {
+ // clean up
+ GPOS_DELETE(alias);
+ pdrgppcrIndexCols->Release();
+ pdrgpexprResidual->Release();
+ pdrgpexprIndex->Release();
+ outer_refs_in_index_get->Release();
+ popLogicalGet->Release();
+ return nullptr;
+ }
}
}
@@ -3033,11 +3094,19 @@ CXformUtils::PexprBitmapSelectBestIndex(
pexprIndexFinal->AddRef();
(*ppexprRecheck) = pexprIndexFinal;
- return GPOS_NEW(mp) CExpression(
- mp,
- GPOS_NEW(mp) CScalarBitmapIndexProbe(
- mp, pindexdesc, pmdindex->GetIndexRetItemTypeMdid()),
- pexprIndexFinal);
+ ptabdesc->AddRef();
+ CScalarBitmapIndexProbe *pop = GPOS_NEW(mp) CScalarBitmapIndexProbe(
+ mp, pindexdesc, ptabdesc, pmdindex->GetIndexRetItemTypeMdid());
+ if (!CHintUtils::SatisfiesPlanHints(
+ pop,
+ COptCtxt::PoctxtFromTLS()->GetOptimizerConfig()->GetPlanHint()))
+ {
+ pop->Release();
+ pexprIndexFinal->Release();
+ (*ppexprResidual) = pexprPred;
+ return nullptr;
+ }
+ return GPOS_NEW(mp) CExpression(mp, pop, pexprIndexFinal);
}
// else the unmatched predicate becomes the residual
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/CDXLUtils.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/CDXLUtils.h
index d14c3998c2..c2c03e1da3 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/CDXLUtils.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/CDXLUtils.h
@@ -16,6 +16,8 @@
#include "gpos/base.h"
#include "gpos/common/CAutoP.h"
+#include "gpos/common/CEnumSet.h"
+#include "gpos/common/CEnumSetIter.h"
#include "gpos/io/IOstream.h"
#include "gpos/string/CWStringDynamic.h"
@@ -251,6 +253,11 @@ public:
static CWStringDynamic *Serialize(
CMemoryPool *mp, const CDynamicPtrArray<T, CleanupFn> *arr);
+ template <typename T, ULONG sentinel_index>
+ static CWStringDynamic *Serialize(
+ CMemoryPool *mp, const CEnumSet<T, sentinel_index> *dynamic_set,
+ const WCHAR *(*func)(T));
+
// serialize a list of lists of integers into a comma-separate string
static CWStringDynamic *Serialize(CMemoryPool *mp,
const ULongPtr2dArray *pdrgpul);
@@ -259,6 +266,10 @@ public:
static CWStringDynamic *SerializeToCommaSeparatedString(
CMemoryPool *mp, const CharPtrArray *pdrgpsz);
+ // serialize a list of strings into a comma-separate string
+ static CWStringDynamic *SerializeToCommaSeparatedString(
+ CMemoryPool *mp, const StringPtrArray *pdrgpsz);
+
// decode a byte array from a string
static BYTE *DecodeByteArrayFromString(CMemoryPool *mp,
const CWStringDynamic *dxl_string,
@@ -321,6 +332,32 @@ CDXLUtils::Serialize(CMemoryPool *mp,
return string_var.Reset();
}
+template <typename T, ULONG sentinel_index>
+CWStringDynamic *
+CDXLUtils::Serialize(CMemoryPool *mp,
+ const CEnumSet<T, sentinel_index> *dynamic_set,
+ const WCHAR *(*func)(T))
+{
+ CAutoP<CWStringDynamic> str(GPOS_NEW(mp) CWStringDynamic(mp));
+
+ CEnumSetIter<T, sentinel_index> iter(*dynamic_set);
+ ULONG idx = 0;
+ while (iter.Advance())
+ {
+ const WCHAR *index = func(iter.TBit());
+ str->AppendWideCharArray(index);
+ if (idx != dynamic_set->Size() - 1)
+ {
+ str->AppendFormat(
+ GPOS_WSZ_LIT("%ls"),
+ CDXLTokens::GetDXLTokenStr(EdxltokenComma)->GetBuffer());
+ }
+ idx += 1;
+ }
+
+ return str.Reset();
+}
+
} // namespace gpdxl
#endif // GPDXL_CDXLUtils_H
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerBase.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerBase.h
index e77882f2db..d26f0417c9 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerBase.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerBase.h
@@ -43,6 +43,7 @@ enum EDxlParseHandlerType
EdxlphStatisticsConfig,
EdxlphCTEConfig,
EdxlphHint,
+ EdxlphPlanHint,
EdxlphWindowOids,
EdxlphTraceFlags,
EdxlphPlan,
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerFactory.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerFactory.h
index c90ffedf16..3b19ea15e1 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerFactory.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerFactory.h
@@ -132,6 +132,11 @@ private:
CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
CParseHandlerBase *parse_handler_root);
+ // construct plan hint parse handler
+ static CParseHandlerBase *CreatePlanHintParseHandler(
+ CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
+ CParseHandlerBase *parse_handler_root);
+
// construct window oids parse handler
static CParseHandlerBase *CreateWindowOidsParseHandler(
CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerPlanHint.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerPlanHint.h
new file mode 100644
index 0000000000..b17ba48ad6
--- /dev/null
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/CParseHandlerPlanHint.h
@@ -0,0 +1,76 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (C) 2016 VMware, Inc. or its affiliates.
+//
+// @filename:
+// CParseHandlerPlanHint.h
+//
+// @doc:
+// SAX parse handler class for parsing hint configuration
+//---------------------------------------------------------------------------
+
+#ifndef GPDXL_CParseHandlerPlanHint_H
+#define GPDXL_CParseHandlerPlanHint_H
+
+#include "gpos/base.h"
+
+#include "gpopt/hints/CPlanHint.h"
+#include "naucrates/dxl/parser/CParseHandlerBase.h"
+
+namespace gpdxl
+{
+using namespace gpos;
+
+XERCES_CPP_NAMESPACE_USE
+
+//---------------------------------------------------------------------------
+// @class:
+// CParseHandlerPlanHint
+//
+// @doc:
+// SAX parse handler class for parsing hint configuration options
+//
+//---------------------------------------------------------------------------
+class CParseHandlerPlanHint : public CParseHandlerBase
+{
+private:
+ // hint configuration
+ CPlanHint *m_hint;
+
+ // process the start of an element
+ void StartElement(
+ const XMLCh *const element_uri, // URI of element's namespace
+ const XMLCh *const element_local_name, // local part of element's name
+ const XMLCh *const element_qname, // element's qname
+ const Attributes &attr // element's attributes
+ ) override;
+
+ // process the end of an element
+ void EndElement(
+ const XMLCh *const element_uri, // URI of element's namespace
+ const XMLCh *const element_local_name, // local part of element's name
+ const XMLCh *const element_qname // element's qname
+ ) override;
+
+public:
+ CParseHandlerPlanHint(const CParseHandlerPlanHint &) = delete;
+
+ // ctor
+ CParseHandlerPlanHint(CMemoryPool *mp,
+ CParseHandlerManager *parse_handler_mgr,
+ CParseHandlerBase *parse_handler_root);
+
+ // dtor
+ ~CParseHandlerPlanHint() override;
+
+ // type of the parse handler
+ EDxlParseHandlerType GetParseHandlerType() const override;
+
+ // hint configuration
+ CPlanHint *GetPlanHint() const;
+};
+} // namespace gpdxl
+
+#endif // !GPDXL_CParseHandlerPlanHint_H
+
+// EOF
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h
index 62d8dd5945..17b194cc1d 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/parser/parsehandlers.h
@@ -110,6 +110,7 @@
#include "naucrates/dxl/parser/CParseHandlerPhysicalTVF.h"
#include "naucrates/dxl/parser/CParseHandlerPhysicalWindow.h"
#include "naucrates/dxl/parser/CParseHandlerPlan.h"
+#include "naucrates/dxl/parser/CParseHandlerPlanHint.h"
#include "naucrates/dxl/parser/CParseHandlerProjElem.h"
#include "naucrates/dxl/parser/CParseHandlerProjList.h"
#include "naucrates/dxl/parser/CParseHandlerProperties.h"
diff --git a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
index 9389280c07..25e1a2bfac 100644
--- a/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
+++ b/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/dxltokens.h
@@ -58,6 +58,8 @@ enum Edxltoken
EdxltokenCostModelType,
EdxltokenSegmentsForCosting,
EdxltokenHint,
+ EdxltokenPlanHint,
+ EdxltokenScanHint,
EdxltokenJoinArityForAssociativityCommutativity,
EdxltokenArrayExpansionThreshold,
EdxltokenJoinOrderDPThreshold,
diff --git a/src/backend/gporca/libnaucrates/src/CDXLUtils.cpp b/src/backend/gporca/libnaucrates/src/CDXLUtils.cpp
index c59ffdf6bd..43e627c033 100644
--- a/src/backend/gporca/libnaucrates/src/CDXLUtils.cpp
+++ b/src/backend/gporca/libnaucrates/src/CDXLUtils.cpp
@@ -1706,6 +1706,33 @@ CDXLUtils::SerializeToCommaSeparatedString(CMemoryPool *mp,
return dxl_string;
}
+// Serialize a list of chars into a comma-separated string
+CWStringDynamic *
+CDXLUtils::SerializeToCommaSeparatedString(CMemoryPool *mp,
+ const StringPtrArray *str_ptr_array)
+{
+ CWStringDynamic *dxl_string = GPOS_NEW(mp) CWStringDynamic(mp);
+
+ ULONG length = str_ptr_array->Size();
+ for (ULONG ul = 0; ul < length; ul++)
+ {
+ CWStringBase *value = (*str_ptr_array)[ul];
+ if (ul == length - 1)
+ {
+ // last element: do not print a comma
+ dxl_string->AppendFormat(GPOS_WSZ_LIT("%ls"), value->GetBuffer());
+ }
+ else
+ {
+ dxl_string->AppendFormat(
+ GPOS_WSZ_LIT("%ls%ls"), value->GetBuffer(),
+ CDXLTokens::GetDXLTokenStr(EdxltokenComma)->GetBuffer());
+ }
+ }
+
+ return dxl_string;
+}
+
//---------------------------------------------------------------------------
// @function:
// CDXLUtils::CreateMultiByteCharStringFromWCString
diff --git a/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp b/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp
index daf8714a86..fc9d00b129 100644
--- a/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp
+++ b/src/backend/gporca/libnaucrates/src/operators/CDXLOperatorFactory.cpp
@@ -3082,7 +3082,7 @@ CDXLOperatorFactory::ExtractConvertSegmentIdsToArray(
// CDXLOperatorFactory::ExtractConvertStrsToArray
//
// @doc:
-// Parse a semicolon-separated list of strings into a dynamic array.
+// Parse a comma-separated list of strings into a dynamic array.
//
//---------------------------------------------------------------------------
StringPtrArray *
@@ -3093,8 +3093,8 @@ CDXLOperatorFactory::ExtractConvertStrsToArray(
StringPtrArray *array_strs = GPOS_NEW(mp) StringPtrArray(mp);
- XMLStringTokenizer mdid_components(
- xml_val, CDXLTokens::XmlstrToken(EdxltokenSemicolon));
+ XMLStringTokenizer mdid_components(xml_val,
+ CDXLTokens::XmlstrToken(EdxltokenComma));
const ULONG num_tokens = mdid_components.countTokens();
for (ULONG ul = 0; ul < num_tokens; ul++)
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp
index 9c1cea96ed..53cd6333c3 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerFactory.cpp
@@ -61,6 +61,7 @@ CParseHandlerFactory::Init(CMemoryPool *mp)
{EdxltokenCTEConfig, &CreateCTECfgParseHandler},
{EdxltokenCostModelConfig, &CreateCostModelCfgParseHandler},
{EdxltokenHint, &CreateHintParseHandler},
+ {EdxltokenPlanHint, &CreatePlanHintParseHandler},
{EdxltokenWindowOids, &CreateWindowOidsParseHandler},
{EdxltokenRelation, &CreateMDRelationParseHandler},
@@ -435,6 +436,16 @@ CParseHandlerFactory::CreateHintParseHandler(
CParseHandlerHint(mp, parse_handler_mgr, parse_handler_root);
}
+// creates a parse handler for parsing plan hint configuration
+CParseHandlerBase *
+CParseHandlerFactory::CreatePlanHintParseHandler(
+ CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
+ CParseHandlerBase *parse_handler_root)
+{
+ return GPOS_NEW(mp)
+ CParseHandlerPlanHint(mp, parse_handler_mgr, parse_handler_root);
+}
+
// creates a parse handler for parsing window oids configuration
CParseHandlerBase *
CParseHandlerFactory::CreateWindowOidsParseHandler(
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerOptimizerConfig.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerOptimizerConfig.cpp
index e2b6403d4b..90780d7da4 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerOptimizerConfig.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerOptimizerConfig.cpp
@@ -26,6 +26,7 @@
#include "naucrates/dxl/parser/CParseHandlerFactory.h"
#include "naucrates/dxl/parser/CParseHandlerHint.h"
#include "naucrates/dxl/parser/CParseHandlerManager.h"
+#include "naucrates/dxl/parser/CParseHandlerPlanHint.h"
#include "naucrates/dxl/parser/CParseHandlerStatisticsConfig.h"
#include "naucrates/dxl/parser/CParseHandlerTraceFlags.h"
#include "naucrates/dxl/parser/CParseHandlerWindowOids.h"
@@ -93,6 +94,20 @@ CParseHandlerOptimizerConfig::StartElement(
this->Append(pphHint);
return;
}
+ else if (0 == XMLString::compareString(
+ CDXLTokens::XmlstrToken(EdxltokenPlanHint),
+ element_local_name))
+ {
+ // install a parse handler for the plan hint config
+ CParseHandlerBase *pphHint = CParseHandlerFactory::GetParseHandler(
+ m_mp, CDXLTokens::XmlstrToken(EdxltokenPlanHint),
+ m_parse_handler_mgr, this);
+ m_parse_handler_mgr->ActivateParseHandler(pphHint);
+ pphHint->startElement(element_uri, element_local_name, element_qname,
+ attrs);
+ this->Append(pphHint);
+ return;
+ }
else if (0 == XMLString::compareString(
CDXLTokens::XmlstrToken(EdxltokenCostModelConfig),
element_local_name))
@@ -189,7 +204,7 @@ CParseHandlerOptimizerConfig::EndElement(const XMLCh *const, // element_uri,
}
GPOS_ASSERT(nullptr == m_optimizer_config);
- GPOS_ASSERT(7 >= this->Length());
+ GPOS_ASSERT(8 >= this->Length());
CParseHandlerEnumeratorConfig *pphEnumeratorConfig =
dynamic_cast<CParseHandlerEnumeratorConfig *>((*this)[0]);
@@ -214,6 +229,7 @@ CParseHandlerOptimizerConfig::EndElement(const XMLCh *const, // element_uri,
ICostModel *pcm = nullptr;
CHint *phint = nullptr;
+ CPlanHint *pplanhint = nullptr;
if (5 == this->Length())
{
// no cost model: use default one
@@ -222,6 +238,11 @@ CParseHandlerOptimizerConfig::EndElement(const XMLCh *const, // element_uri,
}
else
{
+ // XXX: MDP format has changed over time to add additional optimizer
+ // config parameters. We have tried to preserve the functionality of
+ // old MDPs without requiring manual changes. However, argument
+ // position is currently very rigid, hence the hardcoded index values
+ // and logic to account for missing config parameters.
CParseHandlerCostModel *pphCostModelConfig =
dynamic_cast<CParseHandlerCostModel *>((*this)[4]);
pcm = pphCostModelConfig->GetCostModel();
@@ -239,11 +260,21 @@ CParseHandlerOptimizerConfig::EndElement(const XMLCh *const, // element_uri,
phint = pphHint->GetHint();
GPOS_ASSERT(nullptr != phint);
phint->AddRef();
+ if (7 < this->Length())
+ {
+ CParseHandlerPlanHint *pphHint =
+ dynamic_cast<CParseHandlerPlanHint *>((*this)[6]);
+ pplanhint = pphHint->GetPlanHint();
+ if (nullptr != pplanhint)
+ {
+ pplanhint->AddRef();
+ }
+ }
}
}
m_optimizer_config = GPOS_NEW(m_mp) COptimizerConfig(
- pec, stats_config, pcteconfig, pcm, phint, pwindowoidsGPDB);
+ pec, stats_config, pcteconfig, pcm, phint, pplanhint, pwindowoidsGPDB);
CParseHandlerTraceFlags *pphTraceFlags =
dynamic_cast<CParseHandlerTraceFlags *>((*this)[this->Length() - 1]);
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp
new file mode 100644
index 0000000000..7418e5c707
--- /dev/null
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerPlanHint.cpp
@@ -0,0 +1,177 @@
+//---------------------------------------------------------------------------
+// Greenplum Database
+// Copyright (C) 2016 VMware, Inc. or its affiliates.
+//
+// @filename:
+// CParseHandlerPlanHint.cpp
+//
+// @doc:
+// Implementation of the SAX parse handler class for parsing hint
+// configuration
+//---------------------------------------------------------------------------
+
+#include "naucrates/dxl/parser/CParseHandlerPlanHint.h"
+
+#include "gpopt/hints/CHintUtils.h"
+#include "naucrates/dxl/operators/CDXLOperatorFactory.h"
+#include "naucrates/dxl/parser/CParseHandlerFactory.h"
+#include "naucrates/dxl/parser/CParseHandlerManager.h"
+#include "naucrates/dxl/xml/dxltokens.h"
+
+using namespace gpdxl;
+using namespace gpopt;
+
+XERCES_CPP_NAMESPACE_USE
+
+//---------------------------------------------------------------------------
+// @function:
+// CParseHandlerPlanHint::CParseHandlerPlanHint
+//
+// @doc:
+// Ctor
+//
+//---------------------------------------------------------------------------
+CParseHandlerPlanHint::CParseHandlerPlanHint(
+ CMemoryPool *mp, CParseHandlerManager *parse_handler_mgr,
+ CParseHandlerBase *parse_handler_root)
+ : CParseHandlerBase(mp, parse_handler_mgr, parse_handler_root),
+ m_hint(nullptr)
+{
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CParseHandlerPlanHint::~CParseHandlerPlanHint
+//
+// @doc:
+// Dtor
+//
+//---------------------------------------------------------------------------
+CParseHandlerPlanHint::~CParseHandlerPlanHint()
+{
+ CRefCount::SafeRelease(m_hint);
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CParseHandlerPlanHint::StartElement
+//
+// @doc:
+// Invoked by Xerces to process an opening tag
+//
+//---------------------------------------------------------------------------
+void
+CParseHandlerPlanHint::StartElement(
+ const XMLCh *const element_uri GPOS_UNUSED,
+ const XMLCh *const element_local_name,
+ const XMLCh *const element_qname GPOS_UNUSED, const Attributes &attrs)
+{
+ if (0 ==
+ XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenPlanHint),
+ element_local_name))
+ {
+ m_hint = GPOS_NEW(m_mp) CPlanHint(m_mp);
+ }
+ else if (0 == XMLString::compareString(
+ CDXLTokens::XmlstrToken(EdxltokenScanHint),
+ element_local_name))
+ {
+ CWStringBase *alias = CDXLOperatorFactory::ExtractConvertAttrValueToStr(
+ m_parse_handler_mgr->GetDXLMemoryManager(), attrs, EdxltokenAlias,
+ EdxltokenPlanHint);
+
+ const XMLCh *attr_val_xml_hints = CDXLOperatorFactory::ExtractAttrValue(
+ attrs, EdxltokenOpName, EdxltokenPlanHint);
+ StringPtrArray *hint_names = nullptr;
+ if (nullptr != attr_val_xml_hints)
+ {
+ hint_names = CDXLOperatorFactory::ExtractConvertStrsToArray(
+ m_parse_handler_mgr->GetDXLMemoryManager(), attr_val_xml_hints);
+ }
+
+ const XMLCh *attr_val_xml = CDXLOperatorFactory::ExtractAttrValue(
+ attrs, EdxltokenIndexName, EdxltokenPlanHint, true);
+ StringPtrArray *index_names = nullptr;
+ if (nullptr != attr_val_xml)
+ {
+ index_names = CDXLOperatorFactory::ExtractConvertStrsToArray(
+ m_parse_handler_mgr->GetDXLMemoryManager(), attr_val_xml);
+ }
+ else
+ {
+ index_names = GPOS_NEW(m_mp) StringPtrArray(m_mp);
+ }
+
+ CScanHint *hint = GPOS_NEW(m_mp) CScanHint(m_mp, alias, index_names);
+ for (ULONG ul = 0; ul < hint_names->Size(); ul++)
+ {
+ hint->AddType(CHintUtils::ScanHintStringToEnum(
+ (*hint_names)[ul]->GetBuffer()));
+ }
+ hint_names->Release();
+
+ m_hint->AddHint(hint);
+ }
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CParseHandlerPlanHint::EndElement
+//
+// @doc:
+// Invoked by Xerces to process a closing tag
+//
+//---------------------------------------------------------------------------
+void
+CParseHandlerPlanHint::EndElement(const XMLCh *const, // element_uri,
+ const XMLCh *const element_local_name,
+ const XMLCh *const // element_qname
+)
+{
+ if (0 ==
+ XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenPlanHint),
+ element_local_name))
+ {
+ // deactivate handler
+ m_parse_handler_mgr->DeactivateHandler();
+ }
+ else if (0 != XMLString::compareString(
+ CDXLTokens::XmlstrToken(EdxltokenScanHint),
+ element_local_name))
+ {
+ CWStringDynamic *str = CDXLUtils::CreateDynamicStringFromXMLChArray(
+ m_parse_handler_mgr->GetDXLMemoryManager(), element_local_name);
+ GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag,
+ str->GetBuffer());
+ }
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CParseHandlerPlanHint::GetParseHandlerType
+//
+// @doc:
+// Return the type of the parse handler.
+//
+//---------------------------------------------------------------------------
+EDxlParseHandlerType
+CParseHandlerPlanHint::GetParseHandlerType() const
+{
+ return EdxlphPlanHint;
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CParseHandlerPlanHint::GetPlanHint
+//
+// @doc:
+// Returns the hint configuration
+//
+//---------------------------------------------------------------------------
+CPlanHint *
+CParseHandlerPlanHint::GetPlanHint() const
+{
+ return m_hint;
+}
+
+// EOF
diff --git a/src/backend/gporca/libnaucrates/src/parser/Makefile b/src/backend/gporca/libnaucrates/src/parser/Makefile
index ff858c1c7d..2d513cf5ac 100644
--- a/src/backend/gporca/libnaucrates/src/parser/Makefile
+++ b/src/backend/gporca/libnaucrates/src/parser/Makefile
@@ -108,6 +108,7 @@ OBJS = CParseHandlerAgg.o \
CParseHandlerPhysicalTVF.o \
CParseHandlerPhysicalWindow.o \
CParseHandlerPlan.o \
+ CParseHandlerPlanHint.o \
CParseHandlerProjElem.o \
CParseHandlerProjList.o \
CParseHandlerProperties.o \
diff --git a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
index e96a5b9824..af2b1a20df 100644
--- a/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
+++ b/src/backend/gporca/libnaucrates/src/xml/dxltokens.cpp
@@ -74,6 +74,8 @@ CDXLTokens::Init(CMemoryPool *mp)
{EdxltokenCostModelType, GPOS_WSZ_LIT("CostModelType")},
{EdxltokenSegmentsForCosting, GPOS_WSZ_LIT("SegmentsForCosting")},
{EdxltokenHint, GPOS_WSZ_LIT("Hint")},
+ {EdxltokenPlanHint, GPOS_WSZ_LIT("PlanHint")},
+ {EdxltokenScanHint, GPOS_WSZ_LIT("ScanHint")},
{EdxltokenJoinArityForAssociativityCommutativity,
GPOS_WSZ_LIT("JoinArityForAssociativityCommutativity")},
{EdxltokenArrayExpansionThreshold,
diff --git a/src/backend/gporca/server/CMakeLists.txt b/src/backend/gporca/server/CMakeLists.txt
index 79f95952b6..d575b7c71d 100644
--- a/src/backend/gporca/server/CMakeLists.txt
+++ b/src/backend/gporca/server/CMakeLists.txt
@@ -414,6 +414,12 @@ CoveringIndexTest:
CoveringIndex-1 CoveringIndex-2 CoveringIndex-3 CoveringIndex-Cost-1 CoveringIndex-Cost-2
CoveringIndex-DoesSupport-Gist CoveringIndex-DoesNotSupport-Gin;
+CPlanHintsTest:
+Hint-SeqScan-Over-Table Hint-SeqScan-Over-Join
+Hint-IndexScan-Over-Table Hint-IndexScan-Over-Join Hint-NoIndexScan-Over-Table
+Hint-IndexOnlyScan-Over-Table Hint-NoIndexOnlyScan-Over-Table
+Hint-BitmapScan-Over-Table Hint-NoBitmapScan-Over-Table;
+
CForeignPartTest:
ForeignPartUniform PartForeignMixed PartForeignDifferentServer PartForeignDifferentExecLocation PartForeignMixedDPE PartForeignMixedSPE PartForeignUniformSPE ForeignScanExecLocAnySimpleScan ForeignScanExecLocAnyJoin ForeignPartOneTimeFilterDPE
")
diff --git a/src/backend/gporca/server/src/unittest/CTestUtils.cpp b/src/backend/gporca/server/src/unittest/CTestUtils.cpp
index 058b55d35f..1bf137a5cb 100644
--- a/src/backend/gporca/server/src/unittest/CTestUtils.cpp
+++ b/src/backend/gporca/server/src/unittest/CTestUtils.cpp
@@ -3536,7 +3536,8 @@ CTestUtils::EresSamplePlans(const CHAR *rgszFileNames[], ULONG ulTests,
CEnumeratorConfig(mp, 0 /*plan_id*/, 1000 /*ullSamples*/),
CStatisticsConfig::PstatsconfDefault(mp),
CCTEConfig::PcteconfDefault(mp), ICostModel::PcmDefault(mp),
- CHint::PhintDefault(mp), CWindowOids::GetWindowOids(mp));
+ CHint::PhintDefault(mp), nullptr,
+ CWindowOids::GetWindowOids(mp));
}
else
{
@@ -3674,7 +3675,8 @@ CTestUtils::EresCheckPlans(const CHAR *rgszFileNames[], ULONG ulTests,
CEnumeratorConfig(mp, 0 /*plan_id*/, 1000 /*ullSamples*/),
CStatisticsConfig::PstatsconfDefault(mp),
CCTEConfig::PcteconfDefault(mp), ICostModel::PcmDefault(mp),
- CHint::PhintDefault(mp), CWindowOids::GetWindowOids(mp));
+ CHint::PhintDefault(mp), nullptr,
+ CWindowOids::GetWindowOids(mp));
}
else
{
diff --git a/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp b/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp
index b79a01aaa9..58d3971cfc 100644
--- a/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp
+++ b/src/backend/gporca/server/src/unittest/gpopt/minidump/CICGTest.cpp
@@ -303,7 +303,7 @@ CICGTest::EresUnittest_NegativeIndexApplyTests()
CEnumeratorConfig::GetEnumeratorCfg(mp, 0 /*plan_id*/),
CStatisticsConfig::PstatsconfDefault(mp),
CCTEConfig::PcteconfDefault(mp), pcm, CHint::PhintDefault(mp),
- CWindowOids::GetWindowOids(mp));
+ nullptr /* pplanhint */, CWindowOids::GetWindowOids(mp));
CDXLNode *pdxlnPlan = CMinidumperUtils::PdxlnExecuteMinidump(
mp, rgszNegativeIndexApplyFileNames[ul],
GPOPT_TEST_SEGMENTS /*ulSegments*/, 1 /*ulSessionId*/,
diff --git a/src/backend/gporca/server/src/unittest/gpopt/minidump/CMiniDumperDXLTest.cpp b/src/backend/gporca/server/src/unittest/gpopt/minidump/CMiniDumperDXLTest.cpp
index 5a38429d53..0f9fe79127 100644
--- a/src/backend/gporca/server/src/unittest/gpopt/minidump/CMiniDumperDXLTest.cpp
+++ b/src/backend/gporca/server/src/unittest/gpopt/minidump/CMiniDumperDXLTest.cpp
@@ -126,7 +126,8 @@ CMiniDumperDXLTest::EresUnittest_Basic()
CEnumeratorConfig::GetEnumeratorCfg(mp, 0 /*plan_id*/),
CStatisticsConfig::PstatsconfDefault(mp),
CCTEConfig::PcteconfDefault(mp), ICostModel::PcmDefault(mp),
- CHint::PhintDefault(mp), CWindowOids::GetWindowOids(mp));
+ CHint::PhintDefault(mp), nullptr /* pplanhint */,
+ CWindowOids::GetWindowOids(mp));
// setup opt ctx
CAutoOptCtxt aoc(mp, &mda, nullptr, /* pceeval */
diff --git a/src/backend/gporca/server/src/unittest/gpopt/minidump/CMissingStatsTest.cpp b/src/backend/gporca/server/src/unittest/gpopt/minidump/CMissingStatsTest.cpp
index cef73d97ab..a2d362aa5a 100644
--- a/src/backend/gporca/server/src/unittest/gpopt/minidump/CMissingStatsTest.cpp
+++ b/src/backend/gporca/server/src/unittest/gpopt/minidump/CMissingStatsTest.cpp
@@ -88,7 +88,7 @@ CMissingStatsTest::EresUnittest_RunTests()
CEnumeratorConfig::GetEnumeratorCfg(mp, 0 /*plan_id*/),
CStatisticsConfig::PstatsconfDefault(mp),
CCTEConfig::PcteconfDefault(mp), pcm, CHint::PhintDefault(mp),
- CWindowOids::GetWindowOids(mp));
+ nullptr /* pplanhint */, CWindowOids::GetWindowOids(mp));
SMissingStatsTestCase testCase = rgtc[ul];
CDXLNode *pdxlnPlan = CMinidumperUtils::PdxlnExecuteMinidump(
diff --git a/src/backend/gporca/server/src/unittest/gpopt/operators/CExpressionTest.cpp b/src/backend/gporca/server/src/unittest/gpopt/operators/CExpressionTest.cpp
index 8989f60951..73e3a527cd 100644
--- a/src/backend/gporca/server/src/unittest/gpopt/operators/CExpressionTest.cpp
+++ b/src/backend/gporca/server/src/unittest/gpopt/operators/CExpressionTest.cpp
@@ -389,8 +389,10 @@ CExpressionTest::EresUnittest_BitmapGet()
CMDIdGPDB *mdid = GPOS_NEW(mp) CMDIdGPDB(CMDIdGPDB::m_mdid_unknown);
CIndexDescriptor *pindexdesc =
CIndexDescriptor::Pindexdesc(mp, ptabdesc, pmdindex);
+ ptabdesc->AddRef();
CExpression *pexprBitmapIndex = GPOS_NEW(mp) CExpression(
- mp, GPOS_NEW(mp) CScalarBitmapIndexProbe(mp, pindexdesc, mdid),
+ mp,
+ GPOS_NEW(mp) CScalarBitmapIndexProbe(mp, pindexdesc, ptabdesc, mdid),
pexprIndexCond);
CColRefArray *pdrgpcrTable = GPOS_NEW(mp) CColRefArray(mp);
@@ -440,8 +442,10 @@ CExpressionTest::EresUnittest_BitmapGet()
CIndexDescriptor::Pindexdesc(mp, ptabdesc, pmdindex);
CExpression *pexprIndexCond2 = CUtils::PexprScalarEqCmp(
mp, pcrFirst, CUtils::PexprScalarConstInt4(mp, 20 /*val*/));
+ ptabdesc->AddRef();
CExpression *pexprBitmapIndex2 = GPOS_NEW(mp) CExpression(
- mp, GPOS_NEW(mp) CScalarBitmapIndexProbe(mp, pindexdesc2, pmdid2),
+ mp,
+ GPOS_NEW(mp) CScalarBitmapIndexProbe(mp, pindexdesc2, ptabdesc, pmdid2),
pexprIndexCond2);
CWStringDynamic strIndex2(mp);
COstreamString ossIndex2(&strIndex2);
diff --git a/src/include/gpopt/utils/COptTasks.h b/src/include/gpopt/utils/COptTasks.h
index 7910aeb3ad..2de78c7667 100644
--- a/src/include/gpopt/utils/COptTasks.h
+++ b/src/include/gpopt/utils/COptTasks.h
@@ -42,6 +42,7 @@ class CMDAccessor;
class CQueryContext;
class COptimizerConfig;
class ICostModel;
+class CPlanHint;
} // namespace gpopt
struct PlannedStmt;
@@ -120,7 +121,8 @@ private:
// create optimizer configuration object
static COptimizerConfig *CreateOptimizerConfig(CMemoryPool *mp,
- ICostModel *cost_model);
+ ICostModel *cost_model,
+ CPlanHint *plan_hints);
// optimize a query to a physical DXL
static void *OptimizeTask(void *ptr);
@@ -143,6 +145,9 @@ private:
// generate an instance of optimizer cost model
static ICostModel *GetCostModel(CMemoryPool *mp, ULONG num_segments);
+ // create optimizer plan hints
+ static CPlanHint *GetPlanHints(CMemoryPool *mp, Query *query);
+
// print warning messages for columns with missing statistics
static void PrintMissingStatsWarning(CMemoryPool *mp,
CMDAccessor *md_accessor,
diff --git a/src/include/optimizer/hints.h b/src/include/optimizer/hints.h
new file mode 100644
index 0000000000..3765c1c67d
--- /dev/null
+++ b/src/include/optimizer/hints.h
@@ -0,0 +1,235 @@
+/*
+ * Copied from pg_hint_plan.c
+ */
+
+extern "C" {
+#include "postgres.h"
+#include "nodes/pathnodes.h"
+#include "utils/guc.h"
+}
+
+/* hint keyword of enum type*/
+typedef enum HintKeyword
+{
+ HINT_KEYWORD_SEQSCAN,
+ HINT_KEYWORD_INDEXSCAN,
+ HINT_KEYWORD_INDEXSCANREGEXP,
+ HINT_KEYWORD_BITMAPSCAN,
+ HINT_KEYWORD_BITMAPSCANREGEXP,
+ HINT_KEYWORD_TIDSCAN,
+ HINT_KEYWORD_NOSEQSCAN,
+ HINT_KEYWORD_NOINDEXSCAN,
+ HINT_KEYWORD_NOBITMAPSCAN,
+ HINT_KEYWORD_NOTIDSCAN,
+ HINT_KEYWORD_INDEXONLYSCAN,
+ HINT_KEYWORD_INDEXONLYSCANREGEXP,
+ HINT_KEYWORD_NOINDEXONLYSCAN,
+
+ HINT_KEYWORD_NESTLOOP,
+ HINT_KEYWORD_MERGEJOIN,
+ HINT_KEYWORD_HASHJOIN,
+ HINT_KEYWORD_NONESTLOOP,
+ HINT_KEYWORD_NOMERGEJOIN,
+ HINT_KEYWORD_NOHASHJOIN,
+
+ HINT_KEYWORD_LEADING,
+ HINT_KEYWORD_SET,
+ HINT_KEYWORD_ROWS,
+ HINT_KEYWORD_PARALLEL,
+
+ HINT_KEYWORD_UNRECOGNIZED
+} HintKeyword;
+
+#define SCAN_HINT_ACCEPTS_INDEX_NAMES(kw) \
+ (kw == HINT_KEYWORD_INDEXSCAN || \
+ kw == HINT_KEYWORD_INDEXSCANREGEXP || \
+ kw == HINT_KEYWORD_INDEXONLYSCAN || \
+ kw == HINT_KEYWORD_INDEXONLYSCANREGEXP || \
+ kw == HINT_KEYWORD_BITMAPSCAN || \
+ kw == HINT_KEYWORD_BITMAPSCANREGEXP)
+
+
+typedef struct Hint Hint;
+typedef struct HintState HintState;
+
+typedef Hint *(*HintCreateFunction) (const char *hint_str,
+ const char *keyword,
+ HintKeyword hint_keyword);
+typedef void (*HintDeleteFunction) (Hint *hint);
+typedef void (*HintDescFunction) (Hint *hint, StringInfo buf, bool nolf);
+typedef int (*HintCmpFunction) (const Hint *a, const Hint *b);
+typedef const char *(*HintParseFunction) (Hint *hint, HintState *hstate,
+ Query *parse, const char *str);
+
+/* hint types */
+#define NUM_HINT_TYPE 6
+typedef enum HintType
+{
+ HINT_TYPE_SCAN_METHOD,
+ HINT_TYPE_JOIN_METHOD,
+ HINT_TYPE_LEADING,
+ HINT_TYPE_SET,
+ HINT_TYPE_ROWS,
+ HINT_TYPE_PARALLEL
+} HintType;
+
+typedef enum HintTypeBitmap
+{
+ HINT_BM_SCAN_METHOD = 1,
+ HINT_BM_PARALLEL = 2
+} HintTypeBitmap;
+
+/* hint status */
+typedef enum HintStatus
+{
+ HINT_STATE_NOTUSED = 0, /* specified relation not used in query */
+ HINT_STATE_USED, /* hint is used */
+ HINT_STATE_DUPLICATION, /* specified hint duplication */
+ HINT_STATE_ERROR /* execute error (parse error does not include
+ * it) */
+} HintStatus;
+
+/* common data for all hints. */
+struct Hint
+{
+ const char *hint_str; /* must not do pfree */
+ const char *keyword; /* must not do pfree */
+ HintKeyword hint_keyword;
+ HintType type;
+ HintStatus state;
+ HintDeleteFunction delete_func;
+ HintDescFunction desc_func;
+ HintCmpFunction cmp_func;
+ HintParseFunction parse_func;
+};
+
+/* scan method hints */
+typedef struct ScanMethodHint
+{
+ Hint base;
+ char *relname;
+ List *indexnames;
+ bool regexp;
+ unsigned char enforce_mask;
+} ScanMethodHint;
+
+typedef struct ParentIndexInfo
+{
+ bool indisunique;
+ Oid method;
+ List *column_names;
+ char *expression_str;
+ Oid *indcollation;
+ Oid *opclass;
+ int16 *indoption;
+ char *indpred_str;
+} ParentIndexInfo;
+
+/* join method hints */
+typedef struct JoinMethodHint
+{
+ Hint base;
+ int nrels;
+ int inner_nrels;
+ char **relnames;
+ unsigned char enforce_mask;
+ Relids joinrelids;
+ Relids inner_joinrelids;
+} JoinMethodHint;
+
+/* join order hints */
+typedef struct OuterInnerRels
+{
+ char *relation;
+ List *outer_inner_pair;
+} OuterInnerRels;
+
+typedef struct LeadingHint
+{
+ Hint base;
+ List *relations; /* relation names specified in Leading hint */
+ OuterInnerRels *outer_inner;
+} LeadingHint;
+
+/* change a run-time parameter hints */
+typedef struct SetHint
+{
+ Hint base;
+ char *name; /* name of variable */
+ char *value;
+ List *words;
+} SetHint;
+
+/* rows hints */
+typedef enum RowsValueType {
+ RVT_ABSOLUTE, /* Rows(... #1000) */
+ RVT_ADD, /* Rows(... +1000) */
+ RVT_SUB, /* Rows(... -1000) */
+ RVT_MULTI, /* Rows(... *1.2) */
+} RowsValueType;
+typedef struct RowsHint
+{
+ Hint base;
+ int nrels;
+ int inner_nrels;
+ char **relnames;
+ Relids joinrelids;
+ Relids inner_joinrelids;
+ char *rows_str;
+ RowsValueType value_type;
+ double rows;
+} RowsHint;
+
+/* parallel hints */
+typedef struct ParallelHint
+{
+ Hint base;
+ char *relname;
+ char *nworkers_str; /* original string of nworkers */
+ int nworkers; /* num of workers specified by Worker */
+ bool force_parallel; /* force parallel scan */
+} ParallelHint;
+
+/*
+ * Describes a context of hint processing.
+ */
+struct HintState
+{
+ char *hint_str; /* original hint string */
+
+ /* all hint */
+ int nall_hints; /* # of valid all hints */
+ int max_all_hints; /* # of slots for all hints */
+ Hint **all_hints; /* parsed all hints */
+
+ /* # of each hints */
+ int num_hints[NUM_HINT_TYPE];
+
+ /* for scan method hints */
+ ScanMethodHint **scan_hints; /* parsed scan hints */
+
+ /* Initial values of parameters */
+ int init_scan_mask; /* enable_* mask */
+ int init_nworkers; /* max_parallel_workers_per_gather */
+ /* min_parallel_table_scan_size*/
+ int init_min_para_tablescan_size;
+ /* min_parallel_index_scan_size*/
+ int init_min_para_indexscan_size;
+ double init_paratup_cost; /* parallel_tuple_cost */
+ double init_parasetup_cost;/* parallel_setup_cost */
+
+ PlannerInfo *current_root; /* PlannerInfo for the followings */
+ Index parent_relid; /* inherit parent of table relid */
+ ScanMethodHint *parent_scan_hint; /* scan hint for the parent */
+ ParallelHint *parent_parallel_hint; /* parallel hint for the parent */
+ List *parent_index_infos; /* list of parent table's index */
+
+ JoinMethodHint **join_hints; /* parsed join hints */
+ int init_join_mask; /* initial value join parameter */
+ List **join_hint_level;
+ LeadingHint **leading_hint; /* parsed Leading hints */
+ SetHint **set_hints; /* parsed Set hints */
+ GucContext context; /* which GUC parameters can we set? */
+ RowsHint **rows_hints; /* parsed Rows hints */
+ ParallelHint **parallel_hints; /* parsed Parallel hints */
+};
diff --git a/src/include/optimizer/orca.h b/src/include/optimizer/orca.h
index f28e761701..27f64b6009 100644
--- a/src/include/optimizer/orca.h
+++ b/src/include/optimizer/orca.h
@@ -33,6 +33,10 @@ optimize_query(Query *parse, int cursorOptions, ParamListInfo boundParams)
return NULL;
}
+// plan_hint_hook generates HintState by parsing a Query.
+typedef void *(*plan_hint_hook_type) (Query *parse);
+extern PGDLLIMPORT plan_hint_hook_type plan_hint_hook;
+
#endif
#endif /* ORCA_H */
diff --git a/src/include/parser/parse_relation.h b/src/include/parser/parse_relation.h
index 625e7d90cd..300a04ca9d 100644
--- a/src/include/parser/parse_relation.h
+++ b/src/include/parser/parse_relation.h
@@ -125,5 +125,6 @@ extern Oid attnumCollationId(Relation rd, int attid);
extern bool isQueryUsingTempRelation(Query *query);
extern bool isSimplyUpdatableRelation(Oid relid, bool noerror);
+extern bool isAliasPartitionedTable(Query *query, const char *alias);
#endif /* PARSE_RELATION_H */
diff --git a/src/test/regress/expected/planhints.out b/src/test/regress/expected/planhints.out
new file mode 100644
index 0000000000..088e453114
--- /dev/null
+++ b/src/test/regress/expected/planhints.out
@@ -0,0 +1,1564 @@
+-- Test Optimizer Plan Hints Feature
+--
+-- Purpose: Test that plan hints may be used to coerce the plan shape generated
+-- by the optimizer.
+LOAD 'pg_hint_plan';
+DROP SCHEMA IF EXISTS planhints CASCADE;
+NOTICE: schema "planhints" does not exist, skipping
+CREATE SCHEMA planhints;
+SET search_path=planhints;
+SET optimizer_trace_fallback=on;
+-- Setup tables
+CREATE TABLE my_table(a int, b int);
+CREATE INDEX my_awesome_index ON my_table(a);
+CREATE INDEX my_amazing_index ON my_table(a);
+CREATE INDEX my_incredible_index ON my_table(a);
+CREATE INDEX my_bitmap_index ON my_table USING bitmap (a);
+CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+CREATE INDEX your_awesome_index ON your_table(a);
+CREATE INDEX your_amazing_index ON your_table(a);
+CREATE INDEX your_incredible_index ON your_table(a);
+CREATE INDEX your_bitmap_index ON your_table USING bitmap (a);
+CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(10) EVERY(3));
+CREATE INDEX our_awesome_index ON our_table(a);
+CREATE INDEX our_amazing_index ON our_table(a);
+CREATE INDEX our_incredible_index ON our_table(a);
+CREATE INDEX our_bitmap_index ON our_table USING bitmap (a);
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+--------------------------------------------------------------------
+--
+-- 1. [JOIN] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+/*+
+ SeqScan(t1)
+ SeqScan(t2)
+ SeqScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+----------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Hash Join
+ Hash Cond: (my_table.a = our_table.a)
+ -> Seq Scan on my_table
+ Filter: (a < 42)
+ -> Hash
+ -> Dynamic Seq Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Filter: (a < 42)
+ -> Hash
+ -> Seq Scan on your_table
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(15 rows)
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan
+/*+
+ IndexScan(t1 my_incredible_index)
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Scan using my_incredible_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Scan on our_amazing_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1)
+ IndexScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ IndexOnlyScan(t2 your_amazing_index)
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_amazing_index on your_table
+ Index Cond: (a < 42)
+ -> Index Only Scan using my_incredible_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Only Scan on our_amazing_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ IndexOnlyScan(t1)
+ IndexOnlyScan(t2)
+ IndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Only Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Only Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ BitmapScan(t2 your_bitmap_index)
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Bitmap Heap Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on my_table
+ Recheck Cond: ((a = our_table.a) AND (a < 42))
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Hash
+ -> Bitmap Heap Scan on your_table
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(21 rows)
+
+/*+
+ BitmapScan(t1)
+ BitmapScan(t2)
+ BitmapScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Bitmap Heap Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on my_table
+ Recheck Cond: ((a = our_table.a) AND (a < 42))
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Hash
+ -> Bitmap Heap Scan on your_table
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(21 rows)
+
+--------------------------------------------------------------------
+--
+-- 2. [SCAN] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+/*+
+ SeqScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ SeqScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Seq Scan on your_table (cost=0.00..431.00 rows=1 width=4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ SeqScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Dynamic Seq Scan on our_table (cost=0.00..431.00 rows=1 width=4)
+ Number of partitions to scan: 4 (out of 4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(5 rows)
+
+/*+
+ IndexScan(t1 my_incredible_index)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Index Scan using my_incredible_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ IndexScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+--/*+
+-- IndexScan(t2 your_amazing_index)
+-- */
+--EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+--/*+
+-- IndexScan(t2)
+-- */
+--EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+/*+
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+----------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Dynamic Index Scan on our_amazing_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(5 rows)
+
+/*+
+ IndexScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+----------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Dynamic Index Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(5 rows)
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Index Only Scan using my_incredible_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ IndexOnlyScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Index Only Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ IndexOnlyScan(t2 your_amazing_index)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
+ -> Index Only Scan using your_amazing_index on your_table (cost=0.00..6.01 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ IndexOnlyScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
+ -> Index Only Scan using your_awesome_index on your_table (cost=0.00..6.01 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Dynamic Index Only Scan on our_amazing_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(5 rows)
+
+/*+
+ IndexOnlyScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Dynamic Index Only Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(5 rows)
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
+ -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(6 rows)
+
+/*+
+ BitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
+ -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(6 rows)
+
+/*+
+ BitmapScan(t2 your_bitmap_index)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
+ -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(6 rows)
+
+/*+
+ BitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
+ -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(6 rows)
+
+/*+
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
+ -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(8 rows)
+
+/*+
+ BitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
+ -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(8 rows)
+
+--------------------------------------------------------------------
+--
+-- 3. [JOIN] No scan type
+--
+--------------------------------------------------------------------
+/*+
+ NoSeqScan(t1)
+ NoSeqScan(t2)
+ NoSeqScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ NoIndexScan(t1)
+ NoIndexScan(t2)
+ NoIndexScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Only Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Only Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ NoIndexOnlyScan(t1)
+ NoIndexOnlyScan(t2)
+ NoIndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Index Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ -> Index Scan using my_awesome_index on my_table
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Hash
+ -> Bitmap Heap Scan on your_table
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(16 rows)
+
+/*+
+ NoBitmapScan(t1)
+ NoBitmapScan(t2)
+ NoBitmapScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+ QUERY PLAN
+--------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+--------------------------------------------------------------------
+--
+-- 4. [SCAN] No scan type
+--
+-- Note that pg_hint_plan does not support multiple No.*Scan hints, so the
+-- parser will generate warnings indicating conflicting hints.
+--
+--------------------------------------------------------------------
+--
+-- Make SeqScan is only valid plan
+--
+/*+
+ NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Seq Scan on your_table (cost=0.00..431.00 rows=1 width=4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Dynamic Seq Scan on our_table (cost=0.00..431.00 rows=1 width=4)
+ Number of partitions to scan: 4 (out of 4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(5 rows)
+
+--
+-- Make IndexScan is only valid plan
+--
+/*+
+ NoSeqScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+---------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ NoSeqScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because no plan has been computed for required properties in GPORCA
+ QUERY PLAN
+----------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..775.42 rows=28700 width=4)
+ -> Seq Scan on your_table t2 (cost=0.00..392.75 rows=9567 width=4)
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+/*+
+ NoSeqScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+----------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Dynamic Index Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(5 rows)
+
+--
+-- Make IndexOnlyScan is only valid plan
+--
+/*+
+ NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoBitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
+ NoBitmapScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+--------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Index Only Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoBitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
+ NoBitmapScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.01 rows=1 width=4)
+ -> Index Only Scan using your_awesome_index on your_table (cost=0.00..6.01 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoBitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
+ NoBitmapScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Dynamic Index Only Scan on our_awesome_index on our_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(5 rows)
+
+--
+-- Make BitmapScan is only valid plan
+--
+/*+
+ NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
+ -> Bitmap Heap Scan on my_table (cost=0.00..391.30 rows=1 width=4)
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(6 rows)
+
+/*+
+ NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+--------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
+ -> Bitmap Heap Scan on your_table (cost=0.00..391.30 rows=1 width=4)
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(6 rows)
+
+/*+
+ NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+---------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..387.97 rows=1 width=4)
+ -> Dynamic Bitmap Heap Scan on our_table (cost=0.00..387.97 rows=1 width=4)
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index (cost=0.00..0.00 rows=0 width=0)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(8 rows)
+
+--------------------------------------------------------------------
+--
+-- 5. [VIEWS] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+CREATE VIEW everybody_view AS SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+/*+
+ SeqScan(t1)
+ SeqScan(t2)
+ SeqScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+ QUERY PLAN
+----------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Hash Join
+ Hash Cond: (my_table.a = our_table.a)
+ -> Seq Scan on my_table
+ Filter: (a < 42)
+ -> Hash
+ -> Dynamic Seq Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Filter: (a < 42)
+ -> Hash
+ -> Seq Scan on your_table
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(15 rows)
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1 my_incredible_index)
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+ QUERY PLAN
+--------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Scan using my_incredible_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Scan on our_amazing_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1)
+ IndexScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+ QUERY PLAN
+--------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ IndexOnlyScan(t2 your_amazing_index)
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_amazing_index on your_table
+ Index Cond: (a < 42)
+ -> Index Only Scan using my_incredible_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Only Scan on our_amazing_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ IndexOnlyScan(t1)
+ IndexOnlyScan(t2)
+ IndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (your_table.a = our_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Index Only Scan using your_awesome_index on your_table
+ Index Cond: (a < 42)
+ -> Index Only Scan using my_awesome_index on my_table
+ Index Cond: ((a = your_table.a) AND (a < 42))
+ -> Hash
+ -> Dynamic Index Only Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ Optimizer: GPORCA
+(14 rows)
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ BitmapScan(t2 your_bitmap_index)
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Bitmap Heap Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on my_table
+ Recheck Cond: ((a = our_table.a) AND (a < 42))
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Hash
+ -> Bitmap Heap Scan on your_table
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(21 rows)
+
+/*+
+ BitmapScan(t1)
+ BitmapScan(t2)
+ BitmapScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Bitmap Heap Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on my_table
+ Recheck Cond: ((a = our_table.a) AND (a < 42))
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Hash
+ -> Bitmap Heap Scan on your_table
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(21 rows)
+
+--------------------------------------------------------------------
+--
+-- 6. [CTE] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+/*+
+ SeqScan(t1)
+ SeqScan(t2)
+ SeqScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+ QUERY PLAN
+----------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Hash Join
+ Hash Cond: (my_table.a = our_table.a)
+ -> Seq Scan on my_table
+ Filter: (a < 42)
+ -> Hash
+ -> Dynamic Seq Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Filter: (a < 42)
+ -> Hash
+ -> Seq Scan on your_table
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(15 rows)
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1 my_incredible_index)
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Nested Loop
+ Join Filter: true
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Index Scan on our_amazing_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ -> Index Scan using my_incredible_index on my_table
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Index Only Scan using your_incredible_index on your_table
+ Index Cond: ((a = my_table.a) AND (a < 42))
+ Optimizer: GPORCA
+(13 rows)
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1)
+ IndexScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Nested Loop
+ Join Filter: true
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Index Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ -> Index Scan using my_awesome_index on my_table
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Index Only Scan using your_incredible_index on your_table
+ Index Cond: ((a = my_table.a) AND (a < 42))
+ Optimizer: GPORCA
+(13 rows)
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ IndexOnlyScan(t2 your_amazing_index)
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Nested Loop
+ Join Filter: true
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Index Only Scan on our_amazing_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ -> Index Only Scan using my_incredible_index on my_table
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Index Only Scan using your_amazing_index on your_table
+ Index Cond: ((a = my_table.a) AND (a < 42))
+ Optimizer: GPORCA
+(13 rows)
+
+/*+
+ IndexOnlyScan(t1)
+ IndexOnlyScan(t2)
+ IndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+ QUERY PLAN
+-----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Nested Loop
+ Join Filter: true
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Index Only Scan on our_awesome_index on our_table
+ Index Cond: (a < 42)
+ Number of partitions to scan: 4 (out of 4)
+ -> Index Only Scan using my_awesome_index on my_table
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Index Only Scan using your_incredible_index on your_table
+ Index Cond: ((a = my_table.a) AND (a < 42))
+ Optimizer: GPORCA
+(13 rows)
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ BitmapScan(t2 your_bitmap_index)
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Bitmap Heap Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on my_table
+ Recheck Cond: ((a = our_table.a) AND (a < 42))
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Hash
+ -> Bitmap Heap Scan on your_table
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(21 rows)
+
+/*+
+ BitmapScan(t1)
+ BitmapScan(t2)
+ BitmapScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: (my_table.a = your_table.a)
+ -> Nested Loop
+ Join Filter: true
+ -> Dynamic Bitmap Heap Scan on our_table
+ Number of partitions to scan: 4 (out of 4)
+ Recheck Cond: (a < 42)
+ Filter: (a < 42)
+ -> Dynamic Bitmap Index Scan on our_bitmap_index
+ Index Cond: (a < 42)
+ -> Bitmap Heap Scan on my_table
+ Recheck Cond: ((a = our_table.a) AND (a < 42))
+ -> Bitmap Index Scan on my_bitmap_index
+ Index Cond: ((a = our_table.a) AND (a < 42))
+ -> Hash
+ -> Bitmap Heap Scan on your_table
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on your_bitmap_index
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(21 rows)
+
+--------------------------------------------------------------------
+--
+-- 7. Unsupported hints
+--
+--------------------------------------------------------------------
+/*+
+ TidScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Operator Unsupported plan hint: TidScan not supported
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
+ -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+/*+
+ NoTidScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Operator Unsupported plan hint: NoTidScan not supported
+ QUERY PLAN
+-----------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=225.64..761.89 rows=28700 width=4)
+ -> Bitmap Heap Scan on my_table t1 (cost=225.64..379.23 rows=9567 width=4)
+ Recheck Cond: (a < 42)
+ -> Bitmap Index Scan on my_bitmap_index (cost=0.00..223.25 rows=9567 width=0)
+ Index Cond: (a < 42)
+ Optimizer: Postgres-based planner
+(6 rows)
+
+/*+
+ IndexScanRegexp(t1 '*awesome*')
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Operator Unsupported plan hint: IndexScanRegexp not supported
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
+ -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+/*+
+ IndexOnlyScanRegexp(t1 '*awesome*')
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Operator Unsupported plan hint: IndexOnlyScanRegexp not supported
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
+ -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+/*+
+ BitmapScanRegexp(t1 '*awesome*')
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Operator Unsupported plan hint: BitmapScanRegexp not supported
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=10000000000.00..10000000775.42 rows=28700 width=4)
+ -> Seq Scan on my_table t1 (cost=10000000000.00..10000000392.75 rows=9567 width=4)
+ Filter: (a < 42)
+ Optimizer: Postgres-based planner
+(4 rows)
+
+--------------------------------------------------------------------
+--
+-- 8. Miscellaneous cases
+--
+--------------------------------------------------------------------
+-- Missing hint relation name argument
+/*+
+ SeqScan()
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "
+ "
+DETAIL: SeqScan hint requires a relation.
+INFO: pg_hint_plan: hint syntax error at or near "
+ "
+DETAIL: SeqScan hint requires a relation.
+ QUERY PLAN
+---------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..6.00 rows=1 width=4)
+ -> Index Scan using my_awesome_index on my_table (cost=0.00..6.00 rows=1 width=4)
+ Index Cond: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+-- Mixing NoIndexScan and SeqScan hints
+/*+
+ SeqScan(t1) NoIndexScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t1) NoIndexScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t1) NoIndexScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
+/*+
+ NoIndexScan(t1) SeqScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1) SeqScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+INFO: pg_hint_plan: hint syntax error at or near "NoIndexScan(t1) SeqScan(t1)
+ "
+DETAIL: Conflict scan method hint.
+ QUERY PLAN
+------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ -> Seq Scan on my_table (cost=0.00..431.00 rows=1 width=4)
+ Filter: (a < 42)
+ Optimizer: GPORCA
+(4 rows)
+
diff --git a/src/test/regress/sql/planhints.sql b/src/test/regress/sql/planhints.sql
new file mode 100644
index 0000000000..5fadee39c2
--- /dev/null
+++ b/src/test/regress/sql/planhints.sql
@@ -0,0 +1,546 @@
+-- Test Optimizer Plan Hints Feature
+--
+-- Purpose: Test that plan hints may be used to coerce the plan shape generated
+-- by the optimizer.
+
+LOAD 'pg_hint_plan';
+
+DROP SCHEMA IF EXISTS planhints CASCADE;
+
+CREATE SCHEMA planhints;
+SET search_path=planhints;
+SET optimizer_trace_fallback=on;
+
+-- Setup tables
+CREATE TABLE my_table(a int, b int);
+CREATE INDEX my_awesome_index ON my_table(a);
+CREATE INDEX my_amazing_index ON my_table(a);
+CREATE INDEX my_incredible_index ON my_table(a);
+CREATE INDEX my_bitmap_index ON my_table USING bitmap (a);
+
+CREATE TABLE your_table(a int, b int) WITH (appendonly=true);
+CREATE INDEX your_awesome_index ON your_table(a);
+CREATE INDEX your_amazing_index ON your_table(a);
+CREATE INDEX your_incredible_index ON your_table(a);
+CREATE INDEX your_bitmap_index ON your_table USING bitmap (a);
+
+CREATE TABLE our_table(a int, b int) PARTITION BY RANGE (a) (PARTITION p1 START(0) END(10) EVERY(3));
+CREATE INDEX our_awesome_index ON our_table(a);
+CREATE INDEX our_amazing_index ON our_table(a);
+CREATE INDEX our_incredible_index ON our_table(a);
+CREATE INDEX our_bitmap_index ON our_table USING bitmap (a);
+
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+--------------------------------------------------------------------
+--
+-- 1. [JOIN] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+
+/*+
+ SeqScan(t1)
+ SeqScan(t2)
+ SeqScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan
+/*+
+ IndexScan(t1 my_incredible_index)
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1)
+ IndexScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ IndexOnlyScan(t2 your_amazing_index)
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ IndexOnlyScan(t1)
+ IndexOnlyScan(t2)
+ IndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ BitmapScan(t2 your_bitmap_index)
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ BitmapScan(t1)
+ BitmapScan(t2)
+ BitmapScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+
+--------------------------------------------------------------------
+--
+-- 2. [SCAN] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+
+/*+
+ SeqScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ SeqScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ SeqScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+/*+
+ IndexScan(t1 my_incredible_index)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ IndexScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+--/*+
+-- IndexScan(t2 your_amazing_index)
+-- */
+--EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+--/*+
+-- IndexScan(t2)
+-- */
+--EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+/*+
+ IndexScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ IndexOnlyScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ IndexOnlyScan(t2 your_amazing_index)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ IndexOnlyScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+/*+
+ IndexOnlyScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ BitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ BitmapScan(t2 your_bitmap_index)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ BitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+/*+
+ BitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+
+--------------------------------------------------------------------
+--
+-- 3. [JOIN] No scan type
+--
+--------------------------------------------------------------------
+
+/*+
+ NoSeqScan(t1)
+ NoSeqScan(t2)
+ NoSeqScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ NoIndexScan(t1)
+ NoIndexScan(t2)
+ NoIndexScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ NoIndexOnlyScan(t1)
+ NoIndexOnlyScan(t2)
+ NoIndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ NoBitmapScan(t1)
+ NoBitmapScan(t2)
+ NoBitmapScan(t3)
+ */
+EXPLAIN (costs off) SELECT t1.a, t2.a, t3.a FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+
+--------------------------------------------------------------------
+--
+-- 4. [SCAN] No scan type
+--
+-- Note that pg_hint_plan does not support multiple No.*Scan hints, so the
+-- parser will generate warnings indicating conflicting hints.
+--
+--------------------------------------------------------------------
+
+--
+-- Make SeqScan is only valid plan
+--
+/*+
+ NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+--
+-- Make IndexScan is only valid plan
+--
+/*+
+ NoSeqScan(t1)
+ NoIndexOnlyScan(t1)
+ NoBitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ NoSeqScan(t2)
+ NoIndexOnlyScan(t2)
+ NoBitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ NoSeqScan(t3)
+ NoIndexOnlyScan(t3)
+ NoBitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+--
+-- Make IndexOnlyScan is only valid plan
+--
+/*+
+ NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoBitmapScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoBitmapScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoBitmapScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+--
+-- Make BitmapScan is only valid plan
+--
+/*+
+ NoSeqScan(t1)
+ NoIndexScan(t1)
+ NoIndexOnlyScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ NoSeqScan(t2)
+ NoIndexScan(t2)
+ NoIndexOnlyScan(t2)
+ */
+EXPLAIN SELECT t2.a FROM your_table AS t2 WHERE t2.a<42;
+
+/*+
+ NoSeqScan(t3)
+ NoIndexScan(t3)
+ NoIndexOnlyScan(t3)
+ */
+EXPLAIN SELECT t3.a FROM our_table AS t3 WHERE t3.a<42;
+
+--------------------------------------------------------------------
+--
+-- 5. [VIEWS] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+
+CREATE VIEW everybody_view AS SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a WHERE t1.a<42;
+
+/*+
+ SeqScan(t1)
+ SeqScan(t2)
+ SeqScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1 my_incredible_index)
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1)
+ IndexScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ IndexOnlyScan(t2 your_amazing_index)
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+
+/*+
+ IndexOnlyScan(t1)
+ IndexOnlyScan(t2)
+ IndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ BitmapScan(t2 your_bitmap_index)
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+
+/*+
+ BitmapScan(t1)
+ BitmapScan(t2)
+ BitmapScan(t3)
+ */
+EXPLAIN (costs off) SELECT * FROM everybody_view;
+
+--------------------------------------------------------------------
+--
+-- 6. [CTE] Specific explicit scan type and implicit/explicit index
+--
+--------------------------------------------------------------------
+
+/*+
+ SeqScan(t1)
+ SeqScan(t2)
+ SeqScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1 my_incredible_index)
+ IndexScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+
+-- NB: IndexScan on AO table is invalid because AO tables do not support index
+-- scan (e.g. t2)
+/*+
+ IndexScan(t1)
+ IndexScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+
+/*+
+ IndexOnlyScan(t1 my_incredible_index)
+ IndexOnlyScan(t2 your_amazing_index)
+ IndexOnlyScan(t3 our_amazing_index)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+
+/*+
+ IndexOnlyScan(t1)
+ IndexOnlyScan(t2)
+ IndexOnlyScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+
+/*+
+ BitmapScan(t1 my_bitmap_index)
+ BitmapScan(t2 your_bitmap_index)
+ BitmapScan(t3 our_bitmap_index)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+
+/*+
+ BitmapScan(t1)
+ BitmapScan(t2)
+ BitmapScan(t3)
+ */
+EXPLAIN (costs off) WITH cte AS
+(
+ SELECT t1.a AS a1, t2.a AS a2, t3.a AS a3 FROM my_table AS t1 JOIN your_table AS t2 ON t1.a=t2.a JOIN our_table AS t3 ON t3.a=t2.a
+)
+SELECT a1, a2, a3 FROM cte WHERE a1<42;
+
+
+--------------------------------------------------------------------
+--
+-- 7. Unsupported hints
+--
+--------------------------------------------------------------------
+
+/*+
+ TidScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ NoTidScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ IndexScanRegexp(t1 '*awesome*')
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ IndexOnlyScanRegexp(t1 '*awesome*')
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+/*+
+ BitmapScanRegexp(t1 '*awesome*')
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+
+--------------------------------------------------------------------
+--
+-- 8. Miscellaneous cases
+--
+--------------------------------------------------------------------
+
+-- Missing hint relation name argument
+/*+
+ SeqScan()
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+
+-- Mixing NoIndexScan and SeqScan hints
+/*+
+ SeqScan(t1) NoIndexScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
+/*+
+ NoIndexScan(t1) SeqScan(t1)
+ */
+EXPLAIN SELECT t1.a FROM my_table AS t1 WHERE t1.a<42;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 22/30: Fix for finding child output columns when parent is union while join pruning (#16960)
Posted by ma...@apache.org.
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 50ad35a453f648fac5cf8e22277c81cd7d7af9cb
Author: Dev Swaroop Chattopadhyay <10...@users.noreply.github.com>
AuthorDate: Fri Feb 2 23:49:12 2024 +0530
Fix for finding child output columns when parent is union while join pruning (#16960)
Fix issue #16932
## Terminology used:
`Derived Output columns:` Output columns defined by each operator
`Output Columns:` The intersection of the operator's derived output columns and
the operator's parent's combined output pred columns. If the operator is the
root operator, its output columns would be the intersection of the operator's
derived output columns and the query's output columns.
`Combined Output Pred Columns:` A set containing operator's output columns and
its predicate's (if present) derived output columns
## Root Cause Analysis
-------------------------
Consider the below tree
```
+--A(Logical)
|--B (Logical)
| |----C (Logical)
| |----D (Logical)
| +----E (Scalar)
|
+--F (Scalar)
```
In order to perform left join pruning in ORCA, one of the step is that each
operator(Logical) determines two sets. One set containing output columns of the
operator and second set containing combined output pred columns: For e.g. in
the above tree, operator A will create two sets. One set containing output
columns of A (let's call this set S1) and second set containing combined output
pred columns (let's call this set S2). In order to determine those two sets the
below algorithm is employed (Suppose we are determining for operator A)
1.) The operator A will find it's derived output columns and will take a
intersection with the query's output. The common values will be inserted into
set S1 and S2. The set S1 now contains the output columns of operator A.
2.)If a scalar operator is present for operator A then the derived output
columns of the scalar operator are also inserted into the set S2 (In this case
operator F's derived output columns)
3.) Now the set S2 will contain combined output pred columns for operator A.
4.) This set S2 is passed to the next function call in which the output columns
of operator B will be determined.
Now consider the below query:
**Setup:**
```
create table t1(a int primary key, b int) ;
create table t2(a int primary key, b int) ;
```
**Query:**
```
explain select t2.b from t1 left join t2 on t1.a = t2.a union all select t2.b
from t1 left join t2 on t1.a = t2.a;
```
**Algebrized tree:**
```
+--CLogicalUnionAll Output: ("b" (10)), Input: [("b" (10)), ("b" (28))]
|--CLogicalLeftOuterJoin
| |--CLogicalGet "t1" ("t1"), Columns: ["a" (0), "b" (1)]
| |--CLogicalGet "t2" ("t2"), Columns: ["a" (9), "b" (10)]
| +--CScalarCmp (=)
| |--CScalarIdent "a" (0)
| +--CScalarIdent "a" (9)
+--CLogicalLeftOuterJoin
|--CLogicalGet "t1" ("t1"), Columns: ["a" (18), "b" (19)]
|--CLogicalGet "t2" ("t2"), Columns: ["a" (27), "b" (28)]
+--CScalarCmp (=)
|--CScalarIdent "a" (18)
+--CScalarIdent "a" (27)
```
Based on the above algorithm mentioned
The derived output columns of CLogicalSetOp
(CLogicalUnion/UnionAll/Intersect/IntersectAll/Except/ExceptAll) are from its
outer child. Based on the algorithm mentioned above, CLogicalUnionAll will
create two sets. One set containing output columns of itself and second set
containing combined output pred columns . The first set will contain b(10) and
the second set will also contain b(10). This second set will be passed to the
outer and inner CLogicalLeftOuterJoin operator for determining there output
columns. The outer CLogicalLeftOuterJoin will find its derived output columns
and will intersect it with the set passed by CLogicalUnionAll containing b(10).
After intersection we will get b(10) as the output column for outer
CLogicalLeftOuterJoin. Similarly the inner CLogicalLeftOuterJoin will find its
derived output columns and will intersect it with the set passed by
CLogicalUnionAll containing b(10). But here the intersection will lead to a
empty output column set for inner CLogicalLeftOuterJoin. Now for pruning a left
join in a query, one of the condition that ORCA checks is that all output
columns of CLogicalLeftOuterJoin should only belong from the outer relation.
The method performing this check doesn't handle the case when the output
columns set is empty. Due to this all the checks pass in that method and ORCA
proceeds to prune the Join. So basically the issue is that ORCA is not able to
properly determine the output columns for the child operators when the parent
is CLogicalSetOp which is leading to unwanted pruning of joins. A similar issue
was fixed in PR #16690 which ensured that the combined output pred columns of
CLogicalSetOp is not empty because an empty set was leading to unwanted pruning
of left join. But that fix was not complete. It was incorrectly determining
combined output pred columns of CLogicalSetOp which lead to #16932.
## Fix
--------
Updating the logic for determining the combined output pred columns of
CLogicalSetOp. Since in the case of CLogicalSetOp, the output columns are from
the outer child, the inner child will always have empty output columns which is
not completely correct. So we need to also include the inner child columns in
the combined output pred columns for CLogicalSetOP.
---
.abi-check/7.1.0/postgres.symbols.ignore | 1 +
.abi-check/7.1.0/postgres.types.ignore | 2 +
.../src/operators/CLeftJoinPruningPreprocessor.cpp | 73 ++-
src/test/regress/expected/join_gp.out | 473 +++++++++++++++++-
src/test/regress/expected/join_gp_optimizer.out | 537 ++++++++++++++++++++-
src/test/regress/sql/join_gp.sql | 166 ++++++-
6 files changed, 1195 insertions(+), 57 deletions(-)
diff --git a/.abi-check/7.1.0/postgres.symbols.ignore b/.abi-check/7.1.0/postgres.symbols.ignore
new file mode 100644
index 0000000000..848dbf2841
--- /dev/null
+++ b/.abi-check/7.1.0/postgres.symbols.ignore
@@ -0,0 +1 @@
+pgarch_start
diff --git a/.abi-check/7.1.0/postgres.types.ignore b/.abi-check/7.1.0/postgres.types.ignore
new file mode 100644
index 0000000000..c4ed0044a9
--- /dev/null
+++ b/.abi-check/7.1.0/postgres.types.ignore
@@ -0,0 +1,2 @@
+enum PMSignalReason
+enum AuxProcType
diff --git a/src/backend/gporca/libgpopt/src/operators/CLeftJoinPruningPreprocessor.cpp b/src/backend/gporca/libgpopt/src/operators/CLeftJoinPruningPreprocessor.cpp
index 8668b0f833..4d48c66c66 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLeftJoinPruningPreprocessor.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLeftJoinPruningPreprocessor.cpp
@@ -12,6 +12,7 @@
#include "gpopt/operators/CLeftJoinPruningPreprocessor.h"
#include "gpopt/base/CColRefSetIter.h"
+#include "gpopt/operators/CLogicalSetOp.h"
#include "gpopt/operators/CPredicateUtils.h"
#include "gpopt/operators/CScalarSubquery.h"
#include "gpopt/operators/CScalarSubqueryQuantified.h"
@@ -95,6 +96,13 @@ CLeftJoinPruningPreprocessor::CheckJoinPruningCondOnInnerRel(
GPOS_ASSERT(nullptr != pexprNew);
GPOS_ASSERT(nullptr != output_columns);
+ // if the output_columns is empty for a CLogicalLeftOuterJoin, then don't
+ // prune the join
+ if (0 == output_columns->Size())
+ {
+ return false;
+ }
+
CExpression *inner_rel = (*pexprNew)[1];
const CColRefSet *derive_output_columns_inner_rel =
inner_rel->DeriveOutputColumns();
@@ -397,13 +405,13 @@ CLeftJoinPruningPreprocessor::PexprJoinPruningScalarSubquery(
void
CLeftJoinPruningPreprocessor::ComputeOutputColumns(
const CExpression *pexpr, const CColRefSet *derived_output_columns,
- CColRefSet *output_columns, CColRefSet *childs_output_columns,
+ CColRefSet *output_columns, CColRefSet *combined_output_pred_columns,
const CColRefSet *pcrsOutput)
{
GPOS_ASSERT(nullptr != pexpr);
GPOS_ASSERT(nullptr != derived_output_columns);
GPOS_ASSERT(nullptr != output_columns);
- GPOS_ASSERT(nullptr != childs_output_columns);
+ GPOS_ASSERT(nullptr != combined_output_pred_columns);
// Computing output columns of the parent
CColRefSetIter iter_derived_output_columns(*derived_output_columns);
@@ -417,7 +425,48 @@ CLeftJoinPruningPreprocessor::ComputeOutputColumns(
}
// Computing output columns of the child tree
- childs_output_columns->Include(output_columns);
+ combined_output_pred_columns->Include(output_columns);
+
+ // Consider the below algebrized tree
+ // CLogicalUnionAll Output: ("b" (10)), Input: [("b" (10)), ("b" (28))]
+ // |--CLogicalLeftOuterJoin
+ // | |--CLogicalGet "t1" ("t1"), Columns: ["a" (0), "b" (1)]
+ // | |--CLogicalGet "t2" ("t2"), Columns: ["a" (9), "b" (10)]
+ // | +--CScalarCmp (=)
+ // | |--CScalarIdent "a" (0)
+ // | +--CScalarIdent "a" (9)
+ // +--CLogicalLeftOuterJoin
+ // |--CLogicalGet "t1" ("t1"), Columns: ["a" (18), "b" (19)]
+ // |--CLogicalGet "t2" ("t2"), Columns: ["a" (27), "b" (28)]
+ // +--CScalarCmp (=)
+ // |--CScalarIdent "a" (18)
+ // +--CScalarIdent "a" (27)
+ // In this case the output_columns of CLogicalUnionAll will only contain
+ // b(10). In the case of CLogicalUnion or CLogicalUnionAll , the output
+ // columns are from the outer child. Due to this the output_columns of inner
+ // CLogicalLeftOuterJoin will be empty. So join pruning will not be possible
+ // in such cases. The Input in CLogicalUnion/CLogicalUnionAll signifies the
+ // columns from the childs. So including those columns in the
+ // combined_output_pred_columns of CLogicalUnionAll to perform pruning of
+ // the inner child if possible. Similar is the case for
+ // Intersect/IntersectAll and Difference/DifferenceAll.
+
+ if (CUtils::FLogicalSetOp(pexpr->Pop()))
+ {
+ CLogicalSetOp *pop = CLogicalSetOp::PopConvert(pexpr->Pop());
+ // Starting from index 1, since the 0th input column array is the same
+ // as the output column array
+ for (ULONG i = 1; i < pop->PdrgpdrgpcrInput()->Size(); i++)
+ {
+ CColRefArray *pdrgpcrInput = (*pop->PdrgpdrgpcrInput())[i];
+ for (ULONG j = 0; j < pdrgpcrInput->Size(); j++)
+ {
+ combined_output_pred_columns->Include((*pdrgpcrInput)[j]);
+ }
+ }
+ }
+
+
ULONG arity = pexpr->Arity();
for (ULONG ul = 0; ul < arity; ul++)
{
@@ -426,7 +475,7 @@ CLeftJoinPruningPreprocessor::ComputeOutputColumns(
{
CColRefSet *derived_used_columns_scalar =
pexpr_child->DeriveUsedColumns();
- childs_output_columns->Include(derived_used_columns_scalar);
+ combined_output_pred_columns->Include(derived_used_columns_scalar);
}
}
}
@@ -434,7 +483,7 @@ CLeftJoinPruningPreprocessor::ComputeOutputColumns(
CExpression *
CLeftJoinPruningPreprocessor::JoinPruningTreeTraversal(
CMemoryPool *mp, const CExpression *pexpr, CExpressionArray *pdrgpexpr,
- const CColRefSet *childs_output_columns)
+ const CColRefSet *combined_output_pred_columns)
{
GPOS_ASSERT(nullptr != pexpr);
GPOS_ASSERT(nullptr != pdrgpexpr);
@@ -446,7 +495,7 @@ CLeftJoinPruningPreprocessor::JoinPruningTreeTraversal(
if (pexpr_child->Pop()->FLogical())
{
CExpression *pexprLogicalJoinPrunedChild =
- PexprPreprocess(mp, pexpr_child, childs_output_columns);
+ PexprPreprocess(mp, pexpr_child, combined_output_pred_columns);
pdrgpexpr->Append(pexprLogicalJoinPrunedChild);
}
else if (pexpr_child->DeriveHasSubquery())
@@ -543,20 +592,20 @@ CLeftJoinPruningPreprocessor::PexprPreprocess(CMemoryPool *mp,
CColRefSet *output_columns = GPOS_NEW(mp) CColRefSet(mp);
// Columns which are output by the child tree of the current expression
- CColRefSet *childs_output_columns = GPOS_NEW(mp) CColRefSet(mp);
+ CColRefSet *combined_output_pred_columns = GPOS_NEW(mp) CColRefSet(mp);
// Computing output columns of the current expression (output_columns)
- // and the output columns of child tree (childs_output_columns)
+ // and the output columns of child tree (combined_output_pred_columns)
ComputeOutputColumns(pexpr, derived_output_columns, output_columns,
- childs_output_columns, pcrsOutput);
+ combined_output_pred_columns, pcrsOutput);
// Array to hold the child expressions
CExpressionArray *pdrgpexpr = GPOS_NEW(mp) CExpressionArray(mp);
// Traversing the tree
- CExpression *pexprNew =
- JoinPruningTreeTraversal(mp, pexpr, pdrgpexpr, childs_output_columns);
- childs_output_columns->Release();
+ CExpression *pexprNew = JoinPruningTreeTraversal(
+ mp, pexpr, pdrgpexpr, combined_output_pred_columns);
+ combined_output_pred_columns->Release();
// Checking if the join is a left join then pruning the join if possible
if (CPredicateUtils::FLeftOuterJoin(pexprNew))
diff --git a/src/test/regress/expected/join_gp.out b/src/test/regress/expected/join_gp.out
index d03be4be93..52adf1eaa0 100644
--- a/src/test/regress/expected/join_gp.out
+++ b/src/test/regress/expected/join_gp.out
@@ -2081,32 +2081,467 @@ drop table barJoinPruning;
--
-- Cases where join under union
--
-create table foo(a int primary key, b int);
-create table bar(a int primary key, b int);
-explain select foo.a, bar.b from foo left join bar on foo.a = bar.a
- union
- select foo.a, bar.b from foo join bar on foo.a = bar.a;
- QUERY PLAN
--------------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=5022.18..7892.18 rows=172200 width=8)
- -> HashAggregate (cost=5022.18..5596.18 rows=57400 width=8)
+create table foo(a int primary key, b int,c int);
+create table bar(a int primary key, b int,c int);
+insert into foo values (1,1,10),(2,1,10),(3,2,20),(4,2,30),(5,2,30),(6,NULL,NULL),(7,NULL,3);
+insert into bar values (1,1,10),(2,2,20),(3,NULL,NULL),(4,3,NULL),(5,1,10);
+analyze foo,bar;
+explain (costs off) select foo.a, bar.b from foo left join bar on foo.a = bar.a
+union select foo.a, bar.b from foo join bar on foo.a = bar.a;
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashAggregate
Group Key: foo.a, bar.b
- -> Redistribute Motion 3:3 (slice2; segments: 3) (cost=679.75..4735.18 rows=57400 width=8)
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
Hash Key: foo.a, bar.b
- -> Append (cost=679.75..3587.18 rows=57400 width=8)
- -> Hash Left Join (cost=679.75..1363.09 rows=28700 width=8)
+ -> Append
+ -> Hash Left Join
Hash Cond: (foo.a = bar.a)
- -> Seq Scan on foo (cost=0.00..321.00 rows=28700 width=4)
- -> Hash (cost=321.00..321.00 rows=28700 width=8)
- -> Seq Scan on bar (cost=0.00..321.00 rows=28700 width=8)
- -> Hash Join (cost=679.75..1363.09 rows=28700 width=8)
+ -> Seq Scan on foo
+ -> Hash
+ -> Seq Scan on bar
+ -> Hash Join
Hash Cond: (foo_1.a = bar_1.a)
- -> Seq Scan on foo foo_1 (cost=0.00..321.00 rows=28700 width=4)
- -> Hash (cost=321.00..321.00 rows=28700 width=8)
- -> Seq Scan on bar bar_1 (cost=0.00..321.00 rows=28700 width=8)
+ -> Seq Scan on foo foo_1
+ -> Hash
+ -> Seq Scan on bar bar_1
Optimizer: Postgres-based planner
(17 rows)
+-------------------------------------
+-- CASES WHERE JOIN WILL BE PRUNED --
+-------------------------------------
+--------------------------------------------------------------------------------
+-- join under UNION
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashAggregate
+ Group Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Append
+ -> Seq Scan on foo
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(9 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ |
+ 2 | 30
+ | 3
+ 2 | 20
+ 3 |
+ 1 | 10
+(6 rows)
+
+--------------------------------------------------------------------------------
+-- join under UNION ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(5 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 30
+ |
+ 1 | 10
+ 1 | 10
+ 1 | 10
+ 1 | 10
+ 2 | 20
+ 2 | 30
+ | 3
+ 2 | 20
+ |
+ 3 |
+(12 rows)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Intersect
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Seq Scan on bar
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo
+ Optimizer: Postgres-based planner
+(12 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ |
+ 1 | 10
+ 2 | 20
+(3 rows)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Intersect All
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Seq Scan on bar
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo
+ Optimizer: Postgres-based planner
+(12 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ |
+ 1 | 10
+ 1 | 10
+ 2 | 20
+(4 rows)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Except
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(12 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ | 3
+ 2 | 30
+(2 rows)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Except All
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(12 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ | 3
+ 2 | 30
+ 2 | 30
+(3 rows)
+
+------------------------------------------
+-- CASES WHERE JOIN WILL NOT BE PRUNED --
+------------------------------------------
+--------------------------------------------------------------------------------
+-- join under UNION
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashAggregate
+ Group Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Append
+ -> Seq Scan on foo
+ -> Hash Right Join
+ Hash Cond: (foo_1.a = bar.a)
+ -> Seq Scan on foo foo_1
+ -> Hash
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(13 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 10
+ |
+ 2 | 30
+ | 3
+ 3 | 30
+ 1 | 10
+ 1 | 30
+ 2 | 20
+ | 20
+(9 rows)
+
+--------------------------------------------------------------------------------
+-- join under UNION ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+--------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo
+ -> Hash Right Join
+ Hash Cond: (foo_1.a = bar.a)
+ -> Seq Scan on foo foo_1
+ -> Hash
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(9 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 1 | 10
+ 2 | 20
+ 2 | 30
+ | 3
+ 2 | 10
+ | 20
+ 3 | 30
+ 2 | 30
+ |
+ 1 | 30
+ 1 | 10
+ 1 | 10
+(12 rows)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Intersect
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Hash Right Join
+ Hash Cond: (foo.a = bar.a)
+ -> Seq Scan on foo
+ -> Hash
+ -> Seq Scan on bar
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo foo_1
+ Optimizer: Postgres-based planner
+(16 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 1 | 10
+(1 row)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Intersect All
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Hash Right Join
+ Hash Cond: (foo.a = bar.a)
+ -> Seq Scan on foo
+ -> Hash
+ -> Seq Scan on bar
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo foo_1
+ Optimizer: Postgres-based planner
+(16 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 1 | 10
+(1 row)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Except
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Hash Right Join
+ Hash Cond: (foo_1.a = bar.a)
+ -> Seq Scan on foo foo_1
+ -> Hash
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(16 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ | 3
+ |
+ 2 | 30
+ 2 | 20
+(4 rows)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashSetOp Except All
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: "*SELECT* 1".b, "*SELECT* 1".c
+ -> Subquery Scan on "*SELECT* 1"
+ -> Seq Scan on foo
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: "*SELECT* 2".b, "*SELECT* 2".c
+ -> Subquery Scan on "*SELECT* 2"
+ -> Hash Right Join
+ Hash Cond: (foo_1.a = bar.a)
+ -> Seq Scan on foo foo_1
+ -> Hash
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(16 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ | 3
+ |
+ 2 | 30
+ 2 | 30
+ 2 | 20
+ 1 | 10
+(6 rows)
+
drop table foo;
drop table bar;
-----------------------------------------------------------------
diff --git a/src/test/regress/expected/join_gp_optimizer.out b/src/test/regress/expected/join_gp_optimizer.out
index efc8f8af6c..2cd20791b4 100644
--- a/src/test/regress/expected/join_gp_optimizer.out
+++ b/src/test/regress/expected/join_gp_optimizer.out
@@ -2072,32 +2072,527 @@ drop table barJoinPruning;
--
-- Cases where join under union
--
-create table foo(a int primary key, b int);
-create table bar(a int primary key, b int);
-explain select foo.a, bar.b from foo left join bar on foo.a = bar.a
- union
- select foo.a, bar.b from foo join bar on foo.a = bar.a;
- QUERY PLAN
---------------------------------------------------------------------------------------------------------
- Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..874.00 rows=1 width=8)
- -> GroupAggregate (cost=0.00..874.00 rows=1 width=8)
+create table foo(a int primary key, b int,c int);
+create table bar(a int primary key, b int,c int);
+insert into foo values (1,1,10),(2,1,10),(3,2,20),(4,2,30),(5,2,30),(6,NULL,NULL),(7,NULL,3);
+insert into bar values (1,1,10),(2,2,20),(3,NULL,NULL),(4,3,NULL),(5,1,10);
+analyze foo,bar;
+explain (costs off) select foo.a, bar.b from foo left join bar on foo.a = bar.a
+union select foo.a, bar.b from foo join bar on foo.a = bar.a;
+ QUERY PLAN
+----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> GroupAggregate
Group Key: foo.a, bar.b
- -> Sort (cost=0.00..874.00 rows=1 width=8)
+ -> Sort
Sort Key: foo.a, bar.b
- -> Append (cost=0.00..874.00 rows=1 width=8)
- -> Nested Loop Left Join (cost=0.00..437.00 rows=1 width=8)
- Join Filter: true
- -> Seq Scan on foo (cost=0.00..431.00 rows=1 width=4)
- -> Index Scan using bar_pkey on bar (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a = foo.a)
- -> Nested Loop (cost=0.00..437.00 rows=1 width=8)
- Join Filter: true
- -> Seq Scan on foo foo_1 (cost=0.00..431.00 rows=1 width=4)
- -> Index Scan using bar_pkey on bar bar_1 (cost=0.00..6.00 rows=1 width=4)
- Index Cond: (a = foo_1.a)
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.a, bar.b
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Seq Scan on foo
+ -> Index Scan using bar_pkey on bar
+ Index Cond: (a = foo.a)
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: foo_1.a, bar_1.b
+ -> Nested Loop
+ Join Filter: true
+ -> Seq Scan on bar bar_1
+ -> Index Scan using foo_pkey on foo foo_1
+ Index Cond: (a = bar_1.a)
+ Optimizer: GPORCA
+(21 rows)
+
+-------------------------------------
+-- CASES WHERE JOIN WILL BE PRUNED --
+-------------------------------------
+--------------------------------------------------------------------------------
+-- join under UNION
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> GroupAggregate
+ Group Key: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, bar.c
+ -> Seq Scan on bar
+ Optimizer: GPORCA
+(13 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 30
+ | 3
+ |
+ 1 | 10
+ 2 | 20
+ 3 |
+(6 rows)
+
+--------------------------------------------------------------------------------
+-- join under UNION ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo
+ -> Seq Scan on bar
+ Optimizer: GPORCA
+(5 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 1 | 10
+ 1 | 10
+ 1 | 10
+ 2 | 20
+ 2 | 30
+ | 3
+ 2 | 20
+ |
+ 3 |
+ 2 | 30
+ |
+ 1 | 10
+(12 rows)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM bar.c)))
+ -> GroupAggregate
+ Group Key: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> GroupAggregate
+ Group Key: bar.b, bar.c
+ -> Sort
+ Sort Key: bar.b, bar.c
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, bar.c
+ -> Seq Scan on bar
+ Optimizer: GPORCA
+(19 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ |
+ 1 | 10
+ 2 | 20
+(3 rows)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Semi Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM bar.c)) AND (NOT ((row_number() OVER (?)) IS DISTINCT FROM (row_number() OVER (?)))))
+ -> WindowAgg
+ Partition By: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> WindowAgg
+ Partition By: bar.b, bar.c
+ -> Sort
+ Sort Key: bar.b, bar.c
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, bar.c
+ -> Seq Scan on bar
+ Optimizer: GPORCA
+(19 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ |
+ 1 | 10
+ 1 | 10
+ 2 | 20
+(4 rows)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> GroupAggregate
+ Group Key: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Hash Anti Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM bar.c)))
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, bar.c
+ -> Seq Scan on bar
+ Optimizer: GPORCA
+(15 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 30
+ | 3
+(2 rows)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Anti Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM bar.c)) AND (NOT ((row_number() OVER (?)) IS DISTINCT FROM (row_number() OVER (?)))))
+ -> WindowAgg
+ Partition By: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> WindowAgg
+ Partition By: bar.b, bar.c
+ -> Sort
+ Sort Key: bar.b, bar.c
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, bar.c
+ -> Seq Scan on bar
+ Optimizer: GPORCA
+(19 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 30
+ 2 | 30
+ | 3
+(3 rows)
+
+------------------------------------------
+-- CASES WHERE JOIN WILL NOT BE PRUNED --
+------------------------------------------
+--------------------------------------------------------------------------------
+-- join under UNION
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+----------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> GroupAggregate
+ Group Key: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Append
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, foo_1.c
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Seq Scan on bar
+ -> Index Scan using foo_pkey on foo foo_1
+ Index Cond: (a = bar.a)
Optimizer: GPORCA
(17 rows)
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 1 | 10
+ 1 | 30
+ 2 | 20
+ | 20
+ 2 | 10
+ 2 | 30
+ 3 | 30
+ | 3
+ |
+(9 rows)
+
+--------------------------------------------------------------------------------
+-- join under UNION ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+----------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Append
+ -> Seq Scan on foo
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Seq Scan on bar
+ -> Index Scan using foo_pkey on foo foo_1
+ Index Cond: (a = bar.a)
+ Optimizer: GPORCA
+(9 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 30
+ |
+ 1 | 30
+ 1 | 10
+ 2 | 20
+ 2 | 30
+ | 3
+ 2 | 10
+ | 20
+ 3 | 30
+ 1 | 10
+ 1 | 10
+(12 rows)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM foo_1.c)))
+ -> GroupAggregate
+ Group Key: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> GroupAggregate
+ Group Key: bar.b, foo_1.c
+ -> Sort
+ Sort Key: bar.b, foo_1.c
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, foo_1.c
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Seq Scan on bar
+ -> Index Scan using foo_pkey on foo foo_1
+ Index Cond: (a = bar.a)
+ Optimizer: GPORCA
+(23 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 1 | 10
+(1 row)
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Semi Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM foo_1.c)) AND (NOT ((row_number() OVER (?)) IS DISTINCT FROM (row_number() OVER (?)))))
+ -> WindowAgg
+ Partition By: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> WindowAgg
+ Partition By: bar.b, foo_1.c
+ -> Sort
+ Sort Key: bar.b, foo_1.c
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, foo_1.c
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Seq Scan on bar
+ -> Index Scan using foo_pkey on foo foo_1
+ Index Cond: (a = bar.a)
+ Optimizer: GPORCA
+(23 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 1 | 10
+(1 row)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> GroupAggregate
+ Group Key: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Hash Anti Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM foo_1.c)))
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, foo_1.c
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Seq Scan on bar
+ -> Index Scan using foo_pkey on foo foo_1
+ Index Cond: (a = bar.a)
+ Optimizer: GPORCA
+(19 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 20
+ 2 | 30
+ | 3
+ |
+(4 rows)
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Anti Join
+ Hash Cond: ((NOT (foo.b IS DISTINCT FROM bar.b)) AND (NOT (foo.c IS DISTINCT FROM foo_1.c)) AND (NOT ((row_number() OVER (?)) IS DISTINCT FROM (row_number() OVER (?)))))
+ -> WindowAgg
+ Partition By: foo.b, foo.c
+ -> Sort
+ Sort Key: foo.b, foo.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.b, foo.c
+ -> Seq Scan on foo
+ -> Hash
+ -> WindowAgg
+ Partition By: bar.b, foo_1.c
+ -> Sort
+ Sort Key: bar.b, foo_1.c
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Hash Key: bar.b, foo_1.c
+ -> Nested Loop Left Join
+ Join Filter: true
+ -> Seq Scan on bar
+ -> Index Scan using foo_pkey on foo foo_1
+ Index Cond: (a = bar.a)
+ Optimizer: GPORCA
+(23 rows)
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+ b | c
+---+----
+ 2 | 30
+ 2 | 30
+ | 3
+ |
+ 1 | 10
+ 2 | 20
+(6 rows)
+
drop table foo;
drop table bar;
-----------------------------------------------------------------
diff --git a/src/test/regress/sql/join_gp.sql b/src/test/regress/sql/join_gp.sql
index b2824cc9d8..3061391c99 100644
--- a/src/test/regress/sql/join_gp.sql
+++ b/src/test/regress/sql/join_gp.sql
@@ -860,11 +860,167 @@ drop table barJoinPruning;
--
-- Cases where join under union
--
-create table foo(a int primary key, b int);
-create table bar(a int primary key, b int);
-explain select foo.a, bar.b from foo left join bar on foo.a = bar.a
- union
- select foo.a, bar.b from foo join bar on foo.a = bar.a;
+create table foo(a int primary key, b int,c int);
+create table bar(a int primary key, b int,c int);
+insert into foo values (1,1,10),(2,1,10),(3,2,20),(4,2,30),(5,2,30),(6,NULL,NULL),(7,NULL,3);
+insert into bar values (1,1,10),(2,2,20),(3,NULL,NULL),(4,3,NULL),(5,1,10);
+analyze foo,bar;
+
+explain (costs off) select foo.a, bar.b from foo left join bar on foo.a = bar.a
+union select foo.a, bar.b from foo join bar on foo.a = bar.a;
+
+-------------------------------------
+-- CASES WHERE JOIN WILL BE PRUNED --
+-------------------------------------
+
+--------------------------------------------------------------------------------
+-- join under UNION
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under UNION ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT ALL
+-- For the below query the output columns of both the CLogicalLeftOuterJoin
+-- are from the outer relation, so we can prune both the joins
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,bar.c from bar left join foo on foo.a=bar.a;
+
+------------------------------------------
+-- CASES WHERE JOIN WILL NOT BE PRUNED --
+------------------------------------------
+
+--------------------------------------------------------------------------------
+-- join under UNION
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under UNION ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a union all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under INTERSECT ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a intersect all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+--------------------------------------------------------------------------------
+-- join under EXCEPT ALL
+-- For the below query since for the outer CLogicalLeftOuterJoin, all the output
+-- columns are from the outer relation, the outer join can be pruned but for the
+-- inner CLogicalLeftOuterJoin the output column contains columns from
+-- inner relation.So the inner join can't be pruned.
+--------------------------------------------------------------------------------
+explain (costs off) select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
+select foo.b,foo.c from foo left join bar on foo.a=bar.a except all
+select bar.b,foo.c from bar left join foo on foo.a=bar.a;
+
drop table foo;
drop table bar;
-----------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 15/30: Fill argtypes of eageragg (#16979)
Posted by ma...@apache.org.
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 87428023bf2cce40a6685e8a92e367ba80e46021
Author: chaotian <10...@users.noreply.github.com>
AuthorDate: Sun Jan 21 12:13:13 2024 +0800
Fill argtypes of eageragg (#16979)
In CXformEagerAgg rule, we should fill argtypes of PopAggFunc in CLogicalAgg,
which used for filling Aggref in final Plan.
authored-by: chaotian <ch...@vmware.com>
---
.../data/dxl/minidump/EagerAggEmptyInput.mdp | 6 +-
.../data/dxl/minidump/EagerAggExpression.mdp | 6 +-
.../dxl/minidump/EagerAggGroupColumnInJoin.mdp | 6 +-
.../gporca/data/dxl/minidump/EagerAggMax.mdp | 6 +-
.../dxl/minidump/EagerAggMaxWithNestedLoop.mdp | 6 +-
.../gporca/data/dxl/minidump/EagerAggMinMax.mdp | 12 ++--
.../gporca/data/dxl/minidump/EagerAggSubquery.mdp | 6 +-
.../data/dxl/minidump/EagerAggUnsupportedAgg.mdp | 18 +++---
.../libgpopt/include/gpopt/xforms/CXformEagerAgg.h | 4 +-
.../gporca/libgpopt/src/xforms/CXformEagerAgg.cpp | 13 +++--
src/test/regress/expected/gporca.out | 67 +++++++++++++++++++++
src/test/regress/expected/gporca_optimizer.out | 68 ++++++++++++++++++++++
src/test/regress/sql/gporca.sql | 23 ++++++++
13 files changed, 201 insertions(+), 40 deletions(-)
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp
index a94bd34305..c3bffafeae 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggEmptyInput.mdp
@@ -251,7 +251,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -348,7 +348,7 @@
<dxl:Ident ColId="11" ColName="g2" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="20" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="22" ColName="ColRef_0022" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -433,7 +433,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="22" Alias="ColRef_0022">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp
index 1bea6fe731..73c48e3605 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggExpression.mdp
@@ -3252,7 +3252,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:OpExpr OperatorName="%" OperatorMdid="0.530.1.0" OperatorType="0.23.1.0">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
@@ -3337,7 +3337,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="20" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="21" ColName="ColRef_0021" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3420,7 +3420,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="ColRef_0021">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:OpExpr OperatorName="%" OperatorMdid="0.530.1.0" OperatorType="0.23.1.0">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp
index 8efcd8ab77..ec938ea5a7 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggGroupColumnInJoin.mdp
@@ -248,7 +248,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -341,7 +341,7 @@
<dxl:Ident ColId="11" ColName="g2" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="20" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="21" ColName="ColRef_0021" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -417,7 +417,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="ColRef_0021">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp
index 3b28a8534d..2d89e10a5a 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggMax.mdp
@@ -250,7 +250,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -347,7 +347,7 @@
<dxl:Ident ColId="11" ColName="g2" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="20" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="22" ColName="ColRef_0022" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -432,7 +432,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="22" Alias="ColRef_0022">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp
index 055dc6915c..523ba9ae03 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggMaxWithNestedLoop.mdp
@@ -4186,7 +4186,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem Alias="max" ColId="31">
- <dxl:AggFunc AggDistinct="false" AggMdid="0.2116.1.0" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggDistinct="false" AggMdid="0.2116.1.0" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="13" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -4299,7 +4299,7 @@
<dxl:Ident ColId="1" ColName="g2" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="30" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="32" ColName="ColRef_0032" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -4384,7 +4384,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="32" Alias="ColRef_0032">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="12" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp
index 264687a59c..d641106a43 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggMinMax.mdp
@@ -3252,7 +3252,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3262,7 +3262,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="22" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3350,7 +3350,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="20" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="22" ColName="ColRef_0022" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3360,7 +3360,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="21" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="23" ColName="ColRef_0023" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3452,7 +3452,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="22" Alias="ColRef_0022">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3462,7 +3462,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="23" Alias="ColRef_0023">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp
index 6a69a122a3..a6227f0f98 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggSubquery.mdp
@@ -285,7 +285,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="31" Alias="sum">
- <dxl:AggFunc AggMdid="0.2108.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2108.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -390,7 +390,7 @@
<dxl:Ident ColId="11" ColName="g2" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="30" Alias="sum">
- <dxl:AggFunc AggMdid="0.2108.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2108.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="33" ColName="ColRef_0033" TypeMdid="0.20.1.0"/>
</dxl:ValuesList>
@@ -520,7 +520,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="33" Alias="ColRef_0033">
- <dxl:AggFunc AggMdid="0.2108.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2108.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
diff --git a/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp b/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp
index 1bf3c9b197..6b9e6c14ad 100644
--- a/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EagerAggUnsupportedAgg.mdp
@@ -3273,7 +3273,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3283,7 +3283,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="22" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="3" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3293,7 +3293,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="23" Alias="count2">
- <dxl:AggFunc AggMdid="0.32851.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.32851.1.0" AggDistinct="false" AggStage="Normal" AggKind="n" AggArgTypes="20">
<dxl:ValuesList ParamType="aggargs">
<dxl:FuncExpr FuncId="0.481.1.0" FuncRetSet="false" TypeMdid="0.20.1.0">
<dxl:OpExpr OperatorName="+" OperatorMdid="0.551.1.0" OperatorType="0.23.1.0">
@@ -3381,7 +3381,7 @@
<dxl:Ident ColId="1" ColName="g1" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="20" Alias="min">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="23" ColName="ColRef_0023" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3391,7 +3391,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="21" Alias="max">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="24" ColName="ColRef_0024" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3401,7 +3401,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="22" Alias="count2">
- <dxl:AggFunc AggMdid="0.32851.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.32851.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="20">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="25" ColName="ColRef_0025" TypeMdid="0.20.1.0"/>
</dxl:ValuesList>
@@ -3466,7 +3466,7 @@
</dxl:GroupingColumns>
<dxl:ProjList>
<dxl:ProjElem ColId="23" Alias="ColRef_0023">
- <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2132.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3476,7 +3476,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="24" Alias="ColRef_0024">
- <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.2116.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="23">
<dxl:ValuesList ParamType="aggargs">
<dxl:Ident ColId="2" ColName="s1" TypeMdid="0.23.1.0"/>
</dxl:ValuesList>
@@ -3486,7 +3486,7 @@
</dxl:AggFunc>
</dxl:ProjElem>
<dxl:ProjElem ColId="25" Alias="ColRef_0025">
- <dxl:AggFunc AggMdid="0.32851.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="">
+ <dxl:AggFunc AggMdid="0.32851.1.0" AggDistinct="false" AggStage="Partial" AggKind="n" AggArgTypes="20">
<dxl:ValuesList ParamType="aggargs">
<dxl:Cast TypeMdid="0.20.1.0" FuncId="0.481.1.0">
<dxl:OpExpr OperatorName="+" OperatorMdid="0.551.1.0" OperatorType="0.23.1.0">
diff --git a/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformEagerAgg.h b/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformEagerAgg.h
index 008b2d683d..d6a9f98113 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformEagerAgg.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/xforms/CXformEagerAgg.h
@@ -101,7 +101,7 @@ private:
CMemoryPool *mp, // memory pool
IMDId *agg_mdid, // original global aggregate function
CWStringConst *agg_name, CExpressionArray *agg_arg_array,
- BOOL is_distinct,
+ BOOL is_distinct, ULongPtrArray *arg_types,
CExpression **lower_proj_elem_expr // output project element of the new
// lower aggregate
);
@@ -111,7 +111,7 @@ private:
CMemoryPool *mp, // memory pool
IMDId *agg_mdid, // aggregate mdid to create
CWStringConst *agg_name, CColRef *lower_colref, CColRef *output_colref,
- BOOL is_distinct,
+ BOOL is_distinct, ULongPtrArray *arg_types,
CExpression **upper_proj_elem_expr // output project element of the new
// upper aggregate
);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformEagerAgg.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformEagerAgg.cpp
index f641e7478a..76fdd486f1 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformEagerAgg.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformEagerAgg.cpp
@@ -280,7 +280,7 @@ CXformEagerAgg::PopulateLowerUpperProjectList(
GPOS_NEW(mp)
CWStringConst(mp, orig_agg_func->PstrAggFunc()->GetBuffer()),
orig_agg_expr->PdrgPexpr(), orig_agg_func->IsDistinct(),
- &lower_proj_elem_expr);
+ orig_agg_func->GetArgTypes(), &lower_proj_elem_expr);
lower_proj_elem_array->Append(lower_proj_elem_expr);
CExpression *upper_proj_elem_expr = nullptr;
@@ -291,7 +291,7 @@ CXformEagerAgg::PopulateLowerUpperProjectList(
CScalarProjectElement::PopConvert(lower_proj_elem_expr->Pop())
->Pcr(),
orig_proj_elem->Pcr(), orig_agg_func->IsDistinct(),
- &upper_proj_elem_expr);
+ orig_agg_func->GetArgTypes(), &upper_proj_elem_expr);
upper_proj_elem_array->Append(upper_proj_elem_expr);
} // end of loop over each project element
@@ -310,6 +310,7 @@ CXformEagerAgg::PopulateLowerProjectElement(
CMemoryPool *mp, // memory pool
IMDId *agg_mdid, // original global aggregate function
CWStringConst *agg_name, CExpressionArray *agg_arg_array, BOOL is_distinct,
+ ULongPtrArray *arg_types,
CExpression **
lower_proj_elem_expr // output project element of the new lower aggregate
)
@@ -318,9 +319,10 @@ CXformEagerAgg::PopulateLowerProjectElement(
CMDAccessor *md_accessor = COptCtxt::PoctxtFromTLS()->Pmda();
agg_mdid->AddRef();
+ arg_types->AddRef();
CScalarAggFunc *lower_agg_func = CUtils::PopAggFunc(
mp, agg_mdid, agg_name, is_distinct, EaggfuncstageLocal, true, nullptr,
- EaggfunckindNormal, GPOS_NEW(mp) ULongPtrArray(mp), false);
+ EaggfunckindNormal, arg_types, false);
// add the arguments for the lower aggregate function, which is
// going to be the same as the original aggregate function
agg_arg_array->AddRef();
@@ -348,16 +350,17 @@ CXformEagerAgg::PopulateUpperProjectElement(
CMemoryPool *mp, // memory pool
IMDId *agg_mdid, // original global aggregate function
CWStringConst *agg_name, CColRef *lower_colref, CColRef *output_colref,
- BOOL is_distinct,
+ BOOL is_distinct, ULongPtrArray *arg_types,
CExpression **
upper_proj_elem_expr // output project element of the new lower aggregate
)
{
// create a new operator
agg_mdid->AddRef();
+ arg_types->AddRef();
CScalarAggFunc *upper_agg_func = CUtils::PopAggFunc(
mp, agg_mdid, agg_name, is_distinct, EaggfuncstageGlobal, true, nullptr,
- EaggfunckindNormal, GPOS_NEW(mp) ULongPtrArray(mp), false);
+ EaggfunckindNormal, arg_types, false);
// populate the argument list for the upper aggregate function
CExpressionArray *upper_agg_arg_array = GPOS_NEW(mp) CExpressionArray(mp);
diff --git a/src/test/regress/expected/gporca.out b/src/test/regress/expected/gporca.out
index 17d02da856..4e39f380bb 100644
--- a/src/test/regress/expected/gporca.out
+++ b/src/test/regress/expected/gporca.out
@@ -14952,3 +14952,70 @@ SELECT CAST(a AS TEXT[]) FROM array_coerceviaio;
(1 row)
---------------------------------------------------------------------------------
+DROP TABLE IF EXISTS schema_test_table;
+CREATE TABLE schema_test_table(a numeric, b numeric(5,2), c char(10) NOT NULL) distributed by (a);
+-- In 7x, redundant Result nodes in planned_stmt are being removed by ORCA,
+-- which caused the loss of typmod info of column type in plan.
+-- Below query is used by external libraries to fetch schema of table.
+-- Test that the typmod of column type is correct in explain plan.
+EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM schema_test_table WHERE 1=0;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------------------------------------------------------------
+ Result
+ Output: a, b, c
+ One-Time Filter: false
+ Optimizer: Postgres-based planner
+ Settings: optimizer = 'off', optimizer_enable_coordinator_only_queries = 'on', optimizer_enable_master_only_queries = 'on', optimizer_segments = '3'
+(5 rows)
+
+---------------------------------------------------------------------------------
+---------------------------------------------------------------------------------
+-- Test ALL NULL scalar array compare
+create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
+explain select * from DatumSortedSet_core where b in (NULL, NULL);
+ QUERY PLAN
+-------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..240.69 rows=1 width=36)
+ -> Seq Scan on datumsortedset_core (cost=0.00..240.67 rows=1 width=36)
+ Filter: ((b)::text = ANY ('{NULL,NULL}'::text[]))
+ Optimizer: Postgres-based planner
+(4 rows)
+
+---------------------------------------------------------------------------------
+-- Test fill argtypes of PopAggFunc
+-- start_ignore
+drop table if exists foo;
+drop table if exists bar;
+-- end_ignore
+set optimizer_enable_eageragg = on;
+create table foo (j1 int, g1 int, s1 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'j1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+insert into foo select i%10, i %10, i from generate_series(1,100) i;
+create table bar (j2 int, g2 int, s2 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'j2' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+insert into bar select i%1, i %10, i from generate_series(1,10) i;
+analyze foo;
+analyze bar;
+explain (costs off) select max(s1) from foo inner join bar on j1 = j2 group by g1;
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Finalize HashAggregate
+ Group Key: foo.g1
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.g1
+ -> Partial HashAggregate
+ Group Key: foo.g1
+ -> Hash Join
+ Hash Cond: (foo.j1 = bar.j2)
+ -> Seq Scan on foo
+ -> Hash
+ -> Seq Scan on bar
+ Optimizer: Postgres-based planner
+(13 rows)
+
+drop table foo;
+drop table bar;
+reset optimizer_enable_eageragg;
diff --git a/src/test/regress/expected/gporca_optimizer.out b/src/test/regress/expected/gporca_optimizer.out
index 8fb65283c5..d0952a3883 100644
--- a/src/test/regress/expected/gporca_optimizer.out
+++ b/src/test/regress/expected/gporca_optimizer.out
@@ -15030,3 +15030,71 @@ SELECT CAST(a AS TEXT[]) FROM array_coerceviaio;
(1 row)
---------------------------------------------------------------------------------
+DROP TABLE IF EXISTS schema_test_table;
+CREATE TABLE schema_test_table(a numeric, b numeric(5,2), c char(10) NOT NULL) distributed by (a);
+-- In 7x, redundant Result nodes in planned_stmt are being removed by ORCA,
+-- which caused the loss of typmod info of column type in plan.
+-- Below query is used by external libraries to fetch schema of table.
+-- Test that the typmod of column type is correct in explain plan.
+EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM schema_test_table WHERE 1=0;
+ QUERY PLAN
+-----------------------------------------------------------------------------------------------------------------------------------
+ Result
+ Output: NULL::numeric, NULL::numeric(5,2), NULL::character(10)
+ One-Time Filter: false
+ Optimizer: GPORCA
+ Settings: optimizer_enable_coordinator_only_queries = 'on', optimizer_enable_master_only_queries = 'on', optimizer_segments = '3'
+(5 rows)
+
+---------------------------------------------------------------------------------
+---------------------------------------------------------------------------------
+-- Test ALL NULL scalar array compare
+create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
+explain select * from DatumSortedSet_core where b in (NULL, NULL);
+ QUERY PLAN
+-------------------------------------------
+ Result (cost=0.00..0.00 rows=0 width=12)
+ One-Time Filter: false
+ Optimizer: GPORCA
+(3 rows)
+
+---------------------------------------------------------------------------------
+-- Test fill argtypes of PopAggFunc
+-- start_ignore
+drop table if exists foo;
+drop table if exists bar;
+-- end_ignore
+set optimizer_enable_eageragg = on;
+create table foo (j1 int, g1 int, s1 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'j1' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+insert into foo select i%10, i %10, i from generate_series(1,100) i;
+create table bar (j2 int, g2 int, s2 int);
+NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'j2' as the Greenplum Database data distribution key for this table.
+HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
+insert into bar select i%1, i %10, i from generate_series(1,10) i;
+analyze foo;
+analyze bar;
+explain (costs off) select max(s1) from foo inner join bar on j1 = j2 group by g1;
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Finalize GroupAggregate
+ Group Key: foo.g1
+ -> Sort
+ Sort Key: foo.g1
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: foo.g1
+ -> Streaming Partial HashAggregate
+ Group Key: foo.g1
+ -> Hash Join
+ Hash Cond: (foo.j1 = bar.j2)
+ -> Seq Scan on foo
+ -> Hash
+ -> Seq Scan on bar
+ Optimizer: GPORCA
+(15 rows)
+
+drop table foo;
+drop table bar;
+reset optimizer_enable_eageragg;
diff --git a/src/test/regress/sql/gporca.sql b/src/test/regress/sql/gporca.sql
index dbb94c9d8e..d2d5c4645c 100644
--- a/src/test/regress/sql/gporca.sql
+++ b/src/test/regress/sql/gporca.sql
@@ -3714,6 +3714,29 @@ INSERT INTO array_coerceviaio values(ARRAY[1, 2, 3]);
EXPLAIN SELECT CAST(a AS TEXT[]) FROM array_coerceviaio;
SELECT CAST(a AS TEXT[]) FROM array_coerceviaio;
---------------------------------------------------------------------------------
+-- Test ALL NULL scalar array compare
+create table DatumSortedSet_core (a int, b character varying NOT NULL) distributed by (a);
+explain select * from DatumSortedSet_core where b in (NULL, NULL);
+---------------------------------------------------------------------------------
+
+-- Test fill argtypes of PopAggFunc
+-- start_ignore
+drop table if exists foo;
+drop table if exists bar;
+-- end_ignore
+
+set optimizer_enable_eageragg = on;
+create table foo (j1 int, g1 int, s1 int);
+insert into foo select i%10, i %10, i from generate_series(1,100) i;
+create table bar (j2 int, g2 int, s2 int);
+insert into bar select i%1, i %10, i from generate_series(1,10) i;
+analyze foo;
+analyze bar;
+
+explain (costs off) select max(s1) from foo inner join bar on j1 = j2 group by g1;
+drop table foo;
+drop table bar;
+reset optimizer_enable_eageragg;
-- start_ignore
DROP SCHEMA orca CASCADE;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 04/30: [cleanup] Remove unused code
Posted by ma...@apache.org.
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 2c4229a67ce8c235226f1bbe8d0e1efb88eb6ead
Author: David Kimura <dk...@vmware.com>
AuthorDate: Tue Dec 19 22:28:18 2023 +0000
[cleanup] Remove unused code
CDistributionSpecHashed::Combine parameter 'other_spec' should not be
NULL. So, assert rather than add code that should never execute.
---
src/backend/gporca/libgpopt/src/base/CDistributionSpecHashed.cpp | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/backend/gporca/libgpopt/src/base/CDistributionSpecHashed.cpp b/src/backend/gporca/libgpopt/src/base/CDistributionSpecHashed.cpp
index 4ee8991c68..654545b7b6 100644
--- a/src/backend/gporca/libgpopt/src/base/CDistributionSpecHashed.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CDistributionSpecHashed.cpp
@@ -962,10 +962,7 @@ CDistributionSpecHashed *
CDistributionSpecHashed::Combine(CMemoryPool *mp,
CDistributionSpecHashed *other_spec)
{
- if (nullptr == other_spec)
- {
- return this;
- }
+ GPOS_ASSERT(nullptr != other_spec);
CDistributionSpecHashed *combined_spec = other_spec->Copy(mp);
CDistributionSpecHashed *prev = nullptr, *next = nullptr;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 12/30: [ORCA] Use standard library for compile time assert (#16938)
Posted by ma...@apache.org.
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 364c3abf109937e8b016a5af264554f80fab2e93
Author: David Kimura <dk...@vmware.com>
AuthorDate: Wed Jan 10 10:23:54 2024 -0800
[ORCA] Use standard library for compile time assert (#16938)
In C++11 static_assert was introduced in the standard library. That
interface allows us to add useful error messages for when the assert
fails. Unfortunately, error message argument is required until C++17, so
existing callers need to be updated. Luckily there weren't many.
The existing implementation was likely derived from Van Horn 1997
Compile-time assertions in C++ [1]. Besides not supporting error
messages, it also renders unused variable warnings if used in the scope
of a function.
[1] https://dl.acm.org/doi/10.5555/282637.282656
---
src/backend/gporca/libgpopt/src/base/COrderSpec.cpp | 2 +-
src/backend/gporca/libgpopt/src/base/CWindowFrame.cpp | 10 ++++++----
src/backend/gporca/libgpos/include/gpos/assert.h | 2 +-
.../gporca/libgpos/include/gpos/common/CDynamicPtrArray.h | 4 ++--
.../gporca/libgpos/include/gpos/common/DbgPrintMixin.h | 2 +-
.../gporca/libgpos/include/gpos/memory/CMemoryPool.h | 4 ++--
src/backend/gporca/libgpos/include/gpos/types.h | 14 +++++++-------
src/backend/gporca/libgpos/src/error/CErrorContext.cpp | 3 ++-
8 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/src/backend/gporca/libgpopt/src/base/COrderSpec.cpp b/src/backend/gporca/libgpopt/src/base/COrderSpec.cpp
index 0a9e12088d..f0406035a0 100644
--- a/src/backend/gporca/libgpopt/src/base/COrderSpec.cpp
+++ b/src/backend/gporca/libgpopt/src/base/COrderSpec.cpp
@@ -24,7 +24,7 @@ using namespace gpmd;
// string encoding of null treatment
const CHAR rgszNullCode[][16] = {"Auto", "NULLsFirst", "NULLsLast"};
-GPOS_CPL_ASSERT(COrderSpec::EntSentinel == GPOS_ARRAY_SIZE(rgszNullCode));
+GPOS_CPL_ASSERT(COrderSpec::EntSentinel == GPOS_ARRAY_SIZE(rgszNullCode), "");
//---------------------------------------------------------------------------
diff --git a/src/backend/gporca/libgpopt/src/base/CWindowFrame.cpp b/src/backend/gporca/libgpopt/src/base/CWindowFrame.cpp
index 231e270586..4766300215 100644
--- a/src/backend/gporca/libgpopt/src/base/CWindowFrame.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CWindowFrame.cpp
@@ -21,7 +21,8 @@ FORCE_GENERATE_DBGSTR(CWindowFrame);
// string encoding of frame specification
const CHAR rgszFrameSpec[][10] = {"Rows", "Range", "Groups"};
-GPOS_CPL_ASSERT(CWindowFrame::EfsSentinel == GPOS_ARRAY_SIZE(rgszFrameSpec));
+GPOS_CPL_ASSERT(CWindowFrame::EfsSentinel == GPOS_ARRAY_SIZE(rgszFrameSpec),
+ "");
// string encoding of frame boundary
const CHAR rgszFrameBoundary[][40] = {"Unbounded Preceding",
@@ -31,14 +32,15 @@ const CHAR rgszFrameBoundary[][40] = {"Unbounded Preceding",
"Bounded Following",
"Delayed Bounded Preceding",
"Delayed Bounded Following"};
-GPOS_CPL_ASSERT(CWindowFrame::EfbSentinel ==
- GPOS_ARRAY_SIZE(rgszFrameBoundary));
+GPOS_CPL_ASSERT(CWindowFrame::EfbSentinel == GPOS_ARRAY_SIZE(rgszFrameBoundary),
+ "");
// string encoding of frame exclusion strategy
const CHAR rgszFrameExclusionStrategy[][20] = {"None", "Nulls", "Current",
"MatchingOthers", "Ties"};
GPOS_CPL_ASSERT(CWindowFrame::EfesSentinel ==
- GPOS_ARRAY_SIZE(rgszFrameExclusionStrategy));
+ GPOS_ARRAY_SIZE(rgszFrameExclusionStrategy),
+ "");
// empty window frame
const CWindowFrame CWindowFrame::m_wfEmpty;
diff --git a/src/backend/gporca/libgpos/include/gpos/assert.h b/src/backend/gporca/libgpos/include/gpos/assert.h
index 510b6fc6c2..62bf16a2af 100644
--- a/src/backend/gporca/libgpos/include/gpos/assert.h
+++ b/src/backend/gporca/libgpos/include/gpos/assert.h
@@ -69,7 +69,7 @@ extern void debug_gpos_assert(const char *file, long line, const char *m);
#define GPOS_ASSERT_IFF(x, y) GPOS_ASSERT((!(x) || (y)) && (!(y) || (x)))
// compile assert
-#define GPOS_CPL_ASSERT(x) extern int assert_array[(x) ? 1 : -1]
+#define GPOS_CPL_ASSERT static_assert
// debug assert, with message
#define GPOS_ASSERT_MSG(x, msg) GPOS_ASSERT((x) && (msg))
diff --git a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
index 9c73d9b22f..c7b3e363c5 100644
--- a/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
+++ b/src/backend/gporca/libgpos/include/gpos/common/CDynamicPtrArray.h
@@ -158,8 +158,8 @@ public:
m_elems(nullptr)
{
// do not allocate in constructor; defer allocation to first insertion
- static_assert(nullptr != CleanupFn,
- "No valid destroy function specified");
+ GPOS_CPL_ASSERT(nullptr != CleanupFn,
+ "No valid destroy function specified");
}
// dtor
diff --git a/src/backend/gporca/libgpos/include/gpos/common/DbgPrintMixin.h b/src/backend/gporca/libgpos/include/gpos/common/DbgPrintMixin.h
index 97ab786b27..760609105a 100644
--- a/src/backend/gporca/libgpos/include/gpos/common/DbgPrintMixin.h
+++ b/src/backend/gporca/libgpos/include/gpos/common/DbgPrintMixin.h
@@ -76,7 +76,7 @@ struct DbgPrintMixin
#if defined(GPOS_DEBUG)
#define FORCE_GENERATE_DBGSTR(Type) template struct ::gpos::DbgPrintMixin<Type>
#else
-#define FORCE_GENERATE_DBGSTR(Type) static_assert(true, "")
+#define FORCE_GENERATE_DBGSTR(Type) GPOS_CPL_ASSERT(true, "")
#endif
diff --git a/src/backend/gporca/libgpos/include/gpos/memory/CMemoryPool.h b/src/backend/gporca/libgpos/include/gpos/memory/CMemoryPool.h
index 3f9ab65946..ae3480d6e4 100644
--- a/src/backend/gporca/libgpos/include/gpos/memory/CMemoryPool.h
+++ b/src/backend/gporca/libgpos/include/gpos/memory/CMemoryPool.h
@@ -45,8 +45,8 @@
#define GPOS_MEM_ALIGNED_STRUCT_SIZE(x) GPOS_MEM_ALIGNED_SIZE(GPOS_SIZEOF(x))
// sanity check: char and ulong always fits into the basic unit of alignment
-GPOS_CPL_ASSERT(GPOS_MEM_ALIGNED_STRUCT_SIZE(gpos::CHAR) == GPOS_MEM_ARCH);
-GPOS_CPL_ASSERT(GPOS_MEM_ALIGNED_STRUCT_SIZE(gpos::ULONG) == GPOS_MEM_ARCH);
+GPOS_CPL_ASSERT(GPOS_MEM_ALIGNED_STRUCT_SIZE(gpos::CHAR) == GPOS_MEM_ARCH, "");
+GPOS_CPL_ASSERT(GPOS_MEM_ALIGNED_STRUCT_SIZE(gpos::ULONG) == GPOS_MEM_ARCH, "");
// static pattern to init memory
#define GPOS_MEM_INIT_PATTERN_CHAR (0xCC)
diff --git a/src/backend/gporca/libgpos/include/gpos/types.h b/src/backend/gporca/libgpos/include/gpos/types.h
index f8290a4a0a..b3977b3e67 100644
--- a/src/backend/gporca/libgpos/include/gpos/types.h
+++ b/src/backend/gporca/libgpos/include/gpos/types.h
@@ -59,14 +59,14 @@ using MODE_T = mode_t;
// by fixed sizes rather than min requirements
using ULONG = uint32_t;
-GPOS_CPL_ASSERT(4 == sizeof(ULONG));
+GPOS_CPL_ASSERT(4 == sizeof(ULONG), "");
enum
{
ulong_max = ((::gpos::ULONG) -1)
};
using ULLONG = uint64_t;
-GPOS_CPL_ASSERT(8 == sizeof(ULLONG));
+GPOS_CPL_ASSERT(8 == sizeof(ULLONG), "");
enum
{
ullong_max = ((::gpos::ULLONG) -1)
@@ -81,10 +81,10 @@ using INT = int32_t;
using LINT = int64_t;
using INT_PTR = intptr_t;
-GPOS_CPL_ASSERT(2 == sizeof(USINT));
-GPOS_CPL_ASSERT(2 == sizeof(SINT));
-GPOS_CPL_ASSERT(4 == sizeof(INT));
-GPOS_CPL_ASSERT(8 == sizeof(LINT));
+GPOS_CPL_ASSERT(2 == sizeof(USINT), "");
+GPOS_CPL_ASSERT(2 == sizeof(SINT), "");
+GPOS_CPL_ASSERT(4 == sizeof(INT), "");
+GPOS_CPL_ASSERT(8 == sizeof(LINT), "");
enum
{
@@ -112,7 +112,7 @@ enum
using DOUBLE = double;
// holds for all platforms
-GPOS_CPL_ASSERT(sizeof(ULONG_PTR) == sizeof(void *));
+GPOS_CPL_ASSERT(sizeof(ULONG_PTR) == sizeof(void *), "");
// variadic parameter list type
using VA_LIST = va_list;
diff --git a/src/backend/gporca/libgpos/src/error/CErrorContext.cpp b/src/backend/gporca/libgpos/src/error/CErrorContext.cpp
index 293757c114..8e3c5dd205 100644
--- a/src/backend/gporca/libgpos/src/error/CErrorContext.cpp
+++ b/src/backend/gporca/libgpos/src/error/CErrorContext.cpp
@@ -22,7 +22,8 @@ using namespace gpos;
// logger buffer must be large enough to store error messages
-GPOS_CPL_ASSERT(GPOS_ERROR_MESSAGE_BUFFER_SIZE <= GPOS_LOG_ENTRY_BUFFER_SIZE);
+GPOS_CPL_ASSERT(GPOS_ERROR_MESSAGE_BUFFER_SIZE <= GPOS_LOG_ENTRY_BUFFER_SIZE,
+ "");
//---------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 08/30: [ORCA] Add GUC to disable right outer join (ROJ)
Posted by ma...@apache.org.
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 dc32e926977bfccb4bb2d775492767cc075d5125
Author: David Kimura <dk...@vmware.com>
AuthorDate: Mon Dec 18 22:47:54 2023 +0000
[ORCA] Add GUC to disable right outer join (ROJ)
In production systems, we encountered scenarios where poor cardinality
estimations led to plans with ROJ that yielded memory related workfile
limit errors. In those cases, the only way to turn off ROJ was to either
rewrite the query or turn off the xform. A query rewrite takes time to
come up with and turning off the xform doesn't work at the per-user
level. This commit introduces a GUC optimizer_enable_right_outer_join as
a convenient way to work around this problem.
---
src/backend/gpopt/config/CConfigParamMapping.cpp | 9 +++++++++
src/backend/utils/misc/guc_gp.c | 11 +++++++++++
src/include/utils/guc.h | 1 +
src/include/utils/unsync_guc_name.h | 1 +
src/test/regress/expected/gporca.out | 19 +++++++++++++++++++
src/test/regress/expected/gporca_optimizer.out | 20 ++++++++++++++++++++
src/test/regress/sql/gporca.sql | 6 ++++++
7 files changed, 67 insertions(+)
diff --git a/src/backend/gpopt/config/CConfigParamMapping.cpp b/src/backend/gpopt/config/CConfigParamMapping.cpp
index 9bcefdc6cf..22e0493972 100644
--- a/src/backend/gpopt/config/CConfigParamMapping.cpp
+++ b/src/backend/gpopt/config/CConfigParamMapping.cpp
@@ -522,6 +522,15 @@ CConfigParamMapping::PackConfigParamInBitset(
// enable using opfamilies in distribution specs for GPDB 6
traceflag_bitset->ExchangeSet(EopttraceConsiderOpfamiliesForDistribution);
+ if (!optimizer_enable_right_outer_join)
+ {
+ // disable right outer join if the corresponding GUC is turned off
+ traceflag_bitset->ExchangeSet(
+ GPOPT_DISABLE_XFORM_TF(CXform::ExfLeftJoin2RightJoin));
+ traceflag_bitset->ExchangeSet(
+ GPOPT_DISABLE_XFORM_TF(CXform::ExfRightOuterJoin2HashJoin));
+ }
+
return traceflag_bitset;
}
diff --git a/src/backend/utils/misc/guc_gp.c b/src/backend/utils/misc/guc_gp.c
index c07704427b..cb7a580834 100644
--- a/src/backend/utils/misc/guc_gp.c
+++ b/src/backend/utils/misc/guc_gp.c
@@ -359,6 +359,7 @@ bool optimizer_enable_redistribute_nestloop_loj_inner_child;
bool optimizer_force_comprehensive_join_implementation;
bool optimizer_enable_replicated_table;
bool optimizer_enable_foreign_table;
+bool optimizer_enable_right_outer_join;
/* Optimizer plan enumeration related GUCs */
bool optimizer_enumerate_plans;
@@ -3182,6 +3183,16 @@ struct config_bool ConfigureNamesBool_gp[] =
true,
NULL, NULL, NULL
},
+ {
+ {"optimizer_enable_right_outer_join", PGC_USERSET, QUERY_TUNING_METHOD,
+ gettext_noop("Enable Orca to generate plans containing right outer joins."),
+ NULL,
+ GUC_NOT_IN_SAMPLE
+ },
+ &optimizer_enable_right_outer_join,
+ true,
+ NULL, NULL, NULL
+ },
{
{"aqumv_allow_foreign_table", PGC_USERSET, DEVELOPER_OPTIONS,
gettext_noop("allow answer query using materialized views which have foreign or external tables."),
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index 797c3f8f2d..db484fb353 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -539,6 +539,7 @@ extern bool optimizer_enable_redistribute_nestloop_loj_inner_child;
extern bool optimizer_force_comprehensive_join_implementation;
extern bool optimizer_enable_replicated_table;
extern bool optimizer_enable_foreign_table;
+extern bool optimizer_enable_right_outer_join;
/* Optimizer plan enumeration related GUCs */
extern bool optimizer_enumerate_plans;
diff --git a/src/include/utils/unsync_guc_name.h b/src/include/utils/unsync_guc_name.h
index 4db424338a..5a89df0963 100644
--- a/src/include/utils/unsync_guc_name.h
+++ b/src/include/utils/unsync_guc_name.h
@@ -432,6 +432,7 @@
"optimizer_enable_streaming_material",
"optimizer_enable_tablescan",
"optimizer_enable_foreign_table",
+ "optimizer_enable_right_outer_join",
"optimizer_enforce_subplans",
"optimizer_enumerate_plans",
"optimizer_expand_fulljoin",
diff --git a/src/test/regress/expected/gporca.out b/src/test/regress/expected/gporca.out
index 0d83a50c17..17d02da856 100644
--- a/src/test/regress/expected/gporca.out
+++ b/src/test/regress/expected/gporca.out
@@ -13128,6 +13128,25 @@ explain (costs off) select count(*), t2.c from roj1 t1 left join roj2 t2 on t1.a
Optimizer: Postgres query optimizer
(11 rows)
+-- check that ROJ can be disabled via GUC
+set optimizer_enable_right_outer_join=off;
+explain (costs off) select count(*), t2.c from roj1 t1 left join roj2 t2 on t1.a = t2.c group by t2.c;
+ QUERY PLAN
+------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> HashAggregate
+ Group Key: t2.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Hash Key: t2.c
+ -> Hash Right Join
+ Hash Cond: (t2.c = t1.a)
+ -> Seq Scan on roj2 t2
+ -> Hash
+ -> Seq Scan on roj1 t1
+ Optimizer: Postgres-based planner
+(11 rows)
+
+reset optimizer_enable_right_outer_join;
reset optimizer_enable_motion_redistribute;
reset enable_sort;
-- simple check for btree indexes on AO tables
diff --git a/src/test/regress/expected/gporca_optimizer.out b/src/test/regress/expected/gporca_optimizer.out
index 6eb308c416..27a3739fa5 100644
--- a/src/test/regress/expected/gporca_optimizer.out
+++ b/src/test/regress/expected/gporca_optimizer.out
@@ -13243,6 +13243,26 @@ explain (costs off) select count(*), t2.c from roj1 t1 left join roj2 t2 on t1.a
Optimizer: Pivotal Optimizer (GPORCA)
(12 rows)
+-- check that ROJ can be disabled via GUC
+set optimizer_enable_right_outer_join=off;
+explain (costs off) select count(*), t2.c from roj1 t1 left join roj2 t2 on t1.a = t2.c group by t2.c;
+ QUERY PLAN
+------------------------------------------------------------------
+ GroupAggregate
+ Group Key: roj2.c
+ -> Sort
+ Sort Key: roj2.c
+ -> Hash Left Join
+ Hash Cond: (roj1.a = roj2.c)
+ -> Gather Motion 3:1 (slice1; segments: 3)
+ -> Seq Scan on roj1
+ -> Hash
+ -> Gather Motion 3:1 (slice2; segments: 3)
+ -> Seq Scan on roj2
+ Optimizer: GPORCA
+(12 rows)
+
+reset optimizer_enable_right_outer_join;
reset optimizer_enable_motion_redistribute;
reset enable_sort;
-- simple check for btree indexes on AO tables
diff --git a/src/test/regress/sql/gporca.sql b/src/test/regress/sql/gporca.sql
index f0cf29e3aa..dbb94c9d8e 100644
--- a/src/test/regress/sql/gporca.sql
+++ b/src/test/regress/sql/gporca.sql
@@ -2905,6 +2905,12 @@ analyze roj2;
set optimizer_enable_motion_redistribute=off;
select count(*), t2.c from roj1 t1 left join roj2 t2 on t1.a = t2.c group by t2.c;
explain (costs off) select count(*), t2.c from roj1 t1 left join roj2 t2 on t1.a = t2.c group by t2.c;
+
+-- check that ROJ can be disabled via GUC
+set optimizer_enable_right_outer_join=off;
+explain (costs off) select count(*), t2.c from roj1 t1 left join roj2 t2 on t1.a = t2.c group by t2.c;
+reset optimizer_enable_right_outer_join;
+
reset optimizer_enable_motion_redistribute;
reset enable_sort;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 09/30: Remove redundant hash keys of motion (#16883)
Posted by ma...@apache.org.
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 4c43fcaf0dbba6b720d9d796a67eac0164f55675
Author: chaotian <10...@users.noreply.github.com>
AuthorDate: Mon Dec 25 09:17:04 2023 +0800
Remove redundant hash keys of motion (#16883)
As we set optimizer_force_multistage_agg=on to force ORCA choose multi-agg plan,
there are redundant hash keys of motion as the first stage agg compute required
DistributionSpec for child, now we just simply append group by columns and
distinct columns, but actually we should deduplicate them because they might
have same columns.
authored-by: chaotian <ch...@vmware.com>
---
.../gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp | 2 +-
.../gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp | 2 +-
.../dxl/minidump/DQA-GroupBy-HashAggregate1.mdp | 2 +-
.../gporca/data/dxl/minidump/DQA-SplitScalar.mdp | 2 +-
.../data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp | 2 +-
.../dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp | 2 +-
.../data/dxl/minidump/DQA-SplitScalarWithGuc.mdp | 2 +-
.../data/dxl/minidump/DistinctQueryWithMotions.mdp | 7 ++--
.../gporca/data/dxl/minidump/LOJ_bb_mpph.mdp | 2 +-
.../data/dxl/minidump/MDQA-SameDQAColumn.mdp | 2 +-
.../data/dxl/minidump/MDQAs-Grouping-OrderBy.mdp | 2 +-
.../gporca/data/dxl/minidump/MDQAs-Grouping.mdp | 2 +-
.../gporca/data/dxl/minidump/MDQAs-Union.mdp | 2 +-
src/backend/gporca/data/dxl/minidump/MDQAs1.mdp | 2 +-
.../dxl/minidump/ScalarDQAWithNonScalarAgg.mdp | 7 ++--
.../ThreeStageAgg-DistinctOnComputedCol.mdp | 2 +-
.../ThreeStageAgg-DistinctOnSameNonDistrCol.mdp | 2 +-
.../ThreeStageAgg-GbandDistinctOnDistrCol.mdp | 2 +-
...ThreeStageAgg-ScalarAgg-DistinctComputedCol.mdp | 2 +-
.../ThreeStageAgg-ScalarAgg-DistinctDistrCol.mdp | 2 +-
...ThreeStageAgg-ScalarAgg-DistinctNonDistrCol.mdp | 2 +-
.../gporca/data/dxl/minidump/ThreeStageAgg.mdp | 2 +-
.../gporca/data/dxl/minidump/UnionOfDQAQueries.mdp | 2 +-
.../WinFunc-Redistribute-Sort-CTE-Producer.mdp | 2 +-
.../gporca/libgpopt/src/operators/CPhysicalAgg.cpp | 22 +++++++++++--
src/test/regress/expected/gp_dqa.out | 31 ++++++++++++++++++
src/test/regress/expected/gp_dqa_optimizer.out | 37 ++++++++++++++++++++++
src/test/regress/sql/gp_dqa.sql | 3 ++
28 files changed, 116 insertions(+), 35 deletions(-)
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp b/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp
index a5dcf43a09..7a65d9376d 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-1-RegularAgg.mdp
@@ -265,7 +265,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="42">
+ <dxl:Plan Id="0" SpaceSize="38">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="575.682217" Rows="4.000000" Width="16"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp b/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp
index e4b130798f..a2b83d2e8d 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-2-RegularAgg.mdp
@@ -310,7 +310,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="42">
+ <dxl:Plan Id="0" SpaceSize="38">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="576.580308" Rows="4.000000" Width="24"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp b/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp
index 5853daab80..c5563a0891 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-GroupBy-HashAggregate1.mdp
@@ -231,7 +231,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="2">
+ <dxl:Plan Id="0" SpaceSize="1">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="431.000376" Rows="3.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp
index 302772f28c..197b578c15 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalar.mdp
@@ -329,7 +329,7 @@ drop table if exists foo;
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="14">
+ <dxl:Plan Id="0" SpaceSize="12">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="431.119547" Rows="1.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp
index 55a69c5961..29b87f5700 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarOnDistCol.mdp
@@ -248,7 +248,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="14">
+ <dxl:Plan Id="0" SpaceSize="12">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="431.000184" Rows="1.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp
index 6bff5cceb8..14c76622a9 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithAggAndGuc.mdp
@@ -341,7 +341,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="14">
+ <dxl:Plan Id="0" SpaceSize="12">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="438.619812" Rows="1.000000" Width="16"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp
index 04f5913797..788c257608 100644
--- a/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DQA-SplitScalarWithGuc.mdp
@@ -328,7 +328,7 @@ explain select count(distinct b ) from foo;
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="14">
+ <dxl:Plan Id="0" SpaceSize="12">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="438.272788" Rows="1.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp b/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp
index 63e832ccb9..15e96ce2db 100644
--- a/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DistinctQueryWithMotions.mdp
@@ -22,7 +22,7 @@
-> Sort (cost=0.00..431.00 rows=14 width=8)
Sort Key: gp_segment_id, b
-> Redistribute Motion 3:3 (slice3; segments: 3) (cost=0.00..431.00 rows=14 width=8)
- Hash Key: gp_segment_id, b, b
+ Hash Key: gp_segment_id, b
-> Seq Scan on t (cost=0.00..431.00 rows=14 width=8)
Optimizer: Pivotal Optimizer (GPORCA)
(13 rows)
@@ -305,7 +305,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="38">
+ <dxl:Plan Id="0" SpaceSize="34">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="431.007097" Rows="40.000000" Width="12"/>
@@ -421,9 +421,6 @@
<dxl:HashExpr Opfamily="0.1977.1.0">
<dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
</dxl:HashExpr>
- <dxl:HashExpr Opfamily="0.1977.1.0">
- <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:HashExpr>
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
diff --git a/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp b/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp
index e984b59948..5931f0e4f8 100644
--- a/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp
+++ b/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp
@@ -5705,7 +5705,7 @@
</dxl:LogicalProject>
</dxl:LogicalLimit>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="26759194">
+ <dxl:Plan Id="0" SpaceSize="24690162">
<dxl:Limit>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="2587.328257" Rows="1.000000" Width="24"/>
diff --git a/src/backend/gporca/data/dxl/minidump/MDQA-SameDQAColumn.mdp b/src/backend/gporca/data/dxl/minidump/MDQA-SameDQAColumn.mdp
index ea3fc413fe..1112088ba3 100644
--- a/src/backend/gporca/data/dxl/minidump/MDQA-SameDQAColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/MDQA-SameDQAColumn.mdp
@@ -342,7 +342,7 @@
</dxl:LogicalGroupBy>
</dxl:LogicalLimit>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="131">
+ <dxl:Plan Id="0" SpaceSize="121">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="583.692435" Rows="5.000000" Width="28"/>
diff --git a/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping-OrderBy.mdp b/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping-OrderBy.mdp
index 3098661318..679f1141ef 100644
--- a/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping-OrderBy.mdp
+++ b/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping-OrderBy.mdp
@@ -454,7 +454,7 @@ SQL:
</dxl:LogicalGroupBy>
</dxl:LogicalLimit>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="12376">
+ <dxl:Plan Id="0" SpaceSize="9296">
<dxl:Limit>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="1293.104458" Rows="10.000000" Width="20"/>
diff --git a/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping.mdp b/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping.mdp
index 72f579a912..63729bd67d 100644
--- a/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping.mdp
+++ b/src/backend/gporca/data/dxl/minidump/MDQAs-Grouping.mdp
@@ -445,7 +445,7 @@ SQL:
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="10528">
+ <dxl:Plan Id="0" SpaceSize="8288">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="1293.076760" Rows="111.000000" Width="20"/>
diff --git a/src/backend/gporca/data/dxl/minidump/MDQAs-Union.mdp b/src/backend/gporca/data/dxl/minidump/MDQAs-Union.mdp
index 0ca5986ea6..8c7cb32801 100644
--- a/src/backend/gporca/data/dxl/minidump/MDQAs-Union.mdp
+++ b/src/backend/gporca/data/dxl/minidump/MDQAs-Union.mdp
@@ -498,7 +498,7 @@ select a,count(distinct a), count(distinct b) from t1 group by a
</dxl:LogicalGroupBy>
</dxl:Union>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="1067404800">
+ <dxl:Plan Id="0" SpaceSize="398361600">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="2586.144639" Rows="134.000000" Width="20"/>
diff --git a/src/backend/gporca/data/dxl/minidump/MDQAs1.mdp b/src/backend/gporca/data/dxl/minidump/MDQAs1.mdp
index 8e83f91779..a8673c1a16 100644
--- a/src/backend/gporca/data/dxl/minidump/MDQAs1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/MDQAs1.mdp
@@ -451,7 +451,7 @@ SQL:
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="1874">
+ <dxl:Plan Id="0" SpaceSize="1010">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="1724.007238" Rows="1.000000" Width="16"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ScalarDQAWithNonScalarAgg.mdp b/src/backend/gporca/data/dxl/minidump/ScalarDQAWithNonScalarAgg.mdp
index e2794d0555..8a5d524ded 100644
--- a/src/backend/gporca/data/dxl/minidump/ScalarDQAWithNonScalarAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ScalarDQAWithNonScalarAgg.mdp
@@ -18,7 +18,7 @@
-> Streaming HashAggregate (cost=0.00..441.31 rows=33334 width=8)
Group Key: c, b
-> Redistribute Motion 3:3 (slice3; segments: 3) (cost=0.00..433.10 rows=33334 width=8)
- Hash Key: c, b, b
+ Hash Key: c, b
-> Seq Scan on foo (cost=0.00..431.77 rows=33334 width=8)
Optimizer: Pivotal Optimizer (GPORCA)
(11 rows)
@@ -1421,7 +1421,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="42">
+ <dxl:Plan Id="0" SpaceSize="38">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="449.305467" Rows="100000.000000" Width="8"/>
@@ -1524,9 +1524,6 @@
<dxl:HashExpr>
<dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
</dxl:HashExpr>
- <dxl:HashExpr>
- <dxl:Ident ColId="1" ColName="b" TypeMdid="0.23.1.0"/>
- </dxl:HashExpr>
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
diff --git a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnComputedCol.mdp b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnComputedCol.mdp
index fcc2ffdea0..b2db2f9b63 100644
--- a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnComputedCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnComputedCol.mdp
@@ -260,7 +260,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="51">
+ <dxl:Plan Id="0" SpaceSize="47">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="578.788946" Rows="4.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnSameNonDistrCol.mdp b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnSameNonDistrCol.mdp
index 964e4793a3..edef844ada 100644
--- a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnSameNonDistrCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-DistinctOnSameNonDistrCol.mdp
@@ -250,7 +250,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="38">
+ <dxl:Plan Id="0" SpaceSize="26">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="506.587261" Rows="4.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-GbandDistinctOnDistrCol.mdp b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-GbandDistinctOnDistrCol.mdp
index 1c8ca74b21..1c56214abf 100644
--- a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-GbandDistinctOnDistrCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-GbandDistinctOnDistrCol.mdp
@@ -250,7 +250,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="11">
+ <dxl:Plan Id="0" SpaceSize="6">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="506.587137" Rows="2.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctComputedCol.mdp b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctComputedCol.mdp
index 83a5a3aaa4..170149425a 100644
--- a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctComputedCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctComputedCol.mdp
@@ -250,7 +250,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="18">
+ <dxl:Plan Id="0" SpaceSize="16">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="458.507885" Rows="1.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctDistrCol.mdp b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctDistrCol.mdp
index 03b521331a..59cfe89652 100644
--- a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctDistrCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctDistrCol.mdp
@@ -240,7 +240,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="6">
+ <dxl:Plan Id="0" SpaceSize="4">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="446.513125" Rows="1.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctNonDistrCol.mdp b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctNonDistrCol.mdp
index 3c7623463c..145d29bdb7 100644
--- a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctNonDistrCol.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg-ScalarAgg-DistinctNonDistrCol.mdp
@@ -248,7 +248,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="19">
+ <dxl:Plan Id="0" SpaceSize="15">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="452.780838" Rows="1.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg.mdp b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg.mdp
index c4a5a65768..7997bf885a 100644
--- a/src/backend/gporca/data/dxl/minidump/ThreeStageAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ThreeStageAgg.mdp
@@ -250,7 +250,7 @@
</dxl:LogicalGet>
</dxl:LogicalGroupBy>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="42">
+ <dxl:Plan Id="0" SpaceSize="38">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="571.059435" Rows="4.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/UnionOfDQAQueries.mdp b/src/backend/gporca/data/dxl/minidump/UnionOfDQAQueries.mdp
index 024f199327..ab576fbdc0 100644
--- a/src/backend/gporca/data/dxl/minidump/UnionOfDQAQueries.mdp
+++ b/src/backend/gporca/data/dxl/minidump/UnionOfDQAQueries.mdp
@@ -394,7 +394,7 @@
</dxl:LogicalGroupBy>
</dxl:Union>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="117306">
+ <dxl:Plan Id="0" SpaceSize="92610">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="862.002353" Rows="13.000000" Width="8"/>
diff --git a/src/backend/gporca/data/dxl/minidump/WinFunc-Redistribute-Sort-CTE-Producer.mdp b/src/backend/gporca/data/dxl/minidump/WinFunc-Redistribute-Sort-CTE-Producer.mdp
index 6ba62ea670..149363cea1 100644
--- a/src/backend/gporca/data/dxl/minidump/WinFunc-Redistribute-Sort-CTE-Producer.mdp
+++ b/src/backend/gporca/data/dxl/minidump/WinFunc-Redistribute-Sort-CTE-Producer.mdp
@@ -445,7 +445,7 @@ with v as (select * from t1) select row_number() over(partition by v1.b), rank(
</dxl:LogicalWindow>
</dxl:LogicalCTEAnchor>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="14532">
+ <dxl:Plan Id="0" SpaceSize="11404">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="3141.988407" Rows="333333.333333" Width="24"/>
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalAgg.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalAgg.cpp
index 26331d5575..e8f39bc59b 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalAgg.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalAgg.cpp
@@ -243,9 +243,25 @@ CPhysicalAgg::PdsRequiredAgg(CMemoryPool *mp, CExpressionHandle &exprhdl,
{
GPOS_ASSERT(1 == ulOptReq);
GPOS_ASSERT(0 < m_pdrgpcr->Size());
- CColRefArray *grpAndDistinctCols = GPOS_NEW(mp) CColRefArray(mp);
- grpAndDistinctCols->AppendArray(m_pdrgpcr);
- grpAndDistinctCols->AppendArray(m_pdrgpcrArgDQA);
+
+ ULONG length = m_pdrgpcrArgDQA->Size();
+ CColRefArray *grpAndDistinctCols =
+ CUtils::PdrgpcrExactCopy(mp, m_pdrgpcr);
+
+ // add the distinct column to the group by at the first stage of
+ // the multi-level aggregation, and also deduplicate them.
+ CColRefSet *pcrs = GPOS_NEW(mp) CColRefSet(mp, m_pdrgpcr);
+ for (ULONG ul = 0; ul < length; ul++)
+ {
+ CColRef *colref = (*m_pdrgpcrArgDQA)[ul];
+ if (!pcrs->FMember(colref))
+ {
+ grpAndDistinctCols->Append(colref);
+ pcrs->Include(colref);
+ }
+ }
+ pcrs->Release();
+
CDistributionSpec *pdsSpec =
PdsMaximalHashed(mp, grpAndDistinctCols);
grpAndDistinctCols->Release();
diff --git a/src/test/regress/expected/gp_dqa.out b/src/test/regress/expected/gp_dqa.out
index 70d459812a..95eaa77e0c 100644
--- a/src/test/regress/expected/gp_dqa.out
+++ b/src/test/regress/expected/gp_dqa.out
@@ -2624,6 +2624,37 @@ select id, count(distinct a), avg(b), sum(c) from num_table group by grouping se
3 | 1 | 3.0000000000000000 | 3
(3 rows)
+explain (verbose on, costs off) select count(distinct b) from num_table group by c;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ Output: (count(b)), c
+ -> HashAggregate
+ Output: count(b), c
+ Group Key: num_table.c
+ -> HashAggregate
+ Output: c, b
+ Group Key: num_table.c, num_table.b
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Output: c, b
+ Hash Key: c
+ -> Streaming HashAggregate
+ Output: c, b
+ Group Key: num_table.c, num_table.b
+ -> Seq Scan on public.num_table
+ Output: id, a, b, c
+ Optimizer: Postgres-based planner
+ Settings: enable_groupagg = 'off', gp_motion_cost_per_row = '1', optimizer = 'off', optimizer_force_multistage_agg = 'on'
+(18 rows)
+
+select count(distinct b) from num_table group by c;
+ count
+-------
+ 1
+ 1
+ 1
+(3 rows)
+
reset optimizer_force_multistage_agg;
-- DQA with Agg(Intermediate Agg)
-- In PG optimizer Intermediate Agg have not support yet
diff --git a/src/test/regress/expected/gp_dqa_optimizer.out b/src/test/regress/expected/gp_dqa_optimizer.out
index 020002cf64..96c5688d8b 100644
--- a/src/test/regress/expected/gp_dqa_optimizer.out
+++ b/src/test/regress/expected/gp_dqa_optimizer.out
@@ -2796,6 +2796,43 @@ select id, count(distinct a), avg(b), sum(c) from num_table group by grouping se
3 | 1 | 3.0000000000000000 | 3
(3 rows)
+explain (verbose on, costs off) select count(distinct b) from num_table group by c;
+ QUERY PLAN
+--------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ Output: (count(b))
+ -> GroupAggregate
+ Output: count(b)
+ Group Key: num_table.c
+ -> Sort
+ Output: b, c
+ Sort Key: num_table.c
+ -> Redistribute Motion 3:3 (slice2; segments: 3)
+ Output: b, c
+ Hash Key: c
+ -> GroupAggregate
+ Output: b, c
+ Group Key: num_table.c, num_table.b
+ -> Sort
+ Output: b, c
+ Sort Key: num_table.c, num_table.b
+ -> Redistribute Motion 3:3 (slice3; segments: 3)
+ Output: b, c
+ Hash Key: c, b
+ -> Seq Scan on public.num_table
+ Output: b, c
+ Optimizer: GPORCA
+ Settings: enable_groupagg = 'off', gp_motion_cost_per_row = '1', optimizer_force_multistage_agg = 'on'
+(24 rows)
+
+select count(distinct b) from num_table group by c;
+ count
+-------
+ 1
+ 1
+ 1
+(3 rows)
+
reset optimizer_force_multistage_agg;
-- DQA with Agg(Intermediate Agg)
-- In PG optimizer Intermediate Agg have not support yet
diff --git a/src/test/regress/sql/gp_dqa.sql b/src/test/regress/sql/gp_dqa.sql
index 4b42587f49..8e1c80c60a 100644
--- a/src/test/regress/sql/gp_dqa.sql
+++ b/src/test/regress/sql/gp_dqa.sql
@@ -497,6 +497,9 @@ select count(distinct a), sum(c) from num_table;
explain select id, count(distinct a), avg(b), sum(c) from num_table group by grouping sets ((id,c));
select id, count(distinct a), avg(b), sum(c) from num_table group by grouping sets ((id,c));
+explain (verbose on, costs off) select count(distinct b) from num_table group by c;
+select count(distinct b) from num_table group by c;
+
reset optimizer_force_multistage_agg;
-- DQA with Agg(Intermediate Agg)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 05/30: Enable time-related cross-type pred stats calculation
Posted by ma...@apache.org.
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 3e8bbf1e1b930acc9c77c38eb68b85f318acd23c
Author: Jingyu Wang <wj...@vmware.com>
AuthorDate: Tue Oct 31 14:53:33 2023 -0700
Enable time-related cross-type pred stats calculation
Currently, ORCA lacks support for deriving stats for predicates that involve
dates and other time-related data types. This limitation arises from the
internal representation of these data types -- date as long int whereas other
time-related types as doubles. This design choice was made for implementation
convenience. Integers provide sufficient granularity for the date type, and
doubles are necessary for other time-related types to accommodate precision down
to microseconds. However, this choice prevents the stats derivation for
predicates involving different data types. Direct comparison is impossible when
the column is represented by int and the value by double. As of now, ORCA
detects such predicates and uses default parameters to calculate stats. This
often results in inaccurate stats and poor plan performance. This PR alters the
internal representation of date types to doubles as well, and enables stats
derivation in predicates involving different time-related data types.
MDP tests underwent LintValue to DoubleValue conversion for TypeMdid 1082 (date
type)
---
.../gporca/data/dxl/indexjoin/positive_04.mdp | 28 +-
.../gporca/data/dxl/minidump/ArrayCmpAll.mdp | 312 +--
.../gporca/data/dxl/minidump/BRINScan-Or.mdp | 6 +-
.../data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp | 100 +-
.../data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp | 100 +-
.../data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp | 100 +-
.../BitmapIndexApply-Complex-Condition.mdp | 8 +-
...tmapIndexScan-WithUnsupportedOperatorFilter.mdp | 100 +-
.../data/dxl/minidump/BitmapTableScan-AO.mdp | 100 +-
.../data/dxl/minidump/CannotPullGrpColAboveAgg.mdp | 784 +++----
.../data/dxl/minidump/CapGbCardToSelectCard.mdp | 28 +-
.../dxl/minidump/CorrelatedAntiSemiJoin-True.mdp | 24 +-
.../data/dxl/minidump/CorrelatedSemiJoin-True.mdp | 24 +-
...ndexScan-Heterogenous-EnabledDateConstraint.mdp | 20 +-
...ndexScan-Heterogenous-UnsupportedConstraint.mdp | 12 +-
...cIndexScan-Homogenous-EnabledDateConstraint.mdp | 12 +-
...cIndexScan-Homogenous-UnsupportedConstraint.mdp | 12 +-
.../data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp | 104 +-
.../dxl/minidump/EqualityPredicateOverDate.mdp | 66 +-
.../data/dxl/minidump/Equiv-HashedDistr-1.mdp | 312 +--
.../data/dxl/minidump/Equiv-HashedDistr-2.mdp | 312 +--
.../data/dxl/minidump/ExtractPredicateFromDisj.mdp | 104 +-
.../data/dxl/minidump/GroupingOnSameTblCol-1.mdp | 28 +-
.../dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp | 912 ++++----
.../dxl/minidump/HJN-Redistribute-One-Side.mdp | 1208 +++++-----
.../data/dxl/minidump/Join-Varchar-Equality.mdp | 624 ++---
.../data/dxl/minidump/JoinColWithOnlyNDV.mdp | 28 +-
.../gporca/data/dxl/minidump/JoinNDVRemain.mdp | 28 +-
.../gporca/data/dxl/minidump/LOJ_bb_mpph.mdp | 2400 ++++++++++----------
.../LOJ_convert_to_inner_with_and_predicate.mdp | 4 +-
.../LOJ_convert_to_inner_with_or_predicate.mdp | 4 +-
.../LeftOuter2InnerUnionAllAntiSemiJoin-Tpcds.mdp | 56 +-
.../dxl/minidump/PartTbl-DPE-WindowFunction.mdp | 204 +-
.../gporca/data/dxl/minidump/PartTbl-DateTime.mdp | 16 +-
.../data/dxl/minidump/PartTbl-NonConstSelect.mdp | 16 +-
.../data/dxl/minidump/PartTbl-RangeJoinPred.mdp | 16 +-
.../gporca/data/dxl/minidump/PartTbl-SQAll.mdp | 32 +-
.../gporca/data/dxl/minidump/PartTbl-SQAny.mdp | 32 +-
.../gporca/data/dxl/minidump/PartTbl-SQExists.mdp | 32 +-
.../data/dxl/minidump/PartTbl-SQNotExists.mdp | 32 +-
.../gporca/data/dxl/minidump/PartTbl-SQScalar.mdp | 32 +-
.../PartTbl-WindowFuncNoDisjunctPredPushDown.mdp | 4 +-
.../minidump/PartTbl-WindowFuncNoPredPushDown.mdp | 4 +-
.../PartTbl-WindowFuncPartialPredPushDown.mdp | 8 +-
.../minidump/PartTbl-WindowFuncPredPushDown.mdp | 8 +-
.../data/dxl/minidump/PartTbl-WindowFunction.mdp | 220 +-
.../minidump/PushSelectWithOuterRefBelowUnion.mdp | 1612 ++++++-------
.../data/dxl/minidump/Select-Over-PartTbl.mdp | 936 ++++----
.../gporca/data/dxl/minidump/SelectOnBpchar.mdp | 312 +--
.../gporca/data/dxl/minidump/SortOverStreamAgg.mdp | 104 +-
.../minidump/TPCDS-39-InnerJoin-JoinEstimate.mdp | 104 +-
.../data/dxl/minidump/TPCH-Partitioned-256GB.mdp | 328 +--
.../data/dxl/minidump/Tpcds-NonPart-Q70a.mdp | 132 +-
.../gporca/data/dxl/minidump/UnionOfDQAQueries.mdp | 24 +-
src/backend/gporca/data/dxl/minidump/retail_28.mdp | 10 +-
.../data/dxl/statistics/Basic-Statistics-Input.xml | 8 +-
.../dxl/statistics/Basic-Statistics-Output.xml | 8 +-
src/backend/gporca/data/dxl/tpch/q1.mdp | 312 +--
src/backend/gporca/data/dxl/tpch/q3.mdp | 420 ++--
.../include/naucrates/md/CMDTypeGenericGPDB.h | 15 -
.../gporca/libnaucrates/src/base/IDatum.cpp | 14 -
.../libnaucrates/src/md/CMDTypeGenericGPDB.cpp | 6 +-
.../src/operators/CDXLOperatorFactory.cpp | 2 +-
.../gporca/server/src/unittest/CTestUtils.cpp | 5 +-
.../unittest/dxl/statistics/CStatisticsTest.cpp | 4 +-
65 files changed, 6470 insertions(+), 6502 deletions(-)
diff --git a/src/backend/gporca/data/dxl/indexjoin/positive_04.mdp b/src/backend/gporca/data/dxl/indexjoin/positive_04.mdp
index 349b9afecc..14c69285f9 100644
--- a/src/backend/gporca/data/dxl/indexjoin/positive_04.mdp
+++ b/src/backend/gporca/data/dxl/indexjoin/positive_04.mdp
@@ -402,34 +402,34 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.33051926.1.1.3" Name="i_rec_end_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.666007" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" LintValue="-66"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" LintValue="-66"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" DoubleValue="-5702400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" DoubleValue="-5702400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166502" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" LintValue="299"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" LintValue="299"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" DoubleValue="25833600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" DoubleValue="25833600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166502" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" LintValue="664"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" LintValue="664"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" DoubleValue="57369600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" DoubleValue="57369600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.33051926.1.1.2" Name="i_rec_start_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.499505" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" LintValue="-796"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" LintValue="-796"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" DoubleValue="-68774400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" DoubleValue="-68774400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166502" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" LintValue="-65"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" LintValue="-65"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" DoubleValue="-5616000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" DoubleValue="-5616000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166502" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" LintValue="300"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" LintValue="300"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" DoubleValue="25920000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" DoubleValue="25920000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166502" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" LintValue="665"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" LintValue="665"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" DoubleValue="57456000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" DoubleValue="57456000000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.33052616.1.1" Name="store_sales" Rows="2880377.000000" EmptyRelation="false"/>
diff --git a/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp b/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp
index a261eaaaf3..bc3ba49574 100644
--- a/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ArrayCmpAll.mdp
@@ -401,214 +401,214 @@
<dxl:ColumnStatistics Mdid="1.17165.1.1.18" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.17165.1.1.11" Name="l_commitdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tvT//w==" LintValue="-2890"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KfX//w==" LintValue="-2775"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tvT//w==" DoubleValue="-249696000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KfX//w==" DoubleValue="-239760000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KfX//w==" LintValue="-2775"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hvX//w==" LintValue="-2682"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KfX//w==" DoubleValue="-239760000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hvX//w==" DoubleValue="-231724800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hvX//w==" LintValue="-2682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6PX//w==" LintValue="-2584"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hvX//w==" DoubleValue="-231724800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6PX//w==" DoubleValue="-223257600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6PX//w==" LintValue="-2584"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="U/b//w==" LintValue="-2477"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6PX//w==" DoubleValue="-223257600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="U/b//w==" DoubleValue="-214012800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="U/b//w==" LintValue="-2477"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="U/b//w==" DoubleValue="-214012800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gvf//w==" LintValue="-2278"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gvf//w==" DoubleValue="-196819200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gvf//w==" LintValue="-2278"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cff//w==" LintValue="-2191"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gvf//w==" DoubleValue="-196819200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cff//w==" DoubleValue="-189302400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cff//w==" LintValue="-2191"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPf//w==" LintValue="-2108"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cff//w==" DoubleValue="-189302400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPf//w==" DoubleValue="-182131200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPf//w==" LintValue="-2108"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ivj//w==" LintValue="-2014"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPf//w==" DoubleValue="-182131200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ivj//w==" DoubleValue="-174009600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ivj//w==" LintValue="-2014"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g/j//w==" LintValue="-1917"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ivj//w==" DoubleValue="-174009600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g/j//w==" DoubleValue="-165628800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g/j//w==" LintValue="-1917"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5Pj//w==" LintValue="-1820"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g/j//w==" DoubleValue="-165628800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5Pj//w==" DoubleValue="-157248000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pj//w==" LintValue="-1820"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPn//w==" LintValue="-1716"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pj//w==" DoubleValue="-157248000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPn//w==" DoubleValue="-148262400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPn//w==" LintValue="-1716"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sPn//w==" LintValue="-1616"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPn//w==" DoubleValue="-148262400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sPn//w==" DoubleValue="-139622400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sPn//w==" LintValue="-1616"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/r//w==" LintValue="-1513"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sPn//w==" DoubleValue="-139622400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/r//w==" DoubleValue="-130723200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/r//w==" LintValue="-1513"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cvr//w==" LintValue="-1422"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/r//w==" DoubleValue="-130723200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cvr//w==" DoubleValue="-122860800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cvr//w==" LintValue="-1422"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/r//w==" LintValue="-1325"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cvr//w==" DoubleValue="-122860800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/r//w==" DoubleValue="-114480000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/r//w==" LintValue="-1325"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/v//w==" LintValue="-1225"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/r//w==" DoubleValue="-114480000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/v//w==" DoubleValue="-105840000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/v//w==" LintValue="-1225"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kvv//w==" LintValue="-1134"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/v//w==" DoubleValue="-105840000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kvv//w==" DoubleValue="-97977600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kvv//w==" LintValue="-1134"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8vv//w==" LintValue="-1038"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kvv//w==" DoubleValue="-97977600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8vv//w==" DoubleValue="-89683200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8vv//w==" LintValue="-1038"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/z//w==" LintValue="-949"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8vv//w==" DoubleValue="-89683200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/z//w==" DoubleValue="-81993600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/z//w==" LintValue="-949"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPz//w==" LintValue="-852"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/z//w==" DoubleValue="-81993600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPz//w==" DoubleValue="-73612800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPz//w==" LintValue="-852"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dv3//w==" LintValue="-754"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPz//w==" DoubleValue="-73612800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dv3//w==" DoubleValue="-65145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dv3//w==" LintValue="-754"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cv3//w==" LintValue="-654"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dv3//w==" DoubleValue="-65145600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cv3//w==" DoubleValue="-56505600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cv3//w==" LintValue="-654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="z/3//w==" LintValue="-561"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cv3//w==" DoubleValue="-56505600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="z/3//w==" DoubleValue="-48470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="z/3//w==" LintValue="-561"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TP7//w==" LintValue="-436"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="z/3//w==" DoubleValue="-48470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TP7//w==" DoubleValue="-37670400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TP7//w==" LintValue="-436"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Uv7//w==" LintValue="-430"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TP7//w==" DoubleValue="-37670400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Uv7//w==" DoubleValue="-37152000000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.17165.1.1.10" Name="l_shipdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfT//w==" LintValue="-2915"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="K/X//w==" LintValue="-2773"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfT//w==" DoubleValue="-251856000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="K/X//w==" DoubleValue="-239587200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="K/X//w==" LintValue="-2773"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hfX//w==" LintValue="-2683"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="K/X//w==" DoubleValue="-239587200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hfX//w==" DoubleValue="-231811200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hfX//w==" LintValue="-2683"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6vX//w==" LintValue="-2582"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hfX//w==" DoubleValue="-231811200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6vX//w==" DoubleValue="-223084800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6vX//w==" LintValue="-2582"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Uvb//w==" LintValue="-2478"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6vX//w==" DoubleValue="-223084800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Uvb//w==" DoubleValue="-214099200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Uvb//w==" LintValue="-2478"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Uvb//w==" DoubleValue="-214099200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gvf//w==" LintValue="-2278"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gvf//w==" DoubleValue="-196819200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gvf//w==" LintValue="-2278"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/f//w==" LintValue="-2189"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gvf//w==" DoubleValue="-196819200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/f//w==" DoubleValue="-189129600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/f//w==" LintValue="-2189"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xvf//w==" LintValue="-2106"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/f//w==" DoubleValue="-189129600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xvf//w==" DoubleValue="-181958400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xvf//w==" LintValue="-2106"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JPj//w==" LintValue="-2012"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xvf//w==" DoubleValue="-181958400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JPj//w==" DoubleValue="-173836800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JPj//w==" LintValue="-2012"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPj//w==" LintValue="-1916"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JPj//w==" DoubleValue="-173836800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPj//w==" DoubleValue="-165542400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPj//w==" LintValue="-1916"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5Pj//w==" LintValue="-1820"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPj//w==" DoubleValue="-165542400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5Pj//w==" DoubleValue="-157248000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pj//w==" LintValue="-1820"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvn//w==" LintValue="-1714"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pj//w==" DoubleValue="-157248000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvn//w==" DoubleValue="-148089600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvn//w==" LintValue="-1714"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sfn//w==" LintValue="-1615"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvn//w==" DoubleValue="-148089600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sfn//w==" DoubleValue="-139536000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sfn//w==" LintValue="-1615"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPr//w==" LintValue="-1512"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sfn//w==" DoubleValue="-139536000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPr//w==" DoubleValue="-130636800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPr//w==" LintValue="-1512"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cvr//w==" LintValue="-1422"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPr//w==" DoubleValue="-130636800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cvr//w==" DoubleValue="-122860800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cvr//w==" LintValue="-1422"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1Pr//w==" LintValue="-1324"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cvr//w==" DoubleValue="-122860800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1Pr//w==" DoubleValue="-114393600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1Pr//w==" LintValue="-1324"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="M/v//w==" LintValue="-1229"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1Pr//w==" DoubleValue="-114393600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="M/v//w==" DoubleValue="-106185600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="M/v//w==" LintValue="-1229"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvv//w==" LintValue="-1130"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="M/v//w==" DoubleValue="-106185600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvv//w==" DoubleValue="-97632000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvv//w==" LintValue="-1130"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/v//w==" LintValue="-1037"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvv//w==" DoubleValue="-97632000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/v//w==" DoubleValue="-89596800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/v//w==" LintValue="-1037"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvz//w==" LintValue="-946"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/v//w==" DoubleValue="-89596800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvz//w==" DoubleValue="-81734400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvz//w==" LintValue="-946"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="r/z//w==" LintValue="-849"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvz//w==" DoubleValue="-81734400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="r/z//w==" DoubleValue="-73353600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="r/z//w==" LintValue="-849"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/3//w==" LintValue="-753"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="r/z//w==" DoubleValue="-73353600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/3//w==" DoubleValue="-65059200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/3//w==" LintValue="-753"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/3//w==" LintValue="-653"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/3//w==" DoubleValue="-65059200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/3//w==" DoubleValue="-56419200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/3//w==" LintValue="-653"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0f3//w==" LintValue="-559"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/3//w==" DoubleValue="-56419200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0f3//w==" DoubleValue="-48297600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0f3//w==" LintValue="-559"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bv7//w==" LintValue="-402"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0f3//w==" DoubleValue="-48297600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bv7//w==" DoubleValue="-34732800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bv7//w==" LintValue="-402"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cv7//w==" LintValue="-398"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bv7//w==" DoubleValue="-34732800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cv7//w==" DoubleValue="-34387200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.17165.1.1.3" Name="l_linenumber" Width="4.000000">
@@ -765,108 +765,108 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.17165.1.1.12" Name="l_receiptdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nvT//w==" LintValue="-2914"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/X//w==" LintValue="-2757"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nvT//w==" DoubleValue="-251769600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/X//w==" DoubleValue="-238204800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/X//w==" LintValue="-2757"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lfX//w==" LintValue="-2667"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/X//w==" DoubleValue="-238204800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lfX//w==" DoubleValue="-230428800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lfX//w==" LintValue="-2667"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fX//w==" LintValue="-2567"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lfX//w==" DoubleValue="-230428800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fX//w==" DoubleValue="-221788800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fX//w==" LintValue="-2567"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvb//w==" LintValue="-2462"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fX//w==" DoubleValue="-221788800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvb//w==" DoubleValue="-212716800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvb//w==" LintValue="-2462"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yPb//w==" LintValue="-2360"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvb//w==" DoubleValue="-212716800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yPb//w==" DoubleValue="-203904000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yPb//w==" LintValue="-2360"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KPf//w==" LintValue="-2264"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yPb//w==" DoubleValue="-203904000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KPf//w==" DoubleValue="-195609600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KPf//w==" LintValue="-2264"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvf//w==" LintValue="-2174"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KPf//w==" DoubleValue="-195609600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvf//w==" DoubleValue="-187833600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvf//w==" LintValue="-2174"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1ff//w==" LintValue="-2091"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvf//w==" DoubleValue="-187833600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1ff//w==" DoubleValue="-180662400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1ff//w==" LintValue="-2091"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mfj//w==" LintValue="-1999"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1ff//w==" DoubleValue="-180662400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mfj//w==" DoubleValue="-172713600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mfj//w==" LintValue="-1999"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/j//w==" LintValue="-1901"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mfj//w==" DoubleValue="-172713600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/j//w==" DoubleValue="-164246400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/j//w==" LintValue="-1901"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pj//w==" LintValue="-1804"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/j//w==" DoubleValue="-164246400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pj//w==" DoubleValue="-155865600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pj//w==" LintValue="-1804"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/n//w==" LintValue="-1697"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pj//w==" DoubleValue="-155865600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/n//w==" DoubleValue="-146620800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/n//w==" LintValue="-1697"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/n//w==" LintValue="-1601"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/n//w==" DoubleValue="-146620800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/n//w==" DoubleValue="-138326400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/n//w==" LintValue="-1601"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvr//w==" LintValue="-1498"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/n//w==" DoubleValue="-138326400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvr//w==" DoubleValue="-129427200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvr//w==" LintValue="-1498"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvr//w==" LintValue="-1406"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvr//w==" DoubleValue="-129427200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvr//w==" DoubleValue="-121478400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvr//w==" LintValue="-1406"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4/r//w==" LintValue="-1309"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvr//w==" DoubleValue="-121478400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4/r//w==" DoubleValue="-113097600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4/r//w==" LintValue="-1309"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RPv//w==" LintValue="-1212"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4/r//w==" DoubleValue="-113097600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RPv//w==" DoubleValue="-104716800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RPv//w==" LintValue="-1212"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="o/v//w==" LintValue="-1117"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RPv//w==" DoubleValue="-104716800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="o/v//w==" DoubleValue="-96508800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="o/v//w==" LintValue="-1117"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="A/z//w==" LintValue="-1021"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="o/v//w==" DoubleValue="-96508800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="A/z//w==" DoubleValue="-88214400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="A/z//w==" LintValue="-1021"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xvz//w==" LintValue="-930"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="A/z//w==" DoubleValue="-88214400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xvz//w==" DoubleValue="-80352000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xvz//w==" LintValue="-930"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfz//w==" LintValue="-835"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xvz//w==" DoubleValue="-80352000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfz//w==" DoubleValue="-72144000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfz//w==" LintValue="-835"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="If3//w==" LintValue="-735"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfz//w==" DoubleValue="-72144000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="If3//w==" DoubleValue="-63504000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="If3//w==" LintValue="-735"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gf3//w==" LintValue="-639"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="If3//w==" DoubleValue="-63504000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gf3//w==" DoubleValue="-55209600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gf3//w==" LintValue="-639"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4v3//w==" LintValue="-542"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gf3//w==" DoubleValue="-55209600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4v3//w==" DoubleValue="-46828800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4v3//w==" LintValue="-542"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hP7//w==" LintValue="-380"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4v3//w==" DoubleValue="-46828800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hP7//w==" DoubleValue="-32832000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hP7//w==" LintValue="-380"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jP7//w==" LintValue="-372"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hP7//w==" DoubleValue="-32832000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jP7//w==" DoubleValue="-32140800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.17165.1.1.5" Name="l_extendedprice" Width="10.000000">
diff --git a/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp b/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp
index 81d19e291f..e51b840f13 100644
--- a/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BRINScan-Or.mdp
@@ -367,7 +367,7 @@
</dxl:And>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="4" ColName="dt" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="+B0AAA==" LintValue="7672"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="+B0AAA==" DoubleValue="662860800000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator=">" OperatorMdid="0.1324.1.0">
<dxl:Ident ColId="5" ColName="ts" TypeMdid="0.1184.1.0"/>
@@ -465,7 +465,7 @@
</dxl:And>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="3" ColName="dt" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="+B0AAA==" LintValue="7672"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="+B0AAA==" DoubleValue="662860800000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator=">" OperatorMdid="0.1324.1.0">
<dxl:Ident ColId="4" ColName="ts" TypeMdid="0.1184.1.0"/>
@@ -497,7 +497,7 @@
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="3" ColName="dt" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="+B0AAA==" LintValue="7672"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="+B0AAA==" DoubleValue="662860800000000.000000"/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:IndexDescriptor Mdid="0.180254.1.0" IndexName="foo_brin"/>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp
index dd0a190814..abf62685e9 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree2.mdp
@@ -290,104 +290,104 @@ explain select * from t where c1 = 10 or (c2 = '4' and c5> 100);
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.1632545.1.1.2" Name="c3" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" LintValue="3654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" DoubleValue="315705600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" LintValue="3753"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" DoubleValue="324259200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:Type Mdid="0.1082.1.0" Name="date" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp
index 902de43f0f..3c019fa7db 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOp-DeepTree3.mdp
@@ -303,104 +303,104 @@ explain select * from t where (c1 = 10 and c5 < 20) or (c2 = '4' and c5> 100);
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.1632545.1.1.2" Name="c3" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" LintValue="3654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" DoubleValue="315705600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" LintValue="3753"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" DoubleValue="324259200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:Type Mdid="0.1082.1.0" Name="date" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp b/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp
index b7c1a6e0e2..a3bbc1b923 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapBoolOr-BoolColumn.mdp
@@ -142,104 +142,104 @@ explain select * from t where c2 = 'HEAP' or c4 = 't' or c5 = 'f';
<dxl:ColumnStatistics Mdid="1.21849009.1.1.10" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.21849009.1.1.2" Name="c3" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" LintValue="3654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" DoubleValue="315705600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" LintValue="3753"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" DoubleValue="324259200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.21849009.1.1.3" Name="c4" Width="1.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
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 34e49e726b..cf93e13c11 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexApply-Complex-Condition.mdp
@@ -219,8 +219,8 @@ EXPLAIN SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c3 > i1.c3 or t2.c1
<dxl:ColumnStatistics Mdid="1.31264057.1.1.3" Name="c4" Width="0.000000" NullFreq="1.000000" NdvRemain="2.000000" FreqRemain="1.000000"/>
<dxl:ColumnStatistics Mdid="1.31264057.1.1.2" Name="c3" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="1.000000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:RelationStatistics Mdid="2.31264029.1.1" Name="t" Rows="1.000000" EmptyRelation="false"/>
@@ -332,8 +332,8 @@ EXPLAIN SELECT * FROM s i1, t t2 where t2.c2 = i1.c2 and t2.c3 > i1.c3 or t2.c1
<dxl:ColumnStatistics Mdid="1.31264029.1.1.3" Name="c4" Width="0.000000" NullFreq="1.000000" NdvRemain="2.000000" FreqRemain="1.000000"/>
<dxl:ColumnStatistics Mdid="1.31264029.1.1.2" Name="c3" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="1.000000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.31264057.1.1.9" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp b/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp
index 3f71865671..202b1a3240 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapIndexScan-WithUnsupportedOperatorFilter.mdp
@@ -83,104 +83,104 @@ inferred from the second operator (c4 = 'f')
<dxl:ColumnStatistics Mdid="1.22226519.1.1.10" Name="xmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.22226519.1.1.2" Name="c3" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" LintValue="3654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" DoubleValue="315705600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" LintValue="3753"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" DoubleValue="324259200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.22226519.1.1.3" Name="c4" Width="1.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
diff --git a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp
index 431b5454d5..034a108320 100644
--- a/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp
+++ b/src/backend/gporca/data/dxl/minidump/BitmapTableScan-AO.mdp
@@ -508,104 +508,104 @@ explain select * from t_ao where c2 = 'HEAP';
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.21846751.1.1.2" Name="c3" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" LintValue="3654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rg4AAA==" DoubleValue="315705600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" LintValue="3658"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sg4AAA==" DoubleValue="316051200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" LintValue="3662"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tg4AAA==" DoubleValue="316396800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" LintValue="3666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ug4AAA==" DoubleValue="316742400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" LintValue="3670"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vg4AAA==" DoubleValue="317088000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" LintValue="3674"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wg4AAA==" DoubleValue="317433600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" LintValue="3678"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xg4AAA==" DoubleValue="317779200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" LintValue="3682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yg4AAA==" DoubleValue="318124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" LintValue="3686"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zg4AAA==" DoubleValue="318470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" LintValue="3690"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ag4AAA==" DoubleValue="318816000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" LintValue="3694"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bg4AAA==" DoubleValue="319161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" LintValue="3698"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cg4AAA==" DoubleValue="319507200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" LintValue="3702"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dg4AAA==" DoubleValue="319852800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" LintValue="3706"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eg4AAA==" DoubleValue="320198400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" LintValue="3710"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fg4AAA==" DoubleValue="320544000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" LintValue="3714"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gg4AAA==" DoubleValue="320889600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" LintValue="3718"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hg4AAA==" DoubleValue="321235200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" LintValue="3722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ig4AAA==" DoubleValue="321580800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" LintValue="3726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jg4AAA==" DoubleValue="321926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" LintValue="3730"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kg4AAA==" DoubleValue="322272000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" LintValue="3734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lg4AAA==" DoubleValue="322617600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" LintValue="3738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mg4AAA==" DoubleValue="322963200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" LintValue="3742"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ng4AAA==" DoubleValue="323308800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" LintValue="3746"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="og4AAA==" DoubleValue="323654400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.040000" DistinctValues="4.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" LintValue="3750"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" LintValue="3753"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pg4AAA==" DoubleValue="324000000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qQ4AAA==" DoubleValue="324259200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:GPDBScalarOp Mdid="0.98.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true">
diff --git a/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp b/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp
index cece5c7b8b..503b2fe718 100644
--- a/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CannotPullGrpColAboveAgg.mdp
@@ -730,212 +730,212 @@ The SQL along with the DDL are in TINC repo. In the aggregates directory under q
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.15754853.1.1.9" Name="guelt_ab" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.002157" DistinctValues="5.250000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VHH//w==" LintValue="-36524"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SAQAAA==" LintValue="1096"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VHH//w==" DoubleValue="-3155673600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SAQAAA==" DoubleValue="94694400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.109434" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SAQAAA==" LintValue="1096"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SAQAAA==" LintValue="1096"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SAQAAA==" DoubleValue="94694400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SAQAAA==" DoubleValue="94694400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001077" DistinctValues="1.622777">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="SAQAAA==" LintValue="1096"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tQUAAA==" LintValue="1461"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="SAQAAA==" DoubleValue="94694400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tQUAAA==" DoubleValue="126230400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005302" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tQUAAA==" LintValue="1461"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tQUAAA==" LintValue="1461"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tQUAAA==" DoubleValue="126230400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tQUAAA==" DoubleValue="126230400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001080" DistinctValues="1.627223">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="tQUAAA==" LintValue="1461"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IwcAAA==" LintValue="1827"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="tQUAAA==" DoubleValue="126230400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IwcAAA==" DoubleValue="157852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019331" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IwcAAA==" LintValue="1827"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="IwcAAA==" LintValue="1827"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IwcAAA==" DoubleValue="157852800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="IwcAAA==" DoubleValue="157852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000892" DistinctValues="1.344521">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="IwcAAA==" LintValue="1827"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ugcAAA==" LintValue="1978"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="IwcAAA==" DoubleValue="157852800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ugcAAA==" DoubleValue="170899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002320" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ugcAAA==" LintValue="1978"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ugcAAA==" LintValue="1978"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ugcAAA==" DoubleValue="170899200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ugcAAA==" DoubleValue="170899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001265" DistinctValues="1.905479">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ugcAAA==" LintValue="1978"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kAgAAA==" LintValue="2192"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ugcAAA==" DoubleValue="170899200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kAgAAA==" DoubleValue="189388800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.048310" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kAgAAA==" LintValue="2192"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kAgAAA==" LintValue="2192"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kAgAAA==" DoubleValue="189388800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kAgAAA==" DoubleValue="189388800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001079" DistinctValues="1.625000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kAgAAA==" LintValue="2192"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/QkAAA==" LintValue="2557"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kAgAAA==" DoubleValue="189388800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/QkAAA==" DoubleValue="220924800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002614" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/QkAAA==" LintValue="2557"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="/QkAAA==" LintValue="2557"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/QkAAA==" DoubleValue="220924800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="/QkAAA==" DoubleValue="220924800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001079" DistinctValues="1.625000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="/QkAAA==" LintValue="2557"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="agsAAA==" LintValue="2922"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="/QkAAA==" DoubleValue="220924800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="agsAAA==" DoubleValue="252460800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038957" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="agsAAA==" LintValue="2922"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="agsAAA==" LintValue="2922"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="agsAAA==" DoubleValue="252460800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="agsAAA==" DoubleValue="252460800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001073" DistinctValues="1.118852">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="agsAAA==" LintValue="2922"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IAwAAA==" LintValue="3104"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="agsAAA==" DoubleValue="252460800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IAwAAA==" DoubleValue="268185600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001620" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IAwAAA==" LintValue="3104"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="IAwAAA==" LintValue="3104"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IAwAAA==" DoubleValue="268185600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="IAwAAA==" DoubleValue="268185600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000183" DistinctValues="0.190574">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="IAwAAA==" LintValue="3104"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PwwAAA==" LintValue="3135"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="IAwAAA==" DoubleValue="268185600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PwwAAA==" DoubleValue="270864000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002357" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PwwAAA==" LintValue="3135"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PwwAAA==" LintValue="3135"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PwwAAA==" DoubleValue="270864000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PwwAAA==" DoubleValue="270864000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000902" DistinctValues="0.940574">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PwwAAA==" LintValue="3135"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2AwAAA==" LintValue="3288"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PwwAAA==" DoubleValue="270864000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2AwAAA==" DoubleValue="284083200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015649" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2AwAAA==" LintValue="3288"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2AwAAA==" LintValue="3288"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2AwAAA==" DoubleValue="284083200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2AwAAA==" DoubleValue="284083200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000535" DistinctValues="0.557877">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2AwAAA==" LintValue="3288"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jQ0AAA==" LintValue="3469"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2AwAAA==" DoubleValue="284083200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jQ0AAA==" DoubleValue="299721600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002136" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jQ0AAA==" LintValue="3469"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jQ0AAA==" LintValue="3469"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jQ0AAA==" DoubleValue="299721600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jQ0AAA==" DoubleValue="299721600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000544" DistinctValues="0.567123">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jQ0AAA==" LintValue="3469"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jQ0AAA==" DoubleValue="299721600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007990" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001079" DistinctValues="1.125000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sg8AAA==" LintValue="4018"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sg8AAA==" DoubleValue="347155200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.477539" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sg8AAA==" LintValue="4018"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sg8AAA==" LintValue="4018"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sg8AAA==" DoubleValue="347155200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sg8AAA==" DoubleValue="347155200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001430" DistinctValues="2.154696">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sg8AAA==" LintValue="4018"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KhAAAA==" LintValue="4138"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sg8AAA==" DoubleValue="347155200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KhAAAA==" DoubleValue="357523200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003719" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KhAAAA==" LintValue="4138"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KhAAAA==" LintValue="4138"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KhAAAA==" DoubleValue="357523200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KhAAAA==" DoubleValue="357523200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000727" DistinctValues="1.095304">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="KhAAAA==" LintValue="4138"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZxAAAA==" LintValue="4199"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="KhAAAA==" DoubleValue="357523200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZxAAAA==" DoubleValue="362793600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.042787" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxAAAA==" LintValue="4199"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxAAAA==" LintValue="4199"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxAAAA==" DoubleValue="362793600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxAAAA==" DoubleValue="362793600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002157" DistinctValues="4.250000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZxAAAA==" LintValue="4199"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HxEAAA==" LintValue="4383"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZxAAAA==" DoubleValue="362793600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HxEAAA==" DoubleValue="378691200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.114110" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" LintValue="4383"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" LintValue="4383"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" DoubleValue="378691200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" DoubleValue="378691200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001622" DistinctValues="2.444215">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HxEAAA==" LintValue="4383"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HxEAAA==" DoubleValue="378691200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006849" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000535" DistinctValues="0.805785">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002725" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000537" DistinctValues="0.560204">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1REAAA==" LintValue="4565"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1REAAA==" DoubleValue="394416000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.031298" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" LintValue="4565"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" LintValue="4565"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" DoubleValue="394416000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" DoubleValue="394416000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000273" DistinctValues="0.284694">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="1REAAA==" LintValue="4565"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9BEAAA==" LintValue="4596"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="1REAAA==" DoubleValue="394416000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9BEAAA==" DoubleValue="397094400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004234" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9BEAAA==" LintValue="4596"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9BEAAA==" LintValue="4596"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9BEAAA==" DoubleValue="397094400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9BEAAA==" DoubleValue="397094400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001347" DistinctValues="1.405102">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9BEAAA==" LintValue="4596"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9BEAAA==" DoubleValue="397094400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017785" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000319" DistinctValues="0.148026">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5xIAAA==" LintValue="4839"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5xIAAA==" DoubleValue="418089600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002246" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" LintValue="4839"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" LintValue="4839"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" DoubleValue="418089600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" DoubleValue="418089600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000216" DistinctValues="0.100329">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5xIAAA==" LintValue="4839"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5xIAAA==" DoubleValue="418089600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004860" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000759" DistinctValues="0.351974">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008064" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000209" DistinctValues="0.097039">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRQAAA==" LintValue="5173"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRQAAA==" DoubleValue="446947200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001878" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRQAAA==" LintValue="5173"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="NRQAAA==" LintValue="5173"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRQAAA==" DoubleValue="446947200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="NRQAAA==" DoubleValue="446947200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000653" DistinctValues="0.302632">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="NRQAAA==" LintValue="5173"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7RQAAA==" LintValue="5357"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="NRQAAA==" DoubleValue="446947200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7RQAAA==" DoubleValue="462844800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002157" DistinctValues="5.250000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7RQAAA==" LintValue="5357"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7RQAAA==" DoubleValue="462844800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.15754853.1.1.8" Name="org_elem_nr" Width="9.000000" NullFreq="0.000000" NdvRemain="68.000000" FreqRemain="0.261249" ColStatsMissing="false">
@@ -1395,92 +1395,92 @@ The SQL along with the DDL are in TINC repo. In the aggregates directory under q
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.15754853.1.1.10" Name="guelt_bis" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.003163" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" LintValue="4383"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" LintValue="4383"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" DoubleValue="378691200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HxEAAA==" DoubleValue="378691200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000074" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" LintValue="4414"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" LintValue="4414"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" DoubleValue="381369600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" DoubleValue="381369600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000920" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000037" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001251" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" LintValue="4565"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" LintValue="4565"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" DoubleValue="394416000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="1REAAA==" DoubleValue="394416000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000074" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="MRIAAA==" LintValue="4657"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="MRIAAA==" LintValue="4657"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="MRIAAA==" DoubleValue="402364800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="MRIAAA==" DoubleValue="402364800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000625" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jBIAAA==" LintValue="4748"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jBIAAA==" LintValue="4748"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jBIAAA==" DoubleValue="410227200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jBIAAA==" DoubleValue="410227200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001545" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004414" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" LintValue="4839"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" LintValue="4839"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" DoubleValue="418089600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5xIAAA==" DoubleValue="418089600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000037" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BRMAAA==" LintValue="4869"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="BRMAAA==" LintValue="4869"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BRMAAA==" DoubleValue="420681600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="BRMAAA==" DoubleValue="420681600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000625" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000368" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QhMAAA==" LintValue="4930"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QhMAAA==" LintValue="4930"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QhMAAA==" DoubleValue="425952000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QhMAAA==" DoubleValue="425952000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000037" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gBMAAA==" LintValue="4992"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gBMAAA==" LintValue="4992"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gBMAAA==" DoubleValue="431308800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gBMAAA==" DoubleValue="431308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003605" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+RMAAA==" LintValue="5113"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+RMAAA==" LintValue="5113"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+RMAAA==" DoubleValue="441763200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+RMAAA==" DoubleValue="441763200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001140" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000809" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VBQAAA==" LintValue="5204"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VBQAAA==" LintValue="5204"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VBQAAA==" DoubleValue="449625600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VBQAAA==" DoubleValue="449625600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000920" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rxQAAA==" LintValue="5295"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rxQAAA==" LintValue="5295"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rxQAAA==" DoubleValue="457488000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rxQAAA==" DoubleValue="457488000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000478" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7RQAAA==" LintValue="5357"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7RQAAA==" LintValue="5357"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7RQAAA==" DoubleValue="462844800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7RQAAA==" DoubleValue="462844800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000368" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="CxUAAA==" LintValue="5387"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="CxUAAA==" LintValue="5387"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="CxUAAA==" DoubleValue="465436800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="CxUAAA==" DoubleValue="465436800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000441" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhUAAA==" LintValue="5478"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhUAAA==" LintValue="5478"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhUAAA==" DoubleValue="473299200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhUAAA==" DoubleValue="473299200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000441" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.977629" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" LintValue="2921939"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" LintValue="2921939"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" DoubleValue="252455529600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" DoubleValue="252455529600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.15754853.1.1.3" Name="name_german" Width="57.000000" NullFreq="0.000000" NdvRemain="1567.000000" FreqRemain="0.971942" ColStatsMissing="false">
@@ -1951,494 +1951,494 @@ The SQL along with the DDL are in TINC repo. In the aggregates directory under q
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.15754853.1.1.21" Name="verarb_bis" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.003307" DistinctValues="0.289655">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" LintValue="4414"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" DoubleValue="381369600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.025407" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015874" DistinctValues="1.390345">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="WxEAAA==" LintValue="4443"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="WxEAAA==" DoubleValue="383875200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="WxEAAA==" LintValue="4443"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="WxEAAA==" DoubleValue="383875200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023603" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023050" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vBEAAA==" LintValue="4540"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vBEAAA==" DoubleValue="392256000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009933" DistinctValues="0.870000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vBEAAA==" LintValue="4540"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vBEAAA==" DoubleValue="392256000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022167" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009248" DistinctValues="0.810000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9BEAAA==" LintValue="4596"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9BEAAA==" DoubleValue="397094400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003094" DistinctValues="0.270968">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9BEAAA==" LintValue="4596"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9BEAAA==" DoubleValue="397094400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022608" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016087" DistinctValues="1.409032">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ExIAAA==" LintValue="4627"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ExIAAA==" DoubleValue="399772800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ExIAAA==" LintValue="4627"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ExIAAA==" DoubleValue="399772800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023271" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022498" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008563" DistinctValues="0.446429">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bhIAAA==" LintValue="4718"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bhIAAA==" DoubleValue="407635200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012188" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bhIAAA==" LintValue="4718"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bhIAAA==" LintValue="4718"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bhIAAA==" DoubleValue="407635200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bhIAAA==" DoubleValue="407635200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001713" DistinctValues="0.089286">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bhIAAA==" LintValue="4718"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bhIAAA==" DoubleValue="407635200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022056" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008906" DistinctValues="0.464286">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003712" DistinctValues="0.325161">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" LintValue="4749"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jRIAAA==" DoubleValue="410313600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022461" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015469" DistinctValues="1.354839">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rBIAAA==" LintValue="4780"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rBIAAA==" DoubleValue="412992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002906" DistinctValues="0.254545">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rBIAAA==" LintValue="4780"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rBIAAA==" DoubleValue="412992000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024155" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016275" DistinctValues="1.425455">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zRIAAA==" LintValue="4813"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zRIAAA==" DoubleValue="415843200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zRIAAA==" LintValue="4813"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zRIAAA==" DoubleValue="415843200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023787" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017634" DistinctValues="0.919355">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012372" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001547" DistinctValues="0.080645">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KRMAAA==" LintValue="4905"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KRMAAA==" DoubleValue="423792000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KRMAAA==" LintValue="4905"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ShMAAA==" LintValue="4938"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KRMAAA==" DoubleValue="423792000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ShMAAA==" DoubleValue="426643200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012777" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ShMAAA==" LintValue="4938"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ShMAAA==" LintValue="4938"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ShMAAA==" DoubleValue="426643200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ShMAAA==" DoubleValue="426643200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009946" DistinctValues="0.518519">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ShMAAA==" LintValue="4938"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ShMAAA==" DoubleValue="426643200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009235" DistinctValues="0.481481">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gBMAAA==" LintValue="4992"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gBMAAA==" DoubleValue="431308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gBMAAA==" LintValue="4992"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pBMAAA==" LintValue="5028"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gBMAAA==" DoubleValue="431308800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pBMAAA==" DoubleValue="434419200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010462" DistinctValues="0.916364">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pBMAAA==" LintValue="5028"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pBMAAA==" DoubleValue="434419200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022093" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008719" DistinctValues="0.763636">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2xMAAA==" LintValue="5083"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2xMAAA==" DoubleValue="439171200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016071" DistinctValues="1.407568">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2xMAAA==" LintValue="5083"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2xMAAA==" DoubleValue="439171200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013072" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003110" DistinctValues="0.272432">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022756" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015984" DistinctValues="0.833333">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021725" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003197" DistinctValues="0.166667">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021320" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OhQAAA==" LintValue="5178"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OhQAAA==" DoubleValue="447379200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009933" DistinctValues="0.870000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OhQAAA==" LintValue="5178"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OhQAAA==" DoubleValue="447379200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023639" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009248" DistinctValues="0.810000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="chQAAA==" LintValue="5234"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="chQAAA==" DoubleValue="452217600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003712" DistinctValues="0.325161">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="chQAAA==" LintValue="5234"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="chQAAA==" DoubleValue="452217600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021320" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015469" DistinctValues="1.354839">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kRQAAA==" LintValue="5265"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kRQAAA==" DoubleValue="454896000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kRQAAA==" LintValue="5265"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kRQAAA==" DoubleValue="454896000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024597" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023050" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019181" DistinctValues="1.000000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="05UsAA==" LintValue="2921939"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="05UsAA==" DoubleValue="252455529600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012814" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" LintValue="2921939"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" LintValue="2921939"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" DoubleValue="252455529600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="05UsAA==" DoubleValue="252455529600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.15754853.1.1.20" Name="verarb_ab" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.015348" DistinctValues="1.344000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KhEAAA==" LintValue="4394"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PhEAAA==" LintValue="4414"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KhEAAA==" DoubleValue="379641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PhEAAA==" DoubleValue="381369600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012703" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" LintValue="4414"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" LintValue="4414"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" DoubleValue="381369600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PhEAAA==" DoubleValue="381369600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003837" DistinctValues="0.336000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PhEAAA==" LintValue="4414"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PhEAAA==" DoubleValue="381369600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024008" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" LintValue="4419"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QxEAAA==" DoubleValue="381801600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002558" DistinctValues="0.224000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" LintValue="4474"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ehEAAA==" DoubleValue="386553600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022719" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016627" DistinctValues="1.456000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" LintValue="4478"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fhEAAA==" DoubleValue="386899200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003713" DistinctValues="0.325161">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" LintValue="4504"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mBEAAA==" DoubleValue="389145600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023566" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015472" DistinctValues="1.354839">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" LintValue="4510"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="txEAAA==" LintValue="4535"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nhEAAA==" DoubleValue="389664000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="txEAAA==" DoubleValue="391824000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="txEAAA==" LintValue="4535"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="txEAAA==" DoubleValue="391824000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023014" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" LintValue="4569"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2REAAA==" DoubleValue="394761600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022792" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" LintValue="4601"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+REAAA==" DoubleValue="397526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023492" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" LintValue="4661"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="NRIAAA==" DoubleValue="402710400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024560" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" LintValue="4693"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VRIAAA==" DoubleValue="405475200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021835" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" LintValue="4723"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="cxIAAA==" DoubleValue="408067200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022461" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009050" DistinctValues="0.471698">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" LintValue="4755"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rBIAAA==" LintValue="4780"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kxIAAA==" DoubleValue="410832000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rBIAAA==" DoubleValue="412992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012667" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rBIAAA==" LintValue="4780"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rBIAAA==" LintValue="4780"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rBIAAA==" DoubleValue="412992000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rBIAAA==" DoubleValue="412992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001810" DistinctValues="0.094340">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rBIAAA==" LintValue="4780"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rBIAAA==" DoubleValue="412992000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022792" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008326" DistinctValues="0.433962">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" LintValue="4785"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yBIAAA==" LintValue="4808"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sRIAAA==" DoubleValue="413424000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yBIAAA==" DoubleValue="415411200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yBIAAA==" LintValue="4808"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yBIAAA==" DoubleValue="415411200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022461" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" LintValue="4843"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6xIAAA==" DoubleValue="418435200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" LintValue="4900"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RRMAAA==" LintValue="4933"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JBMAAA==" DoubleValue="423360000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RRMAAA==" DoubleValue="426211200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012777" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RRMAAA==" LintValue="4933"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RRMAAA==" LintValue="4933"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RRMAAA==" DoubleValue="426211200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RRMAAA==" DoubleValue="426211200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RRMAAA==" LintValue="4933"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RRMAAA==" DoubleValue="426211200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021393" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" LintValue="4966"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nhMAAA==" LintValue="5022"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZhMAAA==" DoubleValue="429062400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nhMAAA==" DoubleValue="433900800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nhMAAA==" LintValue="5022"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nhMAAA==" DoubleValue="433900800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022019" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009935" DistinctValues="0.517857">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" LintValue="5058"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3xMAAA==" LintValue="5087"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="whMAAA==" DoubleValue="437011200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3xMAAA==" DoubleValue="439516800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013072" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3xMAAA==" LintValue="5087"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3xMAAA==" LintValue="5087"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3xMAAA==" DoubleValue="439516800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3xMAAA==" DoubleValue="439516800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009250" DistinctValues="0.482143">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3xMAAA==" LintValue="5087"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3xMAAA==" DoubleValue="439516800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003713" DistinctValues="0.325161">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" LintValue="5114"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+hMAAA==" DoubleValue="441849600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021577" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015472" DistinctValues="1.354839">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" LintValue="5120"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ABQAAA==" DoubleValue="442368000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021725" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003426" DistinctValues="0.178571">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" LintValue="5145"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="GRQAAA==" DoubleValue="444528000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023014" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015760" DistinctValues="0.821429">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" LintValue="5150"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRQAAA==" LintValue="5173"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HhQAAA==" DoubleValue="444960000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NRQAAA==" DoubleValue="446947200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="2.680000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRQAAA==" LintValue="5173"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NRQAAA==" DoubleValue="446947200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023603" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" LintValue="5207"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VxQAAA==" DoubleValue="449884800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022424" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" LintValue="5240"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="eBQAAA==" DoubleValue="452736000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024855" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" LintValue="5298"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="shQAAA==" DoubleValue="457747200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022019" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019186" DistinctValues="1.000000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" LintValue="5331"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8BQAAA==" LintValue="5360"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0xQAAA==" DoubleValue="460598400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8BQAAA==" DoubleValue="463104000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012814" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8BQAAA==" LintValue="5360"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8BQAAA==" LintValue="5360"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8BQAAA==" DoubleValue="463104000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8BQAAA==" DoubleValue="463104000000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.15754853.1.1.13" Name="fid_kst" Width="2.000000" NullFreq="0.110907" NdvRemain="21.090909" FreqRemain="0.026520" ColStatsMissing="false">
diff --git a/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp b/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp
index 044cc05731..cc679ea391 100644
--- a/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CapGbCardToSelectCard.mdp
@@ -10654,34 +10654,34 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.25160.1.1.3" Name="i_rec_end_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.669176" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" LintValue="-66"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" LintValue="-66"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" DoubleValue="-5702400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" DoubleValue="-5702400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.165623" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" LintValue="299"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" LintValue="299"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" DoubleValue="25833600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" DoubleValue="25833600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.165201" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" LintValue="664"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" LintValue="664"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" DoubleValue="57369600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" DoubleValue="57369600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.25160.1.1.2" Name="i_rec_start_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.500902" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" LintValue="-796"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" LintValue="-796"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" DoubleValue="-68774400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" DoubleValue="-68774400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.165201" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" LintValue="-65"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" LintValue="-65"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" DoubleValue="-5616000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" DoubleValue="-5616000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.164855" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" LintValue="300"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" LintValue="300"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" DoubleValue="25920000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" DoubleValue="25920000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.169041" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" LintValue="665"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" LintValue="665"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" DoubleValue="57456000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" DoubleValue="57456000000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
</dxl:Metadata>
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp
index 1b0b304a2e..58a9932993 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedAntiSemiJoin-True.mdp
@@ -662,28 +662,28 @@ SELECT pn, cn, vn FROM sale s WHERE NOT EXISTS (SELECT * FROM customer WHERE NOT
<dxl:ColumnStatistics Mdid="1.29191993.1.1.10" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.29191993.1.1.3" Name="dt" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" LintValue="-218780"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" LintValue="-218780"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" DoubleValue="-18902592000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" DoubleValue="-18902592000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" LintValue="-218721"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" LintValue="-218721"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" DoubleValue="-18897494400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" DoubleValue="-18897494400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" LintValue="-218690"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" LintValue="-218690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" DoubleValue="-18894816000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" DoubleValue="-18894816000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" LintValue="-218660"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" LintValue="-218660"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" DoubleValue="-18892224000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" DoubleValue="-18892224000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" LintValue="-218659"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" LintValue="-218659"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" DoubleValue="-18892137600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" DoubleValue="-18892137600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.583333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" LintValue="-218629"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" LintValue="-218629"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" DoubleValue="-18889545600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" DoubleValue="-18889545600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.29191993.1.1.2" Name="pn" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
diff --git a/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp b/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp
index bbda60578f..33e9264c11 100644
--- a/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CorrelatedSemiJoin-True.mdp
@@ -661,28 +661,28 @@ SELECT pn, cn, vn FROM sale s WHERE EXISTS (SELECT * FROM customer WHERE EXISTS
<dxl:ColumnStatistics Mdid="1.29191993.1.1.10" Name="cmax" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.29191993.1.1.3" Name="dt" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" LintValue="-218780"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" LintValue="-218780"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" DoubleValue="-18902592000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZKn8/w==" DoubleValue="-18902592000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" LintValue="-218721"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" LintValue="-218721"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" DoubleValue="-18897494400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="n6n8/w==" DoubleValue="-18897494400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" LintValue="-218690"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" LintValue="-218690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" DoubleValue="-18894816000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vqn8/w==" DoubleValue="-18894816000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" LintValue="-218660"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" LintValue="-218660"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" DoubleValue="-18892224000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3Kn8/w==" DoubleValue="-18892224000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.083333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" LintValue="-218659"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" LintValue="-218659"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" DoubleValue="-18892137600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3an8/w==" DoubleValue="-18892137600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.583333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" LintValue="-218629"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" LintValue="-218629"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" DoubleValue="-18889545600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+6n8/w==" DoubleValue="-18889545600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.29191993.1.1.2" Name="pn" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp
index 81e706484e..64b995e9f8 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-EnabledDateConstraint.mdp
@@ -273,11 +273,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="vPH//w==" LintValue="-3652"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="vPH//w==" DoubleValue="-315532800000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" LintValue="0"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" DoubleValue="0.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -316,11 +316,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" LintValue="0"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" DoubleValue="0.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -359,11 +359,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" LintValue="7305"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" DoubleValue="631152000000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -402,11 +402,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" LintValue="7305"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" DoubleValue="631152000000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="zioAAA==" LintValue="10958"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="zioAAA==" DoubleValue="946771200000000.000000"/>
</dxl:Comparison>
</dxl:And>
>>>>>>> master
@@ -423,7 +423,7 @@
<dxl:LogicalSelect>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
<dxl:LogicalGet>
<dxl:TableDescriptor Mdid="6.318877.1.1" TableName="test_orders_2">
@@ -480,7 +480,7 @@
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="1" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp
index 538ca586ce..018d770837 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-UnsupportedConstraint.mdp
@@ -245,11 +245,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -288,11 +288,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" LintValue="7305"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" DoubleValue="631152000000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -308,7 +308,7 @@
<dxl:LogicalSelect>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
<dxl:LogicalGet>
<dxl:TableDescriptor Mdid="6.318877.1.1" TableName="test_orders_2">
@@ -364,7 +364,7 @@
<dxl:Filter>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="1" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
</dxl:Filter>
<dxl:Partitions>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp
index b00bdc065a..4ff868fb19 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-EnabledDateConstraint.mdp
@@ -281,11 +281,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -325,11 +325,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" LintValue="7305"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" DoubleValue="631152000000000.000000"/>
</dxl:Comparison>
</dxl:And>
>>>>>>> master
@@ -346,7 +346,7 @@
<dxl:LogicalSelect>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
<dxl:LogicalGet>
<dxl:TableDescriptor Mdid="6.310650.1.1" TableName="test_orders">
@@ -403,7 +403,7 @@
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="1" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp
index 24da162e1d..5632d90783 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Homogenous-UnsupportedConstraint.mdp
@@ -265,11 +265,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -309,11 +309,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" LintValue="5479"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ZxUAAA==" DoubleValue="473385600000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" LintValue="7305"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" DoubleValue="631152000000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -329,7 +329,7 @@
<dxl:LogicalSelect>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="2" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
<dxl:LogicalGet>
<dxl:TableDescriptor Mdid="6.310650.1.1" TableName="test_orders">
@@ -386,7 +386,7 @@
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="1" ColName="ship_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" LintValue="4415"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="PxEAAA==" DoubleValue="381456000000000.000000"/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:Partitions>
diff --git a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp b/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp
index 8aeaa65794..8c05995100 100644
--- a/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EffectOfLocalPredOnJoin2.mdp
@@ -2717,108 +2717,108 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.1962503.1.1.2" Name="d_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VnH//w==" LintValue="-36522"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yXz//w==" LintValue="-33591"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VnH//w==" DoubleValue="-3155500800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yXz//w==" DoubleValue="-2902262400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yXz//w==" LintValue="-33591"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LIj//w==" LintValue="-30676"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yXz//w==" DoubleValue="-2902262400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LIj//w==" DoubleValue="-2650406400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LIj//w==" LintValue="-30676"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="spP//w==" LintValue="-27726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LIj//w==" DoubleValue="-2650406400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="spP//w==" DoubleValue="-2395526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="spP//w==" LintValue="-27726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1p7//w==" LintValue="-24874"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="spP//w==" DoubleValue="-2395526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1p7//w==" DoubleValue="-2149113600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1p7//w==" LintValue="-24874"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EKr//w==" LintValue="-22000"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1p7//w==" DoubleValue="-2149113600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EKr//w==" DoubleValue="-1900800000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EKr//w==" LintValue="-22000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="U7X//w==" LintValue="-19117"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EKr//w==" DoubleValue="-1900800000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="U7X//w==" DoubleValue="-1651708800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="U7X//w==" LintValue="-19117"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="08D//w==" LintValue="-16173"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="U7X//w==" DoubleValue="-1651708800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="08D//w==" DoubleValue="-1397347200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="08D//w==" LintValue="-16173"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZMz//w==" LintValue="-13212"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="08D//w==" DoubleValue="-1397347200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZMz//w==" DoubleValue="-1141516800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZMz//w==" LintValue="-13212"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ytf//w==" LintValue="-10398"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZMz//w==" DoubleValue="-1141516800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ytf//w==" DoubleValue="-898387200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ytf//w==" LintValue="-10398"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="auP//w==" LintValue="-7318"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ytf//w==" DoubleValue="-898387200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="auP//w==" DoubleValue="-632275200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="auP//w==" LintValue="-7318"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JO///w==" LintValue="-4316"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="auP//w==" DoubleValue="-632275200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JO///w==" DoubleValue="-372902400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JO///w==" LintValue="-4316"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfr//w==" LintValue="-1379"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JO///w==" DoubleValue="-372902400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfr//w==" DoubleValue="-119145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfr//w==" LintValue="-1379"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BwYAAA==" LintValue="1543"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfr//w==" DoubleValue="-119145600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BwYAAA==" DoubleValue="133315200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BwYAAA==" LintValue="1543"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IxEAAA==" LintValue="4387"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BwYAAA==" DoubleValue="133315200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IxEAAA==" DoubleValue="379036800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IxEAAA==" LintValue="4387"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lh0AAA==" LintValue="7470"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IxEAAA==" DoubleValue="379036800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lh0AAA==" DoubleValue="645408000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lh0AAA==" LintValue="7470"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TCgAAA==" LintValue="10316"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lh0AAA==" DoubleValue="645408000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TCgAAA==" DoubleValue="891302400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TCgAAA==" LintValue="10316"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IzQAAA==" LintValue="13347"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TCgAAA==" DoubleValue="891302400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IzQAAA==" DoubleValue="1153180800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IzQAAA==" LintValue="13347"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4T4AAA==" LintValue="16097"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IzQAAA==" DoubleValue="1153180800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4T4AAA==" DoubleValue="1390780800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4T4AAA==" LintValue="16097"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KEoAAA==" LintValue="18984"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4T4AAA==" DoubleValue="1390780800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KEoAAA==" DoubleValue="1640217600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KEoAAA==" LintValue="18984"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="clUAAA==" LintValue="21874"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KEoAAA==" DoubleValue="1640217600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="clUAAA==" DoubleValue="1889913600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="clUAAA==" LintValue="21874"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZGAAAA==" LintValue="24676"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="clUAAA==" DoubleValue="1889913600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZGAAAA==" DoubleValue="2132006400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZGAAAA==" LintValue="24676"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f2sAAA==" LintValue="27519"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZGAAAA==" DoubleValue="2132006400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f2sAAA==" DoubleValue="2377641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f2sAAA==" LintValue="27519"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mnYAAA==" LintValue="30362"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f2sAAA==" DoubleValue="2377641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mnYAAA==" DoubleValue="2623276800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mnYAAA==" LintValue="30362"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g4EAAA==" LintValue="33155"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mnYAAA==" DoubleValue="2623276800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g4EAAA==" DoubleValue="2864592000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g4EAAA==" LintValue="33155"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N44AAA==" LintValue="36407"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g4EAAA==" DoubleValue="2864592000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N44AAA==" DoubleValue="3145564800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N44AAA==" LintValue="36407"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rI4AAA==" LintValue="36524"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N44AAA==" DoubleValue="3145564800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rI4AAA==" DoubleValue="3155673600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:Type Mdid="0.1082.1.0" Name="date" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
diff --git a/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp b/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp
index 5a18809221..dc49221faa 100644
--- a/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp
+++ b/src/backend/gporca/data/dxl/minidump/EqualityPredicateOverDate.mdp
@@ -109,64 +109,64 @@
</dxl:Type>
<dxl:ColumnStatistics Mdid="1.16384.1.0.0" Name="d" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.008282" DistinctValues="8.323944">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rxkAAA==" LintValue="6575"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uBkAAA==" LintValue="6584"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rxkAAA==" DoubleValue="568080000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uBkAAA==" DoubleValue="568857600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003333" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uBkAAA==" LintValue="6584"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uBkAAA==" LintValue="6584"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uBkAAA==" DoubleValue="568857600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uBkAAA==" DoubleValue="568857600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.183117" DistinctValues="184.051643">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uBkAAA==" LintValue="6584"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fxoAAA==" LintValue="6783"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uBkAAA==" DoubleValue="568857600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fxoAAA==" DoubleValue="586051200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fxoAAA==" LintValue="6783"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fxoAAA==" LintValue="6783"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fxoAAA==" DoubleValue="586051200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fxoAAA==" DoubleValue="586051200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004601" DistinctValues="4.624413">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fxoAAA==" LintValue="6783"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hBoAAA==" LintValue="6788"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fxoAAA==" DoubleValue="586051200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hBoAAA==" DoubleValue="586483200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.051216" DistinctValues="51.738693">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hBoAAA==" LintValue="6788"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uBoAAA==" LintValue="6840"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hBoAAA==" DoubleValue="586483200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uBoAAA==" DoubleValue="590976000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004667" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uBoAAA==" LintValue="6840"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uBoAAA==" LintValue="6840"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uBoAAA==" DoubleValue="590976000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uBoAAA==" DoubleValue="590976000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.144784" DistinctValues="146.261307">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uBoAAA==" LintValue="6840"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SxsAAA==" LintValue="6987"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uBoAAA==" DoubleValue="590976000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SxsAAA==" DoubleValue="603676800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.196000" DistinctValues="199.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SxsAAA==" LintValue="6987"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="DxwAAA==" LintValue="7183"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SxsAAA==" DoubleValue="603676800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="DxwAAA==" DoubleValue="620611200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.095958" DistinctValues="96.937500">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="DxwAAA==" LintValue="7183"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bRwAAA==" LintValue="7277"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="DxwAAA==" DoubleValue="620611200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bRwAAA==" DoubleValue="628732800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bRwAAA==" LintValue="7277"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bRwAAA==" LintValue="7277"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bRwAAA==" DoubleValue="628732800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bRwAAA==" DoubleValue="628732800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.100042" DistinctValues="101.062500">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bRwAAA==" LintValue="7277"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zxwAAA==" LintValue="7375"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bRwAAA==" DoubleValue="628732800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zxwAAA==" DoubleValue="637200000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.049495" DistinctValues="50.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zxwAAA==" LintValue="7375"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="AR0AAA==" LintValue="7425"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zxwAAA==" DoubleValue="637200000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="AR0AAA==" DoubleValue="641520000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="AR0AAA==" LintValue="7425"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="AR0AAA==" LintValue="7425"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="AR0AAA==" DoubleValue="641520000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="AR0AAA==" DoubleValue="641520000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.146505" DistinctValues="148.000000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="AR0AAA==" LintValue="7425"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lR0AAA==" LintValue="7573"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="AR0AAA==" DoubleValue="641520000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lR0AAA==" DoubleValue="654307200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<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">
@@ -277,7 +277,7 @@
<dxl:LogicalSelect>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="1" ColName="d" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="txoAAA==" LintValue="6839"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="txoAAA==" DoubleValue="590889600000000.000000"/>
</dxl:Comparison>
<dxl:LogicalGet>
<dxl:TableDescriptor Mdid="6.16384.1.0" TableName="test">
@@ -319,7 +319,7 @@
<dxl:Filter>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1093.1.0">
<dxl:Ident ColId="0" ColName="d" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="txoAAA==" LintValue="6839"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="txoAAA==" DoubleValue="590889600000000.000000"/>
</dxl:Comparison>
</dxl:Filter>
<dxl:TableDescriptor Mdid="6.16384.1.0" TableName="test">
@@ -338,7 +338,7 @@
</dxl:GatherMotion>
<dxl:DirectDispatchInfo>
<dxl:KeyValue>
- <dxl:Datum TypeMdid="0.1082.1.0" Value="txoAAA==" LintValue="6839"/>
+ <dxl:Datum TypeMdid="0.1082.1.0" Value="txoAAA==" DoubleValue="590889600000000.000000"/>
</dxl:KeyValue>
</dxl:DirectDispatchInfo>
</dxl:Plan>
diff --git a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp
index b021bd90ff..0a411953ca 100644
--- a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-1.mdp
@@ -814,214 +814,214 @@
<dxl:ColumnStatistics Mdid="1.24726.1.1.18" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.24726.1.1.11" Name="l_commitdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPT//w==" LintValue="-2892"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NPX//w==" LintValue="-2764"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPT//w==" DoubleValue="-249868800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NPX//w==" DoubleValue="-238809600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NPX//w==" LintValue="-2764"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NPX//w==" DoubleValue="-238809600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/b//w==" LintValue="-2381"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/b//w==" DoubleValue="-205718400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/b//w==" LintValue="-2381"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/b//w==" DoubleValue="-205718400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/j//w==" LintValue="-1897"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/j//w==" DoubleValue="-163900800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/j//w==" LintValue="-1897"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pj//w==" LintValue="-1800"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/j//w==" DoubleValue="-163900800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pj//w==" DoubleValue="-155520000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pj//w==" LintValue="-1800"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pj//w==" DoubleValue="-155520000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvn//w==" LintValue="-1606"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvn//w==" DoubleValue="-138758400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvn//w==" LintValue="-1606"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPr//w==" LintValue="-1508"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvn//w==" DoubleValue="-138758400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPr//w==" DoubleValue="-130291200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPr//w==" LintValue="-1508"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvr//w==" LintValue="-1410"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPr//w==" DoubleValue="-130291200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvr//w==" DoubleValue="-121824000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvr//w==" LintValue="-1410"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4Pr//w==" LintValue="-1312"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvr//w==" DoubleValue="-121824000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4Pr//w==" DoubleValue="-113356800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4Pr//w==" LintValue="-1312"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4Pr//w==" DoubleValue="-113356800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vv//w==" LintValue="-1030"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vv//w==" DoubleValue="-88992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vv//w==" LintValue="-1030"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vv//w==" DoubleValue="-88992000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPz//w==" LintValue="-836"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPz//w==" DoubleValue="-72230400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPz//w==" LintValue="-836"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="G/3//w==" LintValue="-741"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPz//w==" DoubleValue="-72230400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="G/3//w==" DoubleValue="-64022400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="G/3//w==" LintValue="-741"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="G/3//w==" DoubleValue="-64022400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2P3//w==" LintValue="-552"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2P3//w==" DoubleValue="-47692800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2P3//w==" LintValue="-552"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sv7//w==" LintValue="-438"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2P3//w==" DoubleValue="-47692800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sv7//w==" DoubleValue="-37843200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sv7//w==" LintValue="-438"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="U/7//w==" LintValue="-429"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sv7//w==" DoubleValue="-37843200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="U/7//w==" DoubleValue="-37065600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.10" Name="l_shipdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mvT//w==" LintValue="-2918"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="M/X//w==" LintValue="-2765"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mvT//w==" DoubleValue="-252115200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="M/X//w==" DoubleValue="-238896000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="M/X//w==" LintValue="-2765"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/X//w==" LintValue="-2665"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="M/X//w==" DoubleValue="-238896000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/X//w==" DoubleValue="-230256000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/X//w==" LintValue="-2665"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9PX//w==" LintValue="-2572"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/X//w==" DoubleValue="-230256000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9PX//w==" DoubleValue="-222220800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9PX//w==" LintValue="-2572"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfb//w==" LintValue="-2475"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9PX//w==" DoubleValue="-222220800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfb//w==" DoubleValue="-213840000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfb//w==" LintValue="-2475"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tfb//w==" LintValue="-2379"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfb//w==" DoubleValue="-213840000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tfb//w==" DoubleValue="-205545600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tfb//w==" LintValue="-2379"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPf//w==" LintValue="-2280"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tfb//w==" DoubleValue="-205545600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPf//w==" DoubleValue="-196992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPf//w==" LintValue="-2280"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPf//w==" DoubleValue="-196992000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mfj//w==" LintValue="-1895"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mfj//w==" DoubleValue="-163728000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mfj//w==" LintValue="-1895"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pj//w==" LintValue="-1804"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mfj//w==" DoubleValue="-163728000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pj//w==" DoubleValue="-155865600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pj//w==" LintValue="-1804"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pj//w==" DoubleValue="-155865600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvr//w==" LintValue="-1506"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvr//w==" DoubleValue="-130118400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvr//w==" LintValue="-1506"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f/r//w==" LintValue="-1409"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvr//w==" DoubleValue="-130118400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f/r//w==" DoubleValue="-121737600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f/r//w==" LintValue="-1409"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4fr//w==" LintValue="-1311"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f/r//w==" DoubleValue="-121737600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4fr//w==" DoubleValue="-113270400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4fr//w==" LintValue="-1311"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4fr//w==" DoubleValue="-113270400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fv//w==" LintValue="-1031"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fv//w==" DoubleValue="-89078400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fv//w==" LintValue="-1031"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fv//w==" DoubleValue="-89078400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="u/z//w==" LintValue="-837"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="u/z//w==" DoubleValue="-72316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="u/z//w==" LintValue="-837"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="u/z//w==" DoubleValue="-72316800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2v3//w==" LintValue="-550"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2v3//w==" DoubleValue="-47520000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v3//w==" LintValue="-550"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="af7//w==" LintValue="-407"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v3//w==" DoubleValue="-47520000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="af7//w==" DoubleValue="-35164800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="af7//w==" LintValue="-407"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/7//w==" LintValue="-397"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="af7//w==" DoubleValue="-35164800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/7//w==" DoubleValue="-34300800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.3" Name="l_linenumber" Width="4.000000">
@@ -1231,108 +1231,108 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.12" Name="l_receiptdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/T//w==" LintValue="-2913"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/X//w==" LintValue="-2749"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/T//w==" DoubleValue="-251683200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/X//w==" DoubleValue="-237513600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/X//w==" LintValue="-2749"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p/X//w==" LintValue="-2649"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/X//w==" DoubleValue="-237513600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p/X//w==" DoubleValue="-228873600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p/X//w==" LintValue="-2649"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BPb//w==" LintValue="-2556"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p/X//w==" DoubleValue="-228873600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BPb//w==" DoubleValue="-220838400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BPb//w==" LintValue="-2556"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfb//w==" LintValue="-2459"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BPb//w==" DoubleValue="-220838400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfb//w==" DoubleValue="-212457600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfb//w==" LintValue="-2459"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfb//w==" LintValue="-2363"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfb//w==" DoubleValue="-212457600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfb//w==" DoubleValue="-204163200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfb//w==" LintValue="-2363"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/f//w==" LintValue="-2265"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfb//w==" DoubleValue="-204163200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/f//w==" DoubleValue="-195696000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/f//w==" LintValue="-2265"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPf//w==" LintValue="-2172"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/f//w==" DoubleValue="-195696000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPf//w==" DoubleValue="-187660800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPf//w==" LintValue="-2172"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pf//w==" LintValue="-2072"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPf//w==" DoubleValue="-187660800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pf//w==" DoubleValue="-179020800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pf//w==" LintValue="-2072"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPj//w==" LintValue="-1976"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pf//w==" DoubleValue="-179020800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPj//w==" DoubleValue="-170726400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPj//w==" LintValue="-1976"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPj//w==" LintValue="-1880"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPj//w==" DoubleValue="-170726400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPj//w==" DoubleValue="-162432000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPj//w==" LintValue="-1880"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bvn//w==" LintValue="-1786"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPj//w==" DoubleValue="-162432000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bvn//w==" DoubleValue="-154310400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bvn//w==" LintValue="-1786"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfn//w==" LintValue="-1691"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bvn//w==" DoubleValue="-154310400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfn//w==" DoubleValue="-146102400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfn//w==" LintValue="-1691"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/n//w==" LintValue="-1589"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfn//w==" DoubleValue="-146102400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/n//w==" DoubleValue="-137289600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/n//w==" LintValue="-1589"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvr//w==" LintValue="-1490"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/n//w==" DoubleValue="-137289600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvr//w==" DoubleValue="-128736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvr//w==" LintValue="-1490"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jvr//w==" LintValue="-1394"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvr//w==" DoubleValue="-128736000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jvr//w==" DoubleValue="-120441600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jvr//w==" LintValue="-1394"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pr//w==" LintValue="-1296"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jvr//w==" DoubleValue="-120441600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pr//w==" DoubleValue="-111974400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pr//w==" LintValue="-1296"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Svv//w==" LintValue="-1206"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pr//w==" DoubleValue="-111974400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Svv//w==" DoubleValue="-104198400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Svv//w==" LintValue="-1206"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPv//w==" LintValue="-1108"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Svv//w==" DoubleValue="-104198400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPv//w==" DoubleValue="-95731200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPv//w==" LintValue="-1108"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="B/z//w==" LintValue="-1017"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPv//w==" DoubleValue="-95731200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="B/z//w==" DoubleValue="-87868800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="B/z//w==" LintValue="-1017"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="aPz//w==" LintValue="-920"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="B/z//w==" DoubleValue="-87868800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="aPz//w==" DoubleValue="-79488000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="aPz//w==" LintValue="-920"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/z//w==" LintValue="-821"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="aPz//w==" DoubleValue="-79488000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/z//w==" DoubleValue="-70934400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/z//w==" LintValue="-821"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lf3//w==" LintValue="-723"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/z//w==" DoubleValue="-70934400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lf3//w==" DoubleValue="-62467200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lf3//w==" LintValue="-723"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="i/3//w==" LintValue="-629"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lf3//w==" DoubleValue="-62467200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="i/3//w==" DoubleValue="-54345600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="i/3//w==" LintValue="-629"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f3//w==" LintValue="-535"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="i/3//w==" DoubleValue="-54345600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f3//w==" DoubleValue="-46224000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f3//w==" LintValue="-535"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ev7//w==" LintValue="-390"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f3//w==" DoubleValue="-46224000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ev7//w==" DoubleValue="-33696000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ev7//w==" LintValue="-390"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kf7//w==" LintValue="-367"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ev7//w==" DoubleValue="-33696000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kf7//w==" DoubleValue="-31708800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.5" Name="l_extendedprice" Width="10.000000">
diff --git a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp
index 2e9793b806..10629467b3 100644
--- a/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Equiv-HashedDistr-2.mdp
@@ -814,214 +814,214 @@
<dxl:ColumnStatistics Mdid="1.24726.1.1.18" Name="cmin" Width="4.000000"/>
<dxl:ColumnStatistics Mdid="1.24726.1.1.11" Name="l_commitdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPT//w==" LintValue="-2892"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NPX//w==" LintValue="-2764"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPT//w==" DoubleValue="-249868800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NPX//w==" DoubleValue="-238809600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NPX//w==" LintValue="-2764"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NPX//w==" DoubleValue="-238809600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/b//w==" LintValue="-2381"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/b//w==" DoubleValue="-205718400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/b//w==" LintValue="-2381"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/b//w==" DoubleValue="-205718400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/j//w==" LintValue="-1897"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/j//w==" DoubleValue="-163900800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/j//w==" LintValue="-1897"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pj//w==" LintValue="-1800"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/j//w==" DoubleValue="-163900800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pj//w==" DoubleValue="-155520000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pj//w==" LintValue="-1800"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pj//w==" DoubleValue="-155520000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvn//w==" LintValue="-1606"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvn//w==" DoubleValue="-138758400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvn//w==" LintValue="-1606"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPr//w==" LintValue="-1508"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvn//w==" DoubleValue="-138758400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPr//w==" DoubleValue="-130291200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPr//w==" LintValue="-1508"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvr//w==" LintValue="-1410"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPr//w==" DoubleValue="-130291200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvr//w==" DoubleValue="-121824000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvr//w==" LintValue="-1410"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4Pr//w==" LintValue="-1312"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvr//w==" DoubleValue="-121824000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4Pr//w==" DoubleValue="-113356800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4Pr//w==" LintValue="-1312"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4Pr//w==" DoubleValue="-113356800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vv//w==" LintValue="-1030"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vv//w==" DoubleValue="-88992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vv//w==" LintValue="-1030"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vv//w==" DoubleValue="-88992000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPz//w==" LintValue="-836"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPz//w==" DoubleValue="-72230400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPz//w==" LintValue="-836"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="G/3//w==" LintValue="-741"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPz//w==" DoubleValue="-72230400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="G/3//w==" DoubleValue="-64022400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="G/3//w==" LintValue="-741"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="G/3//w==" DoubleValue="-64022400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2P3//w==" LintValue="-552"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2P3//w==" DoubleValue="-47692800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2P3//w==" LintValue="-552"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sv7//w==" LintValue="-438"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2P3//w==" DoubleValue="-47692800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sv7//w==" DoubleValue="-37843200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="94.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sv7//w==" LintValue="-438"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="U/7//w==" LintValue="-429"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sv7//w==" DoubleValue="-37843200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="U/7//w==" DoubleValue="-37065600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.10" Name="l_shipdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mvT//w==" LintValue="-2918"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="M/X//w==" LintValue="-2765"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mvT//w==" DoubleValue="-252115200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="M/X//w==" DoubleValue="-238896000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="M/X//w==" LintValue="-2765"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/X//w==" LintValue="-2665"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="M/X//w==" DoubleValue="-238896000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/X//w==" DoubleValue="-230256000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/X//w==" LintValue="-2665"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9PX//w==" LintValue="-2572"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/X//w==" DoubleValue="-230256000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9PX//w==" DoubleValue="-222220800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9PX//w==" LintValue="-2572"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfb//w==" LintValue="-2475"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9PX//w==" DoubleValue="-222220800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfb//w==" DoubleValue="-213840000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfb//w==" LintValue="-2475"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tfb//w==" LintValue="-2379"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfb//w==" DoubleValue="-213840000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tfb//w==" DoubleValue="-205545600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tfb//w==" LintValue="-2379"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPf//w==" LintValue="-2280"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tfb//w==" DoubleValue="-205545600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPf//w==" DoubleValue="-196992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPf//w==" LintValue="-2280"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPf//w==" DoubleValue="-196992000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" LintValue="-2186"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvf//w==" DoubleValue="-188870400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" LintValue="-2087"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2ff//w==" DoubleValue="-180316800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" LintValue="-1993"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mfj//w==" LintValue="-1895"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/j//w==" DoubleValue="-172195200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mfj//w==" DoubleValue="-163728000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mfj//w==" LintValue="-1895"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pj//w==" LintValue="-1804"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mfj//w==" DoubleValue="-163728000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pj//w==" DoubleValue="-155865600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pj//w==" LintValue="-1804"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pj//w==" DoubleValue="-155865600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" LintValue="-1707"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfn//w==" DoubleValue="-147484800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvr//w==" LintValue="-1506"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvr//w==" DoubleValue="-130118400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvr//w==" LintValue="-1506"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f/r//w==" LintValue="-1409"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvr//w==" DoubleValue="-130118400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f/r//w==" DoubleValue="-121737600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f/r//w==" LintValue="-1409"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4fr//w==" LintValue="-1311"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f/r//w==" DoubleValue="-121737600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4fr//w==" DoubleValue="-113270400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4fr//w==" LintValue="-1311"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4fr//w==" DoubleValue="-113270400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" LintValue="-1221"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/v//w==" DoubleValue="-105494400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" LintValue="-1124"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fv//w==" LintValue="-1031"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPv//w==" DoubleValue="-97113600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fv//w==" DoubleValue="-89078400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fv//w==" LintValue="-1031"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fv//w==" DoubleValue="-89078400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" LintValue="-935"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="u/z//w==" LintValue="-837"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfz//w==" DoubleValue="-80784000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="u/z//w==" DoubleValue="-72316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="u/z//w==" LintValue="-837"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="u/z//w==" DoubleValue="-72316800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2v3//w==" LintValue="-550"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2v3//w==" DoubleValue="-47520000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v3//w==" LintValue="-550"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="af7//w==" LintValue="-407"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v3//w==" DoubleValue="-47520000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="af7//w==" DoubleValue="-35164800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="af7//w==" LintValue="-407"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/7//w==" LintValue="-397"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="af7//w==" DoubleValue="-35164800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/7//w==" DoubleValue="-34300800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.3" Name="l_linenumber" Width="4.000000">
@@ -1231,108 +1231,108 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.12" Name="l_receiptdate" Width="4.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/T//w==" LintValue="-2913"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/X//w==" LintValue="-2749"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/T//w==" DoubleValue="-251683200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/X//w==" DoubleValue="-237513600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/X//w==" LintValue="-2749"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p/X//w==" LintValue="-2649"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/X//w==" DoubleValue="-237513600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p/X//w==" DoubleValue="-228873600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p/X//w==" LintValue="-2649"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BPb//w==" LintValue="-2556"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p/X//w==" DoubleValue="-228873600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BPb//w==" DoubleValue="-220838400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BPb//w==" LintValue="-2556"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfb//w==" LintValue="-2459"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BPb//w==" DoubleValue="-220838400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfb//w==" DoubleValue="-212457600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfb//w==" LintValue="-2459"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfb//w==" LintValue="-2363"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfb//w==" DoubleValue="-212457600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfb//w==" DoubleValue="-204163200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfb//w==" LintValue="-2363"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/f//w==" LintValue="-2265"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfb//w==" DoubleValue="-204163200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/f//w==" DoubleValue="-195696000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/f//w==" LintValue="-2265"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPf//w==" LintValue="-2172"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/f//w==" DoubleValue="-195696000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPf//w==" DoubleValue="-187660800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPf//w==" LintValue="-2172"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pf//w==" LintValue="-2072"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPf//w==" DoubleValue="-187660800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pf//w==" DoubleValue="-179020800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pf//w==" LintValue="-2072"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPj//w==" LintValue="-1976"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pf//w==" DoubleValue="-179020800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPj//w==" DoubleValue="-170726400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPj//w==" LintValue="-1976"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPj//w==" LintValue="-1880"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPj//w==" DoubleValue="-170726400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPj//w==" DoubleValue="-162432000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPj//w==" LintValue="-1880"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bvn//w==" LintValue="-1786"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPj//w==" DoubleValue="-162432000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bvn//w==" DoubleValue="-154310400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bvn//w==" LintValue="-1786"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfn//w==" LintValue="-1691"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bvn//w==" DoubleValue="-154310400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfn//w==" DoubleValue="-146102400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfn//w==" LintValue="-1691"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/n//w==" LintValue="-1589"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfn//w==" DoubleValue="-146102400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/n//w==" DoubleValue="-137289600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/n//w==" LintValue="-1589"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvr//w==" LintValue="-1490"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/n//w==" DoubleValue="-137289600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvr//w==" DoubleValue="-128736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvr//w==" LintValue="-1490"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jvr//w==" LintValue="-1394"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvr//w==" DoubleValue="-128736000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jvr//w==" DoubleValue="-120441600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jvr//w==" LintValue="-1394"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pr//w==" LintValue="-1296"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jvr//w==" DoubleValue="-120441600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pr//w==" DoubleValue="-111974400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pr//w==" LintValue="-1296"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Svv//w==" LintValue="-1206"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pr//w==" DoubleValue="-111974400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Svv//w==" DoubleValue="-104198400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Svv//w==" LintValue="-1206"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPv//w==" LintValue="-1108"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Svv//w==" DoubleValue="-104198400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPv//w==" DoubleValue="-95731200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPv//w==" LintValue="-1108"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="B/z//w==" LintValue="-1017"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPv//w==" DoubleValue="-95731200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="B/z//w==" DoubleValue="-87868800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="B/z//w==" LintValue="-1017"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="aPz//w==" LintValue="-920"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="B/z//w==" DoubleValue="-87868800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="aPz//w==" DoubleValue="-79488000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="aPz//w==" LintValue="-920"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/z//w==" LintValue="-821"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="aPz//w==" DoubleValue="-79488000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/z//w==" DoubleValue="-70934400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/z//w==" LintValue="-821"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lf3//w==" LintValue="-723"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/z//w==" DoubleValue="-70934400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lf3//w==" DoubleValue="-62467200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lf3//w==" LintValue="-723"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="i/3//w==" LintValue="-629"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lf3//w==" DoubleValue="-62467200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="i/3//w==" DoubleValue="-54345600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="i/3//w==" LintValue="-629"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f3//w==" LintValue="-535"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="i/3//w==" DoubleValue="-54345600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f3//w==" DoubleValue="-46224000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f3//w==" LintValue="-535"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ev7//w==" LintValue="-390"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f3//w==" DoubleValue="-46224000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ev7//w==" DoubleValue="-33696000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="96.884615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ev7//w==" LintValue="-390"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kf7//w==" LintValue="-367"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ev7//w==" DoubleValue="-33696000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kf7//w==" DoubleValue="-31708800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.24726.1.1.5" Name="l_extendedprice" Width="10.000000">
diff --git a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp
index fdfc12e278..f092637f44 100644
--- a/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExtractPredicateFromDisj.mdp
@@ -5387,108 +5387,108 @@ WHERE ((sale_type = 's'::text AND dyear = 2001 AND year_total > 0::numeric) O
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.1962503.1.1.2" Name="d_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VnH//w==" LintValue="-36522"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yXz//w==" LintValue="-33591"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VnH//w==" DoubleValue="-3155500800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yXz//w==" DoubleValue="-2902262400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yXz//w==" LintValue="-33591"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LIj//w==" LintValue="-30676"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yXz//w==" DoubleValue="-2902262400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LIj//w==" DoubleValue="-2650406400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LIj//w==" LintValue="-30676"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="spP//w==" LintValue="-27726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LIj//w==" DoubleValue="-2650406400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="spP//w==" DoubleValue="-2395526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="spP//w==" LintValue="-27726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1p7//w==" LintValue="-24874"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="spP//w==" DoubleValue="-2395526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1p7//w==" DoubleValue="-2149113600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1p7//w==" LintValue="-24874"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EKr//w==" LintValue="-22000"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1p7//w==" DoubleValue="-2149113600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EKr//w==" DoubleValue="-1900800000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EKr//w==" LintValue="-22000"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="U7X//w==" LintValue="-19117"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EKr//w==" DoubleValue="-1900800000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="U7X//w==" DoubleValue="-1651708800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="U7X//w==" LintValue="-19117"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="08D//w==" LintValue="-16173"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="U7X//w==" DoubleValue="-1651708800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="08D//w==" DoubleValue="-1397347200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="08D//w==" LintValue="-16173"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZMz//w==" LintValue="-13212"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="08D//w==" DoubleValue="-1397347200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZMz//w==" DoubleValue="-1141516800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZMz//w==" LintValue="-13212"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ytf//w==" LintValue="-10398"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZMz//w==" DoubleValue="-1141516800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ytf//w==" DoubleValue="-898387200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ytf//w==" LintValue="-10398"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="auP//w==" LintValue="-7318"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ytf//w==" DoubleValue="-898387200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="auP//w==" DoubleValue="-632275200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="auP//w==" LintValue="-7318"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JO///w==" LintValue="-4316"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="auP//w==" DoubleValue="-632275200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JO///w==" DoubleValue="-372902400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JO///w==" LintValue="-4316"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfr//w==" LintValue="-1379"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JO///w==" DoubleValue="-372902400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfr//w==" DoubleValue="-119145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfr//w==" LintValue="-1379"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BwYAAA==" LintValue="1543"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfr//w==" DoubleValue="-119145600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BwYAAA==" DoubleValue="133315200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BwYAAA==" LintValue="1543"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IxEAAA==" LintValue="4387"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BwYAAA==" DoubleValue="133315200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IxEAAA==" DoubleValue="379036800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IxEAAA==" LintValue="4387"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lh0AAA==" LintValue="7470"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IxEAAA==" DoubleValue="379036800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lh0AAA==" DoubleValue="645408000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lh0AAA==" LintValue="7470"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TCgAAA==" LintValue="10316"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lh0AAA==" DoubleValue="645408000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TCgAAA==" DoubleValue="891302400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TCgAAA==" LintValue="10316"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IzQAAA==" LintValue="13347"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TCgAAA==" DoubleValue="891302400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IzQAAA==" DoubleValue="1153180800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IzQAAA==" LintValue="13347"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4T4AAA==" LintValue="16097"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IzQAAA==" DoubleValue="1153180800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4T4AAA==" DoubleValue="1390780800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4T4AAA==" LintValue="16097"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KEoAAA==" LintValue="18984"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4T4AAA==" DoubleValue="1390780800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KEoAAA==" DoubleValue="1640217600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KEoAAA==" LintValue="18984"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="clUAAA==" LintValue="21874"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KEoAAA==" DoubleValue="1640217600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="clUAAA==" DoubleValue="1889913600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="clUAAA==" LintValue="21874"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZGAAAA==" LintValue="24676"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="clUAAA==" DoubleValue="1889913600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZGAAAA==" DoubleValue="2132006400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZGAAAA==" LintValue="24676"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f2sAAA==" LintValue="27519"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZGAAAA==" DoubleValue="2132006400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="f2sAAA==" DoubleValue="2377641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f2sAAA==" LintValue="27519"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mnYAAA==" LintValue="30362"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="f2sAAA==" DoubleValue="2377641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mnYAAA==" DoubleValue="2623276800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mnYAAA==" LintValue="30362"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g4EAAA==" LintValue="33155"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mnYAAA==" DoubleValue="2623276800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g4EAAA==" DoubleValue="2864592000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g4EAAA==" LintValue="33155"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N44AAA==" LintValue="36407"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g4EAAA==" DoubleValue="2864592000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N44AAA==" DoubleValue="3145564800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038462" DistinctValues="2809.576923">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N44AAA==" LintValue="36407"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rI4AAA==" LintValue="36524"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N44AAA==" DoubleValue="3145564800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rI4AAA==" DoubleValue="3155673600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:Type Mdid="0.1082.1.0" Name="date" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
diff --git a/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp b/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp
index bc053b48b0..9f24d66331 100644
--- a/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp
+++ b/src/backend/gporca/data/dxl/minidump/GroupingOnSameTblCol-1.mdp
@@ -412,34 +412,34 @@ group by item.i_item_id, item.i_item_desc, item.i_current_price;
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.672855.1.1.3" Name="i_rec_end_date" Width="4.000000" NullFreq="0.501672" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.167224" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" LintValue="-66"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" LintValue="-66"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" DoubleValue="-5702400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vv///w==" DoubleValue="-5702400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.167224" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" LintValue="299"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" LintValue="299"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" DoubleValue="25833600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KwEAAA==" DoubleValue="25833600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.167224" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" LintValue="664"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" LintValue="664"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" DoubleValue="57369600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mAIAAA==" DoubleValue="57369600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.672855.1.1.2" Name="i_rec_start_date" Width="4.000000" NullFreq="0.002564" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.499334" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" LintValue="-796"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" LintValue="-796"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" DoubleValue="-68774400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5Pz//w==" DoubleValue="-68774400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166649" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" LintValue="-65"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" LintValue="-65"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" DoubleValue="-5616000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v////w==" DoubleValue="-5616000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166426" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" LintValue="300"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" LintValue="300"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" DoubleValue="25920000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LAEAAA==" DoubleValue="25920000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.166593" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" LintValue="665"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" LintValue="665"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" DoubleValue="57456000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mQIAAA==" DoubleValue="57456000000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<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/HAWQ-TPCH-Stat-Derivation.mdp b/src/backend/gporca/data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp
index 46dc3acdc6..51b76fba29 100644
--- a/src/backend/gporca/data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp
+++ b/src/backend/gporca/data/dxl/minidump/HAWQ-TPCH-Stat-Derivation.mdp
@@ -893,308 +893,308 @@ ORDER BY s_name;
<dxl:ColumnStatistics Mdid="1.11778166.1.1.18" Name="gp_segment_id" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
<dxl:ColumnStatistics Mdid="1.11778166.1.1.11" Name="l_commitdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tvT//w==" LintValue="-2890"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NvX//w==" LintValue="-2762"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tvT//w==" DoubleValue="-249696000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NvX//w==" DoubleValue="-238636800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.014359" DistinctValues="35.575092">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NvX//w==" LintValue="-2762"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="XvX//w==" LintValue="-2722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NvX//w==" DoubleValue="-238636800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="XvX//w==" DoubleValue="-235180800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="XvX//w==" LintValue="-2722"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="XvX//w==" LintValue="-2722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="XvX//w==" DoubleValue="-235180800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="XvX//w==" DoubleValue="-235180800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023333" DistinctValues="57.809524">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="XvX//w==" LintValue="-2722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n/X//w==" LintValue="-2657"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="XvX//w==" DoubleValue="-235180800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n/X//w==" DoubleValue="-229564800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/X//w==" LintValue="-2657"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/fX//w==" LintValue="-2563"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/X//w==" DoubleValue="-229564800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/fX//w==" DoubleValue="-221443200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009727" DistinctValues="24.099256">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/fX//w==" LintValue="-2563"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ffb//w==" LintValue="-2539"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/fX//w==" DoubleValue="-221443200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ffb//w==" DoubleValue="-219369600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ffb//w==" LintValue="-2539"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ffb//w==" LintValue="-2539"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ffb//w==" DoubleValue="-219369600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ffb//w==" DoubleValue="-219369600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.027965" DistinctValues="69.285360">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ffb//w==" LintValue="-2539"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wvb//w==" LintValue="-2470"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ffb//w==" DoubleValue="-219369600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wvb//w==" DoubleValue="-213408000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wvb//w==" LintValue="-2470"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvb//w==" LintValue="-2374"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wvb//w==" DoubleValue="-213408000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvb//w==" DoubleValue="-205113600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvb//w==" LintValue="-2374"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gvf//w==" LintValue="-2278"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvb//w==" DoubleValue="-205113600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gvf//w==" DoubleValue="-196819200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000785" DistinctValues="1.924679">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gvf//w==" LintValue="-2278"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPf//w==" LintValue="-2276"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gvf//w==" DoubleValue="-196819200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPf//w==" DoubleValue="-196646400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPf//w==" LintValue="-2276"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HPf//w==" LintValue="-2276"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPf//w==" DoubleValue="-196646400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HPf//w==" DoubleValue="-196646400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.014134" DistinctValues="34.644231">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HPf//w==" LintValue="-2276"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QPf//w==" LintValue="-2240"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HPf//w==" DoubleValue="-196646400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QPf//w==" DoubleValue="-193536000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QPf//w==" LintValue="-2240"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QPf//w==" LintValue="-2240"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QPf//w==" DoubleValue="-193536000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QPf//w==" DoubleValue="-193536000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022772" DistinctValues="55.815705">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QPf//w==" LintValue="-2240"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="evf//w==" LintValue="-2182"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QPf//w==" DoubleValue="-193536000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="evf//w==" DoubleValue="-188524800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.030301" DistinctValues="75.073906">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="evf//w==" LintValue="-2182"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPf//w==" LintValue="-2100"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="evf//w==" DoubleValue="-188524800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPf//w==" DoubleValue="-181440000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPf//w==" LintValue="-2100"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="zPf//w==" LintValue="-2100"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPf//w==" DoubleValue="-181440000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="zPf//w==" DoubleValue="-181440000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007391" DistinctValues="18.310709">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="zPf//w==" LintValue="-2100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4Pf//w==" LintValue="-2080"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="zPf//w==" DoubleValue="-181440000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4Pf//w==" DoubleValue="-179712000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.034484" DistinctValues="85.436989">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4Pf//w==" LintValue="-2080"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvj//w==" LintValue="-1994"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4Pf//w==" DoubleValue="-179712000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvj//w==" DoubleValue="-172281600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvj//w==" LintValue="-1994"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvj//w==" LintValue="-1994"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvj//w==" DoubleValue="-172281600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvj//w==" DoubleValue="-172281600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003208" DistinctValues="7.947627">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvj//w==" LintValue="-1994"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pvj//w==" LintValue="-1986"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvj//w==" DoubleValue="-172281600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pvj//w==" DoubleValue="-171590400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005440" DistinctValues="13.478192">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pvj//w==" LintValue="-1986"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPj//w==" LintValue="-1972"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pvj//w==" DoubleValue="-171590400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPj//w==" DoubleValue="-170380800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPj//w==" LintValue="-1972"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="TPj//w==" LintValue="-1972"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPj//w==" DoubleValue="-170380800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="TPj//w==" DoubleValue="-170380800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.032252" DistinctValues="79.906423">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="TPj//w==" LintValue="-1972"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n/j//w==" LintValue="-1889"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="TPj//w==" DoubleValue="-170380800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n/j//w==" DoubleValue="-163209600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000397" DistinctValues="0.961943">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/j//w==" LintValue="-1889"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oPj//w==" LintValue="-1888"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/j//w==" DoubleValue="-163209600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oPj//w==" DoubleValue="-163123200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000897" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oPj//w==" LintValue="-1888"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="oPj//w==" LintValue="-1888"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oPj//w==" DoubleValue="-163123200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="oPj//w==" DoubleValue="-163123200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004761" DistinctValues="11.543320">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="oPj//w==" LintValue="-1888"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPj//w==" LintValue="-1876"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="oPj//w==" DoubleValue="-163123200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPj//w==" DoubleValue="-162086400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000734" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPj//w==" LintValue="-1876"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rPj//w==" LintValue="-1876"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPj//w==" DoubleValue="-162086400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rPj//w==" DoubleValue="-162086400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001984" DistinctValues="4.809717">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rPj//w==" LintValue="-1876"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sfj//w==" LintValue="-1871"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rPj//w==" DoubleValue="-162086400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sfj//w==" DoubleValue="-161654400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sfj//w==" LintValue="-1871"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sfj//w==" LintValue="-1871"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sfj//w==" DoubleValue="-161654400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sfj//w==" DoubleValue="-161654400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.030550" DistinctValues="74.069636">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sfj//w==" LintValue="-1871"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/vj//w==" LintValue="-1794"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sfj//w==" DoubleValue="-161654400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/vj//w==" DoubleValue="-155001600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/vj//w==" LintValue="-1794"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/n//w==" LintValue="-1697"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/vj//w==" DoubleValue="-155001600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/n//w==" DoubleValue="-146620800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008106" DistinctValues="19.867659">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/n//w==" LintValue="-1697"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/n//w==" LintValue="-1677"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/n//w==" DoubleValue="-146620800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/n//w==" DoubleValue="-144892800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/n//w==" LintValue="-1677"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/n//w==" LintValue="-1677"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/n//w==" DoubleValue="-144892800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/n//w==" DoubleValue="-144892800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012159" DistinctValues="29.801489">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="c/n//w==" LintValue="-1677"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfn//w==" LintValue="-1647"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="c/n//w==" DoubleValue="-144892800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfn//w==" DoubleValue="-142300800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfn//w==" LintValue="-1647"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfn//w==" LintValue="-1647"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfn//w==" DoubleValue="-142300800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfn//w==" DoubleValue="-142300800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017427" DistinctValues="42.715467">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfn//w==" LintValue="-1647"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfn//w==" DoubleValue="-142300800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022772" DistinctValues="56.419872">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9vn//w==" LintValue="-1546"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9vn//w==" DoubleValue="-133574400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9vn//w==" LintValue="-1546"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9vn//w==" LintValue="-1546"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9vn//w==" DoubleValue="-133574400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9vn//w==" DoubleValue="-133574400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.014920" DistinctValues="36.964744">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9vn//w==" LintValue="-1546"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPr//w==" LintValue="-1508"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9vn//w==" DoubleValue="-133574400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPr//w==" DoubleValue="-130291200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPr//w==" LintValue="-1508"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gPr//w==" LintValue="-1408"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPr//w==" DoubleValue="-130291200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gPr//w==" DoubleValue="-121651200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002048" DistinctValues="4.966555">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gPr//w==" LintValue="-1408"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hfr//w==" LintValue="-1403"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gPr//w==" DoubleValue="-121651200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hfr//w==" DoubleValue="-121219200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hfr//w==" LintValue="-1403"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hfr//w==" LintValue="-1403"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hfr//w==" DoubleValue="-121219200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hfr//w==" DoubleValue="-121219200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004916" DistinctValues="11.919732">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hfr//w==" LintValue="-1403"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfr//w==" LintValue="-1391"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hfr//w==" DoubleValue="-121219200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfr//w==" DoubleValue="-120182400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfr//w==" LintValue="-1391"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfr//w==" LintValue="-1391"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfr//w==" DoubleValue="-120182400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfr//w==" DoubleValue="-120182400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008194" DistinctValues="19.866221">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfr//w==" LintValue="-1391"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pfr//w==" LintValue="-1371"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfr//w==" DoubleValue="-120182400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pfr//w==" DoubleValue="-118454400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pfr//w==" LintValue="-1371"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pfr//w==" LintValue="-1371"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pfr//w==" DoubleValue="-118454400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pfr//w==" DoubleValue="-118454400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022533" DistinctValues="54.632107">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pfr//w==" LintValue="-1371"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3Pr//w==" LintValue="-1316"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pfr//w==" DoubleValue="-118454400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3Pr//w==" DoubleValue="-113702400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Pr//w==" LintValue="-1316"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pfv//w==" LintValue="-1219"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Pr//w==" DoubleValue="-113702400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pfv//w==" DoubleValue="-105321600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pfv//w==" LintValue="-1219"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oPv//w==" LintValue="-1120"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pfv//w==" DoubleValue="-105321600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oPv//w==" DoubleValue="-96768000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003571" DistinctValues="8.657490">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oPv//w==" LintValue="-1120"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qfv//w==" LintValue="-1111"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oPv//w==" DoubleValue="-96768000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qfv//w==" DoubleValue="-95990400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qfv//w==" LintValue="-1111"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qfv//w==" LintValue="-1111"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qfv//w==" DoubleValue="-95990400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qfv//w==" DoubleValue="-95990400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000397" DistinctValues="0.961943">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qfv//w==" LintValue="-1111"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qvv//w==" LintValue="-1110"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qfv//w==" DoubleValue="-95990400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qvv//w==" DoubleValue="-95904000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qvv//w==" LintValue="-1110"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qvv//w==" LintValue="-1110"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qvv//w==" DoubleValue="-95904000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qvv//w==" DoubleValue="-95904000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016664" DistinctValues="40.401619">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qvv//w==" LintValue="-1110"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1Pv//w==" LintValue="-1068"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qvv//w==" DoubleValue="-95904000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1Pv//w==" DoubleValue="-92275200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1Pv//w==" LintValue="-1068"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="1Pv//w==" LintValue="-1068"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1Pv//w==" DoubleValue="-92275200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="1Pv//w==" DoubleValue="-92275200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017061" DistinctValues="41.363563">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="1Pv//w==" LintValue="-1068"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//v//w==" LintValue="-1025"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="1Pv//w==" DoubleValue="-92275200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//v//w==" DoubleValue="-88560000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.026423" DistinctValues="65.465504">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//v//w==" LintValue="-1025"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/z//w==" LintValue="-957"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//v//w==" DoubleValue="-88560000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/z//w==" DoubleValue="-82684800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/z//w==" LintValue="-957"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/z//w==" LintValue="-957"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/z//w==" DoubleValue="-82684800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/z//w==" DoubleValue="-82684800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.011269" DistinctValues="27.919112">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/z//w==" LintValue="-957"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="YPz//w==" LintValue="-928"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/z//w==" DoubleValue="-82684800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="YPz//w==" DoubleValue="-80179200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004863" DistinctValues="12.049628">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="YPz//w==" LintValue="-928"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bPz//w==" LintValue="-916"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="YPz//w==" DoubleValue="-80179200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bPz//w==" DoubleValue="-79142400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bPz//w==" LintValue="-916"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bPz//w==" LintValue="-916"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bPz//w==" DoubleValue="-79142400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bPz//w==" DoubleValue="-79142400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.032828" DistinctValues="81.334988">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bPz//w==" LintValue="-916"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfz//w==" LintValue="-835"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bPz//w==" DoubleValue="-79142400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfz//w==" DoubleValue="-72144000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfz//w==" LintValue="-835"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfz//w==" DoubleValue="-72144000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005555" DistinctValues="13.614575">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kv3//w==" LintValue="-726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kv3//w==" DoubleValue="-62726400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000897" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kv3//w==" LintValue="-726"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Kv3//w==" LintValue="-726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kv3//w==" DoubleValue="-62726400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Kv3//w==" DoubleValue="-62726400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005555" DistinctValues="13.614575">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Kv3//w==" LintValue="-726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OP3//w==" LintValue="-712"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Kv3//w==" DoubleValue="-62726400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OP3//w==" DoubleValue="-61516800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OP3//w==" LintValue="-712"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="OP3//w==" LintValue="-712"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OP3//w==" DoubleValue="-61516800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="OP3//w==" DoubleValue="-61516800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.026583" DistinctValues="65.155466">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="OP3//w==" LintValue="-712"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="e/3//w==" LintValue="-645"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="OP3//w==" DoubleValue="-61516800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="e/3//w==" DoubleValue="-55728000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008106" DistinctValues="19.867659">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="e/3//w==" LintValue="-645"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/3//w==" LintValue="-625"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="e/3//w==" DoubleValue="-55728000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/3//w==" DoubleValue="-54000000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/3//w==" LintValue="-625"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="j/3//w==" LintValue="-625"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/3//w==" DoubleValue="-54000000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="j/3//w==" DoubleValue="-54000000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.027560" DistinctValues="67.550041">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="j/3//w==" LintValue="-625"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/3//w==" LintValue="-557"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="j/3//w==" DoubleValue="-54000000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/3//w==" DoubleValue="-48124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/3//w==" LintValue="-557"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0/3//w==" LintValue="-557"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/3//w==" DoubleValue="-48124800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0/3//w==" DoubleValue="-48124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002026" DistinctValues="4.966915">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0/3//w==" LintValue="-557"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2P3//w==" LintValue="-552"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0/3//w==" DoubleValue="-48124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2P3//w==" DoubleValue="-47692800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2P3//w==" LintValue="-552"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sf7//w==" LintValue="-439"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2P3//w==" DoubleValue="-47692800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sf7//w==" DoubleValue="-37929600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037692" DistinctValues="94.384615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sf7//w==" LintValue="-439"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UP7//w==" LintValue="-432"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sf7//w==" DoubleValue="-37929600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UP7//w==" DoubleValue="-37324800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.11778166.1.1.3" Name="l_linenumber" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
@@ -1229,304 +1229,304 @@ ORDER BY s_name;
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.11778166.1.1.10" Name="l_shipdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m/T//w==" LintValue="-2917"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OvX//w==" LintValue="-2758"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m/T//w==" DoubleValue="-252028800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OvX//w==" DoubleValue="-238291200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.035001" DistinctValues="87.639472">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OvX//w==" LintValue="-2758"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvX//w==" LintValue="-2666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OvX//w==" DoubleValue="-238291200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvX//w==" DoubleValue="-230342400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvX//w==" LintValue="-2666"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lvX//w==" LintValue="-2666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvX//w==" DoubleValue="-230342400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lvX//w==" DoubleValue="-230342400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001902" DistinctValues="4.763015">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lvX//w==" LintValue="-2666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="m/X//w==" LintValue="-2661"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lvX//w==" DoubleValue="-230342400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="m/X//w==" DoubleValue="-229910400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m/X//w==" LintValue="-2661"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="m/X//w==" LintValue="-2661"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m/X//w==" DoubleValue="-229910400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="m/X//w==" DoubleValue="-229910400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000761" DistinctValues="1.905206">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="m/X//w==" LintValue="-2661"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfX//w==" LintValue="-2659"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="m/X//w==" DoubleValue="-229910400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfX//w==" DoubleValue="-229737600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfX//w==" LintValue="-2659"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//X//w==" LintValue="-2561"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfX//w==" DoubleValue="-229737600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//X//w==" DoubleValue="-221270400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//X//w==" LintValue="-2561"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="//X//w==" LintValue="-2561"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//X//w==" DoubleValue="-221270400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="//X//w==" DoubleValue="-221270400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022995" DistinctValues="56.356275">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="//X//w==" LintValue="-2561"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ofb//w==" LintValue="-2503"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="//X//w==" DoubleValue="-221270400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ofb//w==" DoubleValue="-216259200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000937" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ofb//w==" LintValue="-2503"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ofb//w==" LintValue="-2503"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ofb//w==" DoubleValue="-216259200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ofb//w==" DoubleValue="-216259200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002379" DistinctValues="5.829960">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ofb//w==" LintValue="-2503"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="P/b//w==" LintValue="-2497"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ofb//w==" DoubleValue="-216259200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="P/b//w==" DoubleValue="-215740800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="P/b//w==" LintValue="-2497"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="P/b//w==" LintValue="-2497"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="P/b//w==" DoubleValue="-215740800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="P/b//w==" DoubleValue="-215740800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005947" DistinctValues="14.574899">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="P/b//w==" LintValue="-2497"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvb//w==" LintValue="-2482"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="P/b//w==" DoubleValue="-215740800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvb//w==" DoubleValue="-214444800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvb//w==" LintValue="-2482"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvb//w==" LintValue="-2482"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvb//w==" DoubleValue="-214444800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvb//w==" DoubleValue="-214444800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006343" DistinctValues="15.546559">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvb//w==" LintValue="-2482"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xvb//w==" LintValue="-2466"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvb//w==" DoubleValue="-214444800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Xvb//w==" DoubleValue="-213062400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xvb//w==" LintValue="-2466"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPb//w==" LintValue="-2372"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Xvb//w==" DoubleValue="-213062400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPb//w==" DoubleValue="-204940800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002483" DistinctValues="6.218090">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPb//w==" LintValue="-2372"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wvb//w==" LintValue="-2366"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPb//w==" DoubleValue="-204940800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wvb//w==" DoubleValue="-204422400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wvb//w==" LintValue="-2366"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="wvb//w==" LintValue="-2366"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wvb//w==" DoubleValue="-204422400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="wvb//w==" DoubleValue="-204422400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.034353" DistinctValues="86.016906">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="wvb//w==" LintValue="-2366"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="wvb//w==" DoubleValue="-204422400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000828" DistinctValues="2.072697">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" LintValue="-2283"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/f//w==" LintValue="-2281"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Fff//w==" DoubleValue="-197251200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/f//w==" DoubleValue="-197078400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/f//w==" LintValue="-2281"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fPf//w==" LintValue="-2180"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/f//w==" DoubleValue="-197078400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fPf//w==" DoubleValue="-188352000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028640" DistinctValues="72.473558">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fPf//w==" LintValue="-2180"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xff//w==" LintValue="-2107"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fPf//w==" DoubleValue="-188352000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xff//w==" DoubleValue="-182044800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xff//w==" LintValue="-2107"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xff//w==" LintValue="-2107"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xff//w==" DoubleValue="-182044800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xff//w==" DoubleValue="-182044800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009024" DistinctValues="22.834135">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xff//w==" LintValue="-2107"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3Pf//w==" LintValue="-2084"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xff//w==" DoubleValue="-182044800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3Pf//w==" DoubleValue="-180057600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004946" DistinctValues="12.383838">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Pf//w==" LintValue="-2084"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6ff//w==" LintValue="-2071"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Pf//w==" DoubleValue="-180057600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6ff//w==" DoubleValue="-178934400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6ff//w==" LintValue="-2071"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6ff//w==" LintValue="-2071"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6ff//w==" DoubleValue="-178934400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6ff//w==" DoubleValue="-178934400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.020544" DistinctValues="51.440559">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6ff//w==" LintValue="-2071"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="H/j//w==" LintValue="-2017"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6ff//w==" DoubleValue="-178934400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="H/j//w==" DoubleValue="-174268800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="H/j//w==" LintValue="-2017"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="H/j//w==" LintValue="-2017"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="H/j//w==" DoubleValue="-174268800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="H/j//w==" DoubleValue="-174268800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012174" DistinctValues="30.483294">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="H/j//w==" LintValue="-2017"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="P/j//w==" LintValue="-1985"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="H/j//w==" DoubleValue="-174268800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="P/j//w==" DoubleValue="-171504000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000396" DistinctValues="1.003239">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="P/j//w==" LintValue="-1985"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QPj//w==" LintValue="-1984"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="P/j//w==" DoubleValue="-171504000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QPj//w==" DoubleValue="-171417600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000734" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QPj//w==" LintValue="-1984"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QPj//w==" LintValue="-1984"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QPj//w==" DoubleValue="-171417600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QPj//w==" DoubleValue="-171417600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037267" DistinctValues="94.304453">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QPj//w==" LintValue="-1984"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nvj//w==" LintValue="-1890"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QPj//w==" DoubleValue="-171417600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nvj//w==" DoubleValue="-163296000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.018832" DistinctValues="47.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nvj//w==" LintValue="-1890"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zvj//w==" LintValue="-1842"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nvj//w==" DoubleValue="-163296000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zvj//w==" DoubleValue="-159148800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zvj//w==" LintValue="-1842"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="zvj//w==" LintValue="-1842"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zvj//w==" DoubleValue="-159148800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="zvj//w==" DoubleValue="-159148800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.018832" DistinctValues="47.653846">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="zvj//w==" LintValue="-1842"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/vj//w==" LintValue="-1794"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="zvj//w==" DoubleValue="-159148800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/vj//w==" DoubleValue="-155001600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/vj//w==" LintValue="-1794"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/n//w==" LintValue="-1697"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/vj//w==" DoubleValue="-155001600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/n//w==" DoubleValue="-146620800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017295" DistinctValues="43.304553">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/n//w==" LintValue="-1697"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jPn//w==" LintValue="-1652"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/n//w==" DoubleValue="-146620800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jPn//w==" DoubleValue="-142732800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jPn//w==" LintValue="-1652"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jPn//w==" LintValue="-1652"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jPn//w==" DoubleValue="-142732800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jPn//w==" DoubleValue="-142732800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.014220" DistinctValues="35.605965">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jPn//w==" LintValue="-1652"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sfn//w==" LintValue="-1615"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jPn//w==" DoubleValue="-142732800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="sfn//w==" DoubleValue="-139536000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000897" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sfn//w==" LintValue="-1615"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sfn//w==" LintValue="-1615"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="sfn//w==" DoubleValue="-139536000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="sfn//w==" DoubleValue="-139536000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006149" DistinctValues="15.397174">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sfn//w==" LintValue="-1615"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wfn//w==" LintValue="-1599"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="sfn//w==" DoubleValue="-139536000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wfn//w==" DoubleValue="-138153600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007290" DistinctValues="18.253102">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wfn//w==" LintValue="-1599"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/n//w==" LintValue="-1581"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wfn//w==" DoubleValue="-138153600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/n//w==" DoubleValue="-136598400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000897" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/n//w==" LintValue="-1581"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0/n//w==" LintValue="-1581"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/n//w==" DoubleValue="-136598400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0/n//w==" DoubleValue="-136598400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010530" DistinctValues="26.365591">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0/n//w==" LintValue="-1581"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7fn//w==" LintValue="-1555"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0/n//w==" DoubleValue="-136598400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7fn//w==" DoubleValue="-134352000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000897" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7fn//w==" LintValue="-1555"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7fn//w==" LintValue="-1555"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7fn//w==" DoubleValue="-134352000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7fn//w==" DoubleValue="-134352000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019844" DistinctValues="49.688999">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7fn//w==" LintValue="-1555"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvr//w==" LintValue="-1506"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7fn//w==" DoubleValue="-134352000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvr//w==" DoubleValue="-130118400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005381" DistinctValues="13.472527">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvr//w==" LintValue="-1506"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LPr//w==" LintValue="-1492"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvr//w==" DoubleValue="-130118400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LPr//w==" DoubleValue="-128908800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LPr//w==" LintValue="-1492"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LPr//w==" LintValue="-1492"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LPr//w==" DoubleValue="-128908800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LPr//w==" DoubleValue="-128908800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001153" DistinctValues="2.886970">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="LPr//w==" LintValue="-1492"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="L/r//w==" LintValue="-1489"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="LPr//w==" DoubleValue="-128908800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="L/r//w==" DoubleValue="-128649600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="L/r//w==" LintValue="-1489"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="L/r//w==" LintValue="-1489"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="L/r//w==" DoubleValue="-128649600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="L/r//w==" DoubleValue="-128649600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.031130" DistinctValues="77.948195">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="L/r//w==" LintValue="-1489"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gPr//w==" LintValue="-1408"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="L/r//w==" DoubleValue="-128649600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gPr//w==" DoubleValue="-121651200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.025382" DistinctValues="64.229097">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gPr//w==" LintValue="-1408"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vvr//w==" LintValue="-1346"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gPr//w==" DoubleValue="-121651200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vvr//w==" DoubleValue="-116294400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001060" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vvr//w==" LintValue="-1346"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vvr//w==" LintValue="-1346"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vvr//w==" DoubleValue="-116294400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vvr//w==" DoubleValue="-116294400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012282" DistinctValues="31.078595">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vvr//w==" LintValue="-1346"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3Pr//w==" LintValue="-1316"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vvr//w==" DoubleValue="-116294400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3Pr//w==" DoubleValue="-113702400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010761" DistinctValues="27.230769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Pr//w==" LintValue="-1316"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pr//w==" LintValue="-1288"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3Pr//w==" DoubleValue="-113702400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pr//w==" DoubleValue="-111283200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pr//w==" LintValue="-1288"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pr//w==" LintValue="-1288"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pr//w==" DoubleValue="-111283200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+Pr//w==" DoubleValue="-111283200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.026903" DistinctValues="68.076923">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pr//w==" LintValue="-1288"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pvv//w==" LintValue="-1218"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+Pr//w==" DoubleValue="-111283200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pvv//w==" DoubleValue="-105235200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pvv//w==" LintValue="-1218"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n/v//w==" LintValue="-1121"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pvv//w==" DoubleValue="-105235200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n/v//w==" DoubleValue="-96854400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/v//w==" LintValue="-1121"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Avz//w==" LintValue="-1022"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n/v//w==" DoubleValue="-96854400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Avz//w==" DoubleValue="-88300800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Avz//w==" LintValue="-1022"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvz//w==" LintValue="-926"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Avz//w==" DoubleValue="-88300800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvz//w==" DoubleValue="-80006400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021936" DistinctValues="55.508876">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvz//w==" LintValue="-926"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/z//w==" LintValue="-873"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvz//w==" DoubleValue="-80006400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/z//w==" DoubleValue="-75427200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/z//w==" LintValue="-873"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="l/z//w==" LintValue="-873"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/z//w==" DoubleValue="-75427200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="l/z//w==" DoubleValue="-75427200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015728" DistinctValues="39.798817">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="l/z//w==" LintValue="-873"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfz//w==" LintValue="-835"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="l/z//w==" DoubleValue="-75427200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfz//w==" DoubleValue="-72144000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfz//w==" LintValue="-835"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hv3//w==" LintValue="-738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfz//w==" DoubleValue="-72144000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hv3//w==" DoubleValue="-63763200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009216" DistinctValues="23.319967">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hv3//w==" LintValue="-738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nf3//w==" LintValue="-715"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hv3//w==" DoubleValue="-63763200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nf3//w==" DoubleValue="-61776000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nf3//w==" LintValue="-715"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nf3//w==" LintValue="-715"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nf3//w==" DoubleValue="-61776000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nf3//w==" DoubleValue="-61776000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028448" DistinctValues="71.987725">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nf3//w==" LintValue="-715"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nf3//w==" DoubleValue="-61776000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003606" DistinctValues="9.125205">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" LintValue="-644"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hf3//w==" LintValue="-635"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fP3//w==" DoubleValue="-55641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hf3//w==" DoubleValue="-54864000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hf3//w==" LintValue="-635"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hf3//w==" LintValue="-635"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hf3//w==" DoubleValue="-54864000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hf3//w==" DoubleValue="-54864000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.034058" DistinctValues="86.182488">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hf3//w==" LintValue="-635"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2v3//w==" LintValue="-550"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hf3//w==" DoubleValue="-54864000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2v3//w==" DoubleValue="-47520000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001345" DistinctValues="3.403846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v3//w==" LintValue="-550"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3/3//w==" LintValue="-545"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v3//w==" DoubleValue="-47520000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3/3//w==" DoubleValue="-47088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3/3//w==" LintValue="-545"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3/3//w==" LintValue="-545"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3/3//w==" DoubleValue="-47088000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3/3//w==" DoubleValue="-47088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.036319" DistinctValues="91.903846">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3/3//w==" LintValue="-545"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zv7//w==" LintValue="-410"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3/3//w==" DoubleValue="-47088000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zv7//w==" DoubleValue="-35424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037664" DistinctValues="96.307692">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zv7//w==" LintValue="-410"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bf7//w==" LintValue="-403"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zv7//w==" DoubleValue="-35424000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bf7//w==" DoubleValue="-34819200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.11778166.1.1.2" Name="l_suppkey" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
@@ -4874,308 +4874,308 @@ ORDER BY s_name;
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.11778166.1.1.12" Name="l_receiptdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.028258" DistinctValues="71.711538">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pPT//w==" LintValue="-2908"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="H/X//w==" LintValue="-2785"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pPT//w==" DoubleValue="-251251200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="H/X//w==" DoubleValue="-240624000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="H/X//w==" LintValue="-2785"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="H/X//w==" LintValue="-2785"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="H/X//w==" DoubleValue="-240624000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="H/X//w==" DoubleValue="-240624000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009419" DistinctValues="23.903846">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="H/X//w==" LintValue="-2785"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPX//w==" LintValue="-2744"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="H/X//w==" DoubleValue="-240624000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPX//w==" DoubleValue="-237081600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPX//w==" LintValue="-2744"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rfX//w==" LintValue="-2643"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPX//w==" DoubleValue="-237081600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rfX//w==" DoubleValue="-228355200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008843" DistinctValues="22.440345">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rfX//w==" LintValue="-2643"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPX//w==" LintValue="-2620"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rfX//w==" DoubleValue="-228355200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPX//w==" DoubleValue="-226368000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPX//w==" LintValue="-2620"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xPX//w==" LintValue="-2620"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPX//w==" DoubleValue="-226368000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xPX//w==" DoubleValue="-226368000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028835" DistinctValues="73.175039">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xPX//w==" LintValue="-2620"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/b//w==" LintValue="-2545"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xPX//w==" DoubleValue="-226368000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/b//w==" DoubleValue="-219888000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/b//w==" LintValue="-2545"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bvb//w==" LintValue="-2450"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/b//w==" DoubleValue="-219888000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bvb//w==" DoubleValue="-211680000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bvb//w==" LintValue="-2450"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPb//w==" LintValue="-2356"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bvb//w==" DoubleValue="-211680000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPb//w==" DoubleValue="-203558400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010885" DistinctValues="27.044444">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPb//w==" LintValue="-2356"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPb//w==" DoubleValue="-203558400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005861" DistinctValues="14.562393">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pb//w==" LintValue="-2316"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pb//w==" DoubleValue="-200102400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pb//w==" LintValue="-2316"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pb//w==" LintValue="-2316"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pb//w==" DoubleValue="-200102400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9Pb//w==" DoubleValue="-200102400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012141" DistinctValues="30.164957">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pb//w==" LintValue="-2316"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Eff//w==" LintValue="-2287"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9Pb//w==" DoubleValue="-200102400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Eff//w==" DoubleValue="-197596800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Eff//w==" LintValue="-2287"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Eff//w==" LintValue="-2287"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Eff//w==" DoubleValue="-197596800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Eff//w==" DoubleValue="-197596800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008791" DistinctValues="21.843590">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Eff//w==" LintValue="-2287"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvf//w==" LintValue="-2266"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Eff//w==" DoubleValue="-197596800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvf//w==" DoubleValue="-195782400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007912" DistinctValues="19.869231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvf//w==" LintValue="-2266"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/f//w==" LintValue="-2245"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvf//w==" DoubleValue="-195782400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/f//w==" DoubleValue="-193968000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/f//w==" LintValue="-2245"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="O/f//w==" LintValue="-2245"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/f//w==" DoubleValue="-193968000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="O/f//w==" DoubleValue="-193968000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017709" DistinctValues="44.469231">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="O/f//w==" LintValue="-2245"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="O/f//w==" DoubleValue="-193968000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012057" DistinctValues="30.276923">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivf//w==" LintValue="-2166"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivf//w==" DoubleValue="-187142400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivf//w==" LintValue="-2166"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6/f//w==" LintValue="-2069"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivf//w==" DoubleValue="-187142400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6/f//w==" DoubleValue="-178761600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.035014" DistinctValues="88.854701">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6/f//w==" LintValue="-2069"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="R/j//w==" LintValue="-1977"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6/f//w==" DoubleValue="-178761600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="R/j//w==" DoubleValue="-170812800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="R/j//w==" LintValue="-1977"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="R/j//w==" LintValue="-1977"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="R/j//w==" DoubleValue="-170812800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="R/j//w==" DoubleValue="-170812800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002664" DistinctValues="6.760684">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="R/j//w==" LintValue="-1977"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvj//w==" LintValue="-1970"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="R/j//w==" DoubleValue="-170812800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tvj//w==" DoubleValue="-170208000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006814" DistinctValues="16.930442">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvj//w==" LintValue="-1970"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/j//w==" LintValue="-1953"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tvj//w==" DoubleValue="-170208000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="X/j//w==" DoubleValue="-168739200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000734" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/j//w==" LintValue="-1953"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="X/j//w==" LintValue="-1953"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="X/j//w==" DoubleValue="-168739200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="X/j//w==" DoubleValue="-168739200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001202" DistinctValues="2.987725">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="X/j//w==" LintValue="-1953"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvj//w==" LintValue="-1950"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="X/j//w==" DoubleValue="-168739200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvj//w==" DoubleValue="-168480000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000937" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvj//w==" LintValue="-1950"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvj//w==" LintValue="-1950"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvj//w==" DoubleValue="-168480000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvj//w==" DoubleValue="-168480000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.026855" DistinctValues="66.725859">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvj//w==" LintValue="-1950"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pfj//w==" LintValue="-1883"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvj//w==" DoubleValue="-168480000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pfj//w==" DoubleValue="-162691200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pfj//w==" LintValue="-1883"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pfj//w==" LintValue="-1883"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pfj//w==" DoubleValue="-162691200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pfj//w==" DoubleValue="-162691200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002806" DistinctValues="6.971358">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pfj//w==" LintValue="-1883"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPj//w==" LintValue="-1876"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pfj//w==" DoubleValue="-162691200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPj//w==" DoubleValue="-162086400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPj//w==" LintValue="-1876"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/n//w==" LintValue="-1777"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPj//w==" DoubleValue="-162086400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/n//w==" DoubleValue="-153532800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/n//w==" LintValue="-1777"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bvn//w==" LintValue="-1682"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/n//w==" DoubleValue="-153532800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bvn//w==" DoubleValue="-145324800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017269" DistinctValues="43.365385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bvn//w==" LintValue="-1682"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mvn//w==" LintValue="-1638"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bvn//w==" DoubleValue="-145324800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mvn//w==" DoubleValue="-141523200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mvn//w==" LintValue="-1638"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mvn//w==" LintValue="-1638"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mvn//w==" DoubleValue="-141523200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mvn//w==" DoubleValue="-141523200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016876" DistinctValues="42.379808">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mvn//w==" LintValue="-1638"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfn//w==" LintValue="-1595"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mvn//w==" DoubleValue="-141523200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfn//w==" DoubleValue="-137808000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfn//w==" LintValue="-1595"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xfn//w==" LintValue="-1595"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfn//w==" DoubleValue="-137808000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xfn//w==" DoubleValue="-137808000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003532" DistinctValues="8.870192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xfn//w==" LintValue="-1595"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zvn//w==" LintValue="-1586"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xfn//w==" DoubleValue="-137808000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zvn//w==" DoubleValue="-137030400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028651" DistinctValues="71.947115">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zvn//w==" LintValue="-1586"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/r//w==" LintValue="-1513"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zvn//w==" DoubleValue="-137030400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/r//w==" DoubleValue="-130723200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/r//w==" LintValue="-1513"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="F/r//w==" LintValue="-1513"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/r//w==" DoubleValue="-130723200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="F/r//w==" DoubleValue="-130723200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005102" DistinctValues="12.812500">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="F/r//w==" LintValue="-1513"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JPr//w==" LintValue="-1500"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="F/r//w==" DoubleValue="-130723200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JPr//w==" DoubleValue="-129600000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000937" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JPr//w==" LintValue="-1500"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JPr//w==" LintValue="-1500"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JPr//w==" DoubleValue="-129600000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JPr//w==" DoubleValue="-129600000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003925" DistinctValues="9.855769">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JPr//w==" LintValue="-1500"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvr//w==" LintValue="-1490"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JPr//w==" DoubleValue="-129600000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvr//w==" DoubleValue="-128736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003884" DistinctValues="9.754163">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvr//w==" LintValue="-1490"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OPr//w==" LintValue="-1480"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvr//w==" DoubleValue="-128736000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OPr//w==" DoubleValue="-127872000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OPr//w==" LintValue="-1480"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="OPr//w==" LintValue="-1480"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OPr//w==" DoubleValue="-127872000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="OPr//w==" DoubleValue="-127872000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006603" DistinctValues="16.582078">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="OPr//w==" LintValue="-1480"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sfr//w==" LintValue="-1463"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="OPr//w==" DoubleValue="-127872000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sfr//w==" DoubleValue="-126403200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000897" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sfr//w==" LintValue="-1463"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Sfr//w==" LintValue="-1463"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sfr//w==" DoubleValue="-126403200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Sfr//w==" DoubleValue="-126403200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.027190" DistinctValues="68.279144">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Sfr//w==" LintValue="-1463"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/r//w==" LintValue="-1393"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Sfr//w==" DoubleValue="-126403200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/r//w==" DoubleValue="-120355200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/r//w==" LintValue="-1393"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7fr//w==" LintValue="-1299"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/r//w==" DoubleValue="-120355200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7fr//w==" DoubleValue="-112233600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012952" DistinctValues="32.867788">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7fr//w==" LintValue="-1299"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvv//w==" LintValue="-1266"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7fr//w==" DoubleValue="-112233600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvv//w==" DoubleValue="-109382400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvv//w==" LintValue="-1266"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvv//w==" LintValue="-1266"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvv//w==" DoubleValue="-109382400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvv//w==" DoubleValue="-109382400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024726" DistinctValues="62.747596">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvv//w==" LintValue="-1266"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tfv//w==" LintValue="-1203"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvv//w==" DoubleValue="-109382400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tfv//w==" DoubleValue="-103939200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tfv//w==" LintValue="-1203"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rvv//w==" LintValue="-1106"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tfv//w==" DoubleValue="-103939200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rvv//w==" DoubleValue="-95558400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009419" DistinctValues="23.903846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rvv//w==" LintValue="-1106"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="x/v//w==" LintValue="-1081"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rvv//w==" DoubleValue="-95558400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="x/v//w==" DoubleValue="-93398400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="x/v//w==" LintValue="-1081"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="x/v//w==" LintValue="-1081"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="x/v//w==" DoubleValue="-93398400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="x/v//w==" DoubleValue="-93398400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028258" DistinctValues="71.711538">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="x/v//w==" LintValue="-1081"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Evz//w==" LintValue="-1006"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="x/v//w==" DoubleValue="-93398400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Evz//w==" DoubleValue="-86918400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008017" DistinctValues="20.343699">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Evz//w==" LintValue="-1006"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvz//w==" LintValue="-986"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Evz//w==" DoubleValue="-86918400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvz//w==" DoubleValue="-85190400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000815" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvz//w==" LintValue="-986"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvz//w==" LintValue="-986"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvz//w==" DoubleValue="-85190400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvz//w==" DoubleValue="-85190400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.029661" DistinctValues="75.271686">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvz//w==" LintValue="-986"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cPz//w==" LintValue="-912"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvz//w==" DoubleValue="-85190400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cPz//w==" DoubleValue="-78796800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013370" DistinctValues="33.928040">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cPz//w==" LintValue="-912"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfz//w==" LintValue="-879"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cPz//w==" DoubleValue="-78796800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfz//w==" DoubleValue="-75945600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfz//w==" LintValue="-879"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfz//w==" LintValue="-879"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfz//w==" DoubleValue="-75945600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfz//w==" DoubleValue="-75945600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024308" DistinctValues="61.687345">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfz//w==" LintValue="-879"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zfz//w==" LintValue="-819"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfz//w==" DoubleValue="-75945600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zfz//w==" DoubleValue="-70761600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zfz//w==" LintValue="-819"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lv3//w==" LintValue="-722"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zfz//w==" DoubleValue="-70761600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lv3//w==" DoubleValue="-62380800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001202" DistinctValues="3.019640">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lv3//w==" LintValue="-722"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mf3//w==" LintValue="-719"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lv3//w==" DoubleValue="-62380800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mf3//w==" DoubleValue="-62121600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mf3//w==" LintValue="-719"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Mf3//w==" LintValue="-719"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mf3//w==" DoubleValue="-62121600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Mf3//w==" DoubleValue="-62121600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024450" DistinctValues="61.399345">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Mf3//w==" LintValue="-719"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bv3//w==" LintValue="-658"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Mf3//w==" DoubleValue="-62121600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bv3//w==" DoubleValue="-56851200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bv3//w==" LintValue="-658"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bv3//w==" LintValue="-658"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bv3//w==" DoubleValue="-56851200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="bv3//w==" DoubleValue="-56851200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012025" DistinctValues="30.196399">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bv3//w==" LintValue="-658"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jP3//w==" LintValue="-628"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="bv3//w==" DoubleValue="-56851200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jP3//w==" DoubleValue="-54259200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023903" DistinctValues="60.024814">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jP3//w==" LintValue="-628"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="x/3//w==" LintValue="-569"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jP3//w==" DoubleValue="-54259200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="x/3//w==" DoubleValue="-49161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000856" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="x/3//w==" LintValue="-569"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="x/3//w==" LintValue="-569"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="x/3//w==" DoubleValue="-49161600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="x/3//w==" DoubleValue="-49161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008913" DistinctValues="22.382134">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="x/3//w==" LintValue="-569"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3f3//w==" LintValue="-547"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="x/3//w==" DoubleValue="-49161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3f3//w==" DoubleValue="-47260800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000774" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3f3//w==" LintValue="-547"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3f3//w==" LintValue="-547"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3f3//w==" DoubleValue="-47260800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3f3//w==" DoubleValue="-47260800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004862" DistinctValues="12.208437">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3f3//w==" LintValue="-547"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f3//w==" LintValue="-535"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3f3//w==" DoubleValue="-47260800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f3//w==" DoubleValue="-46224000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f3//w==" LintValue="-535"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dP7//w==" LintValue="-396"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f3//w==" DoubleValue="-46224000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dP7//w==" DoubleValue="-34214400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037678" DistinctValues="96.615385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dP7//w==" LintValue="-396"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hf7//w==" LintValue="-379"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dP7//w==" DoubleValue="-34214400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hf7//w==" DoubleValue="-32745600000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.11778166.1.1.5" Name="l_extendedprice" Width="10.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
@@ -6270,7 +6270,7 @@ ORDER BY s_name;
</dxl:Comparison>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="48" ColName="l_shipdate" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ufv//w==" LintValue="-1095"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ufv//w==" DoubleValue="-94608000000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
<dxl:Ident ColId="40" ColName="l_suppkey" TypeMdid="0.23.1.0"/>
@@ -6723,7 +6723,7 @@ ORDER BY s_name;
<dxl:Filter>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="47" ColName="l_shipdate" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ufv//w==" LintValue="-1095"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="ufv//w==" DoubleValue="-94608000000000.000000"/>
</dxl:Comparison>
</dxl:Filter>
<dxl:TableDescriptor Mdid="6.11778166.1.1" TableName="lineitem_ao_column_none_level0">
diff --git a/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp b/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp
index 0e7d973f05..859d6162b5 100644
--- a/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp
+++ b/src/backend/gporca/data/dxl/minidump/HJN-Redistribute-One-Side.mdp
@@ -671,308 +671,308 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.5844974.1.1.12" Name="l_receiptdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfT//w==" LintValue="-2915"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="R/X//w==" LintValue="-2745"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfT//w==" DoubleValue="-251856000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="R/X//w==" DoubleValue="-237168000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="R/X//w==" LintValue="-2745"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p/X//w==" LintValue="-2649"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="R/X//w==" DoubleValue="-237168000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p/X//w==" DoubleValue="-228873600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016693" DistinctValues="42.323077">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p/X//w==" LintValue="-2649"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p/X//w==" DoubleValue="-228873600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021066" DistinctValues="53.407692">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bvb//w==" LintValue="-2554"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bvb//w==" DoubleValue="-220665600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028118" DistinctValues="71.288871">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bvb//w==" LintValue="-2554"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPb//w==" LintValue="-2484"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bvb//w==" DoubleValue="-220665600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPb//w==" DoubleValue="-214617600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPb//w==" LintValue="-2484"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="TPb//w==" LintValue="-2484"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPb//w==" DoubleValue="-214617600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="TPb//w==" DoubleValue="-214617600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009641" DistinctValues="24.441899">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="TPb//w==" LintValue="-2484"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZPb//w==" LintValue="-2460"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="TPb//w==" DoubleValue="-214617600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZPb//w==" DoubleValue="-212544000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009539" DistinctValues="23.931984">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZPb//w==" LintValue="-2460"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fPb//w==" LintValue="-2436"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZPb//w==" DoubleValue="-212544000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fPb//w==" DoubleValue="-210470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fPb//w==" LintValue="-2436"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fPb//w==" LintValue="-2436"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fPb//w==" DoubleValue="-210470400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fPb//w==" DoubleValue="-210470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.026630" DistinctValues="66.810121">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fPb//w==" LintValue="-2436"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/b//w==" LintValue="-2369"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fPb//w==" DoubleValue="-210470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/b//w==" DoubleValue="-204681600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/b//w==" LintValue="-2369"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v/b//w==" LintValue="-2369"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/b//w==" DoubleValue="-204681600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v/b//w==" DoubleValue="-204681600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001590" DistinctValues="3.988664">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="v/b//w==" LintValue="-2369"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="w/b//w==" LintValue="-2365"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="v/b//w==" DoubleValue="-204681600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="w/b//w==" DoubleValue="-204336000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012863" DistinctValues="31.930262">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="w/b//w==" LintValue="-2365"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4vb//w==" LintValue="-2334"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="w/b//w==" DoubleValue="-204336000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4vb//w==" DoubleValue="-201657600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4vb//w==" LintValue="-2334"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="4vb//w==" LintValue="-2334"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4vb//w==" DoubleValue="-201657600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="4vb//w==" DoubleValue="-201657600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001245" DistinctValues="3.090025">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="4vb//w==" LintValue="-2334"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5fb//w==" LintValue="-2331"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="4vb//w==" DoubleValue="-201657600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5fb//w==" DoubleValue="-201398400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5fb//w==" LintValue="-2331"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5fb//w==" LintValue="-2331"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5fb//w==" DoubleValue="-201398400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5fb//w==" DoubleValue="-201398400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000415" DistinctValues="1.030008">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5fb//w==" LintValue="-2331"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5fb//w==" DoubleValue="-201398400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023236" DistinctValues="57.680473">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" LintValue="-2330"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvf//w==" LintValue="-2274"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5vb//w==" DoubleValue="-201312000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvf//w==" DoubleValue="-196473600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006567" DistinctValues="16.301003">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvf//w==" LintValue="-2274"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvf//w==" LintValue="-2258"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvf//w==" DoubleValue="-196473600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvf//w==" DoubleValue="-195091200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000837" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvf//w==" LintValue="-2258"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvf//w==" LintValue="-2258"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvf//w==" DoubleValue="-195091200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Lvf//w==" DoubleValue="-195091200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001642" DistinctValues="4.075251">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvf//w==" LintValue="-2258"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvf//w==" LintValue="-2254"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Lvf//w==" DoubleValue="-195091200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvf//w==" DoubleValue="-194745600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000837" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvf//w==" LintValue="-2254"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvf//w==" LintValue="-2254"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvf//w==" DoubleValue="-194745600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvf//w==" DoubleValue="-194745600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.011081" DistinctValues="27.507943">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvf//w==" LintValue="-2254"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tff//w==" LintValue="-2227"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvf//w==" DoubleValue="-194745600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tff//w==" DoubleValue="-192412800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tff//w==" LintValue="-2227"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Tff//w==" LintValue="-2227"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tff//w==" DoubleValue="-192412800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Tff//w==" DoubleValue="-192412800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.018469" DistinctValues="45.846572">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Tff//w==" LintValue="-2227"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="evf//w==" LintValue="-2182"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Tff//w==" DoubleValue="-192412800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="evf//w==" DoubleValue="-188524800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="evf//w==" LintValue="-2182"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2/f//w==" LintValue="-2085"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="evf//w==" DoubleValue="-188524800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2/f//w==" DoubleValue="-180144000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001168" DistinctValues="2.960745">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2/f//w==" LintValue="-2085"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2/f//w==" DoubleValue="-180144000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.036591" DistinctValues="92.770024">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PPj//w==" LintValue="-1988"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PPj//w==" DoubleValue="-171763200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PPj//w==" LintValue="-1988"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfj//w==" LintValue="-1891"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PPj//w==" DoubleValue="-171763200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfj//w==" DoubleValue="-163382400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013804" DistinctValues="34.998346">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfj//w==" LintValue="-1891"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/j//w==" LintValue="-1857"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfj//w==" DoubleValue="-163382400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/j//w==" DoubleValue="-160444800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/j//w==" LintValue="-1857"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v/j//w==" LintValue="-1857"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/j//w==" DoubleValue="-160444800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v/j//w==" DoubleValue="-160444800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023955" DistinctValues="60.732423">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="v/j//w==" LintValue="-1857"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vj//w==" LintValue="-1798"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="v/j//w==" DoubleValue="-160444800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vj//w==" DoubleValue="-155347200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023356" DistinctValues="57.359239">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vj//w==" LintValue="-1798"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvn//w==" LintValue="-1738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vj//w==" DoubleValue="-155347200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvn//w==" DoubleValue="-150163200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvn//w==" LintValue="-1738"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvn//w==" LintValue="-1738"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvn//w==" DoubleValue="-150163200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvn//w==" DoubleValue="-150163200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001557" DistinctValues="3.823949">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvn//w==" LintValue="-1738"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvn//w==" DoubleValue="-150163200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002336" DistinctValues="5.735924">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QPn//w==" LintValue="-1728"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="QPn//w==" DoubleValue="-149299200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QPn//w==" LintValue="-1728"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QPn//w==" LintValue="-1728"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="QPn//w==" DoubleValue="-149299200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="QPn//w==" DoubleValue="-149299200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001557" DistinctValues="3.823949">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QPn//w==" LintValue="-1728"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RPn//w==" LintValue="-1724"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="QPn//w==" DoubleValue="-149299200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RPn//w==" DoubleValue="-148953600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RPn//w==" LintValue="-1724"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RPn//w==" LintValue="-1724"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RPn//w==" DoubleValue="-148953600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RPn//w==" DoubleValue="-148953600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008953" DistinctValues="21.987708">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RPn//w==" LintValue="-1724"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="W/n//w==" LintValue="-1701"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RPn//w==" DoubleValue="-148953600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="W/n//w==" DoubleValue="-146966400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="W/n//w==" LintValue="-1701"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvn//w==" LintValue="-1606"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="W/n//w==" DoubleValue="-146966400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvn//w==" DoubleValue="-138758400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvn//w==" LintValue="-1606"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPr//w==" LintValue="-1512"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvn//w==" DoubleValue="-138758400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GPr//w==" DoubleValue="-130636800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006902" DistinctValues="17.133581">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPr//w==" LintValue="-1512"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfr//w==" LintValue="-1495"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GPr//w==" DoubleValue="-130636800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfr//w==" DoubleValue="-129168000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfr//w==" LintValue="-1495"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfr//w==" LintValue="-1495"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfr//w==" DoubleValue="-129168000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfr//w==" DoubleValue="-129168000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007308" DistinctValues="18.141439">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfr//w==" LintValue="-1495"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/r//w==" LintValue="-1477"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfr//w==" DoubleValue="-129168000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/r//w==" DoubleValue="-127612800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000807" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/r//w==" LintValue="-1477"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="O/r//w==" LintValue="-1477"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/r//w==" DoubleValue="-127612800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="O/r//w==" DoubleValue="-127612800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017052" DistinctValues="42.330025">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="O/r//w==" LintValue="-1477"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="O/r//w==" DoubleValue="-127612800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006496" DistinctValues="16.125724">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dfr//w==" LintValue="-1419"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dfr//w==" DoubleValue="-122601600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.032151" DistinctValues="81.513328">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dfr//w==" LintValue="-1419"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/r//w==" LintValue="-1333"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dfr//w==" DoubleValue="-122601600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/r//w==" DoubleValue="-115171200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/r//w==" LintValue="-1333"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="y/r//w==" LintValue="-1333"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/r//w==" DoubleValue="-115171200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="y/r//w==" DoubleValue="-115171200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005608" DistinctValues="14.217441">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="y/r//w==" LintValue="-1333"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2vr//w==" LintValue="-1318"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="y/r//w==" DoubleValue="-115171200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2vr//w==" DoubleValue="-113875200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2vr//w==" LintValue="-1318"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ofv//w==" LintValue="-1223"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2vr//w==" DoubleValue="-113875200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ofv//w==" DoubleValue="-105667200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.033521" DistinctValues="84.985479">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ofv//w==" LintValue="-1223"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kPv//w==" LintValue="-1136"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ofv//w==" DoubleValue="-105667200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kPv//w==" DoubleValue="-98150400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kPv//w==" LintValue="-1136"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kPv//w==" LintValue="-1136"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kPv//w==" DoubleValue="-98150400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kPv//w==" DoubleValue="-98150400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004238" DistinctValues="10.745290">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kPv//w==" LintValue="-1136"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="m/v//w==" LintValue="-1125"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kPv//w==" DoubleValue="-98150400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="m/v//w==" DoubleValue="-97200000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m/v//w==" LintValue="-1125"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vv//w==" LintValue="-1030"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m/v//w==" DoubleValue="-97200000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vv//w==" DoubleValue="-88992000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002697" DistinctValues="6.766484">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vv//w==" LintValue="-1030"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Afz//w==" LintValue="-1023"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vv//w==" DoubleValue="-88992000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Afz//w==" DoubleValue="-88387200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Afz//w==" LintValue="-1023"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Afz//w==" LintValue="-1023"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Afz//w==" DoubleValue="-88387200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Afz//w==" DoubleValue="-88387200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005009" DistinctValues="12.566327">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Afz//w==" LintValue="-1023"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvz//w==" LintValue="-1010"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Afz//w==" DoubleValue="-88387200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvz//w==" DoubleValue="-87264000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvz//w==" LintValue="-1010"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvz//w==" LintValue="-1010"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvz//w==" DoubleValue="-87264000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvz//w==" DoubleValue="-87264000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.030053" DistinctValues="75.397959">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvz//w==" LintValue="-1010"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="XPz//w==" LintValue="-932"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvz//w==" DoubleValue="-87264000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="XPz//w==" DoubleValue="-80524800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001573" DistinctValues="3.988782">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="XPz//w==" LintValue="-932"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="YPz//w==" LintValue="-928"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="XPz//w==" DoubleValue="-80524800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="YPz//w==" DoubleValue="-80179200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="YPz//w==" LintValue="-928"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="YPz//w==" LintValue="-928"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="YPz//w==" DoubleValue="-80179200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="YPz//w==" DoubleValue="-80179200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.036186" DistinctValues="91.741987">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="YPz//w==" LintValue="-928"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPz//w==" LintValue="-836"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="YPz//w==" DoubleValue="-80179200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPz//w==" DoubleValue="-72230400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023206" DistinctValues="58.834535">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPz//w==" LintValue="-836"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9/z//w==" LintValue="-777"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPz//w==" DoubleValue="-72230400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9/z//w==" DoubleValue="-67132800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9/z//w==" LintValue="-777"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9/z//w==" LintValue="-777"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9/z//w==" DoubleValue="-67132800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9/z//w==" DoubleValue="-67132800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.014553" DistinctValues="36.896234">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9/z//w==" LintValue="-777"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9/z//w==" DoubleValue="-67132800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" LintValue="-740"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fv3//w==" LintValue="-642"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HP3//w==" DoubleValue="-63936000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fv3//w==" DoubleValue="-55468800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fv3//w==" LintValue="-642"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5P3//w==" LintValue="-540"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fv3//w==" DoubleValue="-55468800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5P3//w==" DoubleValue="-46656000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5P3//w==" LintValue="-540"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dP7//w==" LintValue="-396"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5P3//w==" DoubleValue="-46656000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dP7//w==" DoubleValue="-34214400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037759" DistinctValues="96.730769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dP7//w==" LintValue="-396"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="if7//w==" LintValue="-375"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dP7//w==" DoubleValue="-34214400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="if7//w==" DoubleValue="-32400000000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.5844974.1.1.5" Name="l_extendedprice" Width="10.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
@@ -2192,300 +2192,300 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.5844948.1.1.4" Name="o_orderdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.039218" DistinctValues="96.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvT//w==" LintValue="-2922"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9/T//w==" LintValue="-2825"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvT//w==" DoubleValue="-252460800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9/T//w==" DoubleValue="-244080000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9/T//w==" LintValue="-2825"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9/T//w==" LintValue="-2825"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9/T//w==" DoubleValue="-244080000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9/T//w==" DoubleValue="-244080000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.033090" DistinctValues="79.515000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9/T//w==" LintValue="-2825"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPX//w==" LintValue="-2744"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9/T//w==" DoubleValue="-244080000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPX//w==" DoubleValue="-237081600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPX//w==" LintValue="-2744"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SPX//w==" LintValue="-2744"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPX//w==" DoubleValue="-237081600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SPX//w==" DoubleValue="-237081600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006128" DistinctValues="14.725000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="SPX//w==" LintValue="-2744"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="V/X//w==" LintValue="-2729"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="SPX//w==" DoubleValue="-237081600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="V/X//w==" DoubleValue="-235785600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001201" DistinctValues="2.915510">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="V/X//w==" LintValue="-2729"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="WvX//w==" LintValue="-2726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="V/X//w==" DoubleValue="-235785600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="WvX//w==" DoubleValue="-235526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="WvX//w==" LintValue="-2726"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="WvX//w==" LintValue="-2726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="WvX//w==" DoubleValue="-235526400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="WvX//w==" DoubleValue="-235526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038018" DistinctValues="92.324490">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="WvX//w==" LintValue="-2726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ufX//w==" LintValue="-2631"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="WvX//w==" DoubleValue="-235526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ufX//w==" DoubleValue="-227318400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023615" DistinctValues="57.348817">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ufX//w==" LintValue="-2631"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8fX//w==" LintValue="-2575"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ufX//w==" DoubleValue="-227318400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8fX//w==" DoubleValue="-222480000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8fX//w==" LintValue="-2575"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8fX//w==" LintValue="-2575"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8fX//w==" DoubleValue="-222480000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8fX//w==" DoubleValue="-222480000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015603" DistinctValues="37.891183">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8fX//w==" LintValue="-2575"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fvb//w==" LintValue="-2538"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8fX//w==" DoubleValue="-222480000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fvb//w==" DoubleValue="-219283200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009179" DistinctValues="22.056170">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fvb//w==" LintValue="-2538"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LPb//w==" LintValue="-2516"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fvb//w==" DoubleValue="-219283200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LPb//w==" DoubleValue="-217382400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LPb//w==" LintValue="-2516"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LPb//w==" LintValue="-2516"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LPb//w==" DoubleValue="-217382400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LPb//w==" DoubleValue="-217382400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024198" DistinctValues="58.148085">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="LPb//w==" LintValue="-2516"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zvb//w==" LintValue="-2458"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="LPb//w==" DoubleValue="-217382400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zvb//w==" DoubleValue="-212371200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zvb//w==" LintValue="-2458"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zvb//w==" LintValue="-2458"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zvb//w==" DoubleValue="-212371200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zvb//w==" DoubleValue="-212371200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005841" DistinctValues="14.035745">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zvb//w==" LintValue="-2458"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dPb//w==" LintValue="-2444"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zvb//w==" DoubleValue="-212371200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dPb//w==" DoubleValue="-211161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009507" DistinctValues="23.088485">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dPb//w==" LintValue="-2444"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jPb//w==" LintValue="-2420"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dPb//w==" DoubleValue="-211161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jPb//w==" DoubleValue="-209088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000804" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jPb//w==" LintValue="-2420"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jPb//w==" LintValue="-2420"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jPb//w==" DoubleValue="-209088000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jPb//w==" DoubleValue="-209088000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.029711" DistinctValues="72.151515">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jPb//w==" LintValue="-2420"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1/b//w==" LintValue="-2345"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jPb//w==" DoubleValue="-209088000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1/b//w==" DoubleValue="-202608000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.039218" DistinctValues="96.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1/b//w==" LintValue="-2345"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvf//w==" LintValue="-2250"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1/b//w==" DoubleValue="-202608000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nvf//w==" DoubleValue="-194400000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.039218" DistinctValues="96.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvf//w==" LintValue="-2250"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/f//w==" LintValue="-2153"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nvf//w==" DoubleValue="-194400000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/f//w==" DoubleValue="-186019200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006803" DistinctValues="16.521224">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/f//w==" LintValue="-2153"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPf//w==" LintValue="-2136"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/f//w==" DoubleValue="-186019200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPf//w==" DoubleValue="-184550400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPf//w==" LintValue="-2136"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qPf//w==" LintValue="-2136"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPf//w==" DoubleValue="-184550400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qPf//w==" DoubleValue="-184550400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.032415" DistinctValues="78.718776">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qPf//w==" LintValue="-2136"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+ff//w==" LintValue="-2055"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qPf//w==" DoubleValue="-184550400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+ff//w==" DoubleValue="-177552000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013641" DistinctValues="33.126957">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+ff//w==" LintValue="-2055"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gfj//w==" LintValue="-2023"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+ff//w==" DoubleValue="-177552000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Gfj//w==" DoubleValue="-174787200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gfj//w==" LintValue="-2023"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Gfj//w==" LintValue="-2023"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Gfj//w==" DoubleValue="-174787200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Gfj//w==" DoubleValue="-174787200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.025577" DistinctValues="62.113043">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Gfj//w==" LintValue="-2023"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfj//w==" LintValue="-1963"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Gfj//w==" DoubleValue="-174787200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vfj//w==" DoubleValue="-169603200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.033439" DistinctValues="81.204632">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfj//w==" LintValue="-1963"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pvj//w==" LintValue="-1882"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vfj//w==" DoubleValue="-169603200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pvj//w==" DoubleValue="-162604800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pvj//w==" LintValue="-1882"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pvj//w==" LintValue="-1882"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pvj//w==" DoubleValue="-162604800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pvj//w==" DoubleValue="-162604800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005780" DistinctValues="14.035368">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pvj//w==" LintValue="-1882"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tPj//w==" LintValue="-1868"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pvj//w==" DoubleValue="-162604800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tPj//w==" DoubleValue="-161395200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.039218" DistinctValues="96.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPj//w==" LintValue="-1868"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fvn//w==" LintValue="-1770"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPj//w==" DoubleValue="-161395200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Fvn//w==" DoubleValue="-152928000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015346" DistinctValues="36.876522">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fvn//w==" LintValue="-1770"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Fvn//w==" DoubleValue="-152928000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000707" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001279" DistinctValues="3.073043">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" LintValue="-1734"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pfn//w==" LintValue="-1731"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ovn//w==" DoubleValue="-149817600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pfn//w==" DoubleValue="-149558400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000965" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pfn//w==" LintValue="-1731"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Pfn//w==" LintValue="-1731"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pfn//w==" DoubleValue="-149558400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Pfn//w==" DoubleValue="-149558400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022593" DistinctValues="54.290435">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Pfn//w==" LintValue="-1731"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cvn//w==" LintValue="-1678"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Pfn//w==" DoubleValue="-149558400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cvn//w==" DoubleValue="-144979200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003234" DistinctValues="7.854845">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cvn//w==" LintValue="-1678"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="evn//w==" LintValue="-1670"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cvn//w==" DoubleValue="-144979200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="evn//w==" DoubleValue="-144288000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000707" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="evn//w==" LintValue="-1670"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="evn//w==" LintValue="-1670"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="evn//w==" DoubleValue="-144288000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="evn//w==" DoubleValue="-144288000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.035984" DistinctValues="87.385155">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="evn//w==" LintValue="-1670"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/n//w==" LintValue="-1581"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="evn//w==" DoubleValue="-144288000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/n//w==" DoubleValue="-136598400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023923" DistinctValues="58.096400">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/n//w==" LintValue="-1581"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EPr//w==" LintValue="-1520"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/n//w==" DoubleValue="-136598400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EPr//w==" DoubleValue="-131328000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EPr//w==" LintValue="-1520"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EPr//w==" LintValue="-1520"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EPr//w==" DoubleValue="-131328000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EPr//w==" DoubleValue="-131328000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015295" DistinctValues="37.143600">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EPr//w==" LintValue="-1520"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/r//w==" LintValue="-1481"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EPr//w==" DoubleValue="-131328000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="N/r//w==" DoubleValue="-127958400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.018990" DistinctValues="45.147789">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/r//w==" LintValue="-1481"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="N/r//w==" DoubleValue="-127958400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000804" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005780" DistinctValues="13.740632">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" LintValue="-1435"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/r//w==" LintValue="-1421"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zfr//w==" DoubleValue="-123984000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="c/r//w==" DoubleValue="-122774400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000868" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/r//w==" LintValue="-1421"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/r//w==" LintValue="-1421"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="c/r//w==" DoubleValue="-122774400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="c/r//w==" DoubleValue="-122774400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007018" DistinctValues="16.685053">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="c/r//w==" LintValue="-1421"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPr//w==" LintValue="-1404"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="c/r//w==" DoubleValue="-122774400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPr//w==" DoubleValue="-121305600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPr//w==" LintValue="-1404"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hPr//w==" LintValue="-1404"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPr//w==" DoubleValue="-121305600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hPr//w==" DoubleValue="-121305600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007431" DistinctValues="17.666526">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hPr//w==" LintValue="-1404"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvr//w==" LintValue="-1386"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hPr//w==" DoubleValue="-121305600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvr//w==" DoubleValue="-119750400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.039218" DistinctValues="96.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvr//w==" LintValue="-1386"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9vr//w==" LintValue="-1290"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvr//w==" DoubleValue="-119750400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9vr//w==" DoubleValue="-111456000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.034366" DistinctValues="82.581443">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9vr//w==" LintValue="-1290"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/v//w==" LintValue="-1205"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9vr//w==" DoubleValue="-111456000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/v//w==" DoubleValue="-104112000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/v//w==" LintValue="-1205"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="S/v//w==" LintValue="-1205"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/v//w==" DoubleValue="-104112000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="S/v//w==" DoubleValue="-104112000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004447" DistinctValues="10.687010">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="S/v//w==" LintValue="-1205"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vvv//w==" LintValue="-1194"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="S/v//w==" DoubleValue="-104112000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Vvv//w==" DoubleValue="-103161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000804" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vvv//w==" LintValue="-1194"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Vvv//w==" LintValue="-1194"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Vvv//w==" DoubleValue="-103161600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Vvv//w==" DoubleValue="-103161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000404" DistinctValues="0.971546">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Vvv//w==" LintValue="-1194"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="V/v//w==" LintValue="-1193"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Vvv//w==" DoubleValue="-103161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="V/v//w==" DoubleValue="-103075200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.020641" DistinctValues="49.600000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="V/v//w==" LintValue="-1193"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ifv//w==" LintValue="-1143"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="V/v//w==" DoubleValue="-103075200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ifv//w==" DoubleValue="-98755200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000772" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ifv//w==" LintValue="-1143"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ifv//w==" LintValue="-1143"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ifv//w==" DoubleValue="-98755200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ifv//w==" DoubleValue="-98755200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002477" DistinctValues="5.952000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ifv//w==" LintValue="-1143"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/v//w==" LintValue="-1137"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ifv//w==" DoubleValue="-98755200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/v//w==" DoubleValue="-98236800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000836" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/v//w==" LintValue="-1137"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="j/v//w==" LintValue="-1137"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/v//w==" DoubleValue="-98236800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="j/v//w==" DoubleValue="-98236800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016100" DistinctValues="38.688000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="j/v//w==" LintValue="-1137"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tvv//w==" LintValue="-1098"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="j/v//w==" DoubleValue="-98236800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tvv//w==" DoubleValue="-94867200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007673" DistinctValues="18.633913">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tvv//w==" LintValue="-1098"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yPv//w==" LintValue="-1080"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tvv//w==" DoubleValue="-94867200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yPv//w==" DoubleValue="-93312000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000836" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yPv//w==" LintValue="-1080"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="yPv//w==" LintValue="-1080"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yPv//w==" DoubleValue="-93312000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="yPv//w==" DoubleValue="-93312000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.031545" DistinctValues="76.606087">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="yPv//w==" LintValue="-1080"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Evz//w==" LintValue="-1006"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="yPv//w==" DoubleValue="-93312000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Evz//w==" DoubleValue="-86918400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.039218" DistinctValues="96.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Evz//w==" LintValue="-1006"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="d/z//w==" LintValue="-905"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Evz//w==" DoubleValue="-86918400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="d/z//w==" DoubleValue="-78192000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015274" DistinctValues="37.093474">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d/z//w==" LintValue="-905"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPz//w==" LintValue="-868"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d/z//w==" DoubleValue="-78192000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nPz//w==" DoubleValue="-74995200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" LintValue="-868"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" LintValue="-868"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" DoubleValue="-74995200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" DoubleValue="-74995200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023944" DistinctValues="58.146526">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nPz//w==" LintValue="-868"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1vz//w==" LintValue="-810"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nPz//w==" DoubleValue="-74995200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1vz//w==" DoubleValue="-69984000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.039218" DistinctValues="96.240000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1vz//w==" LintValue="-810"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/3//w==" LintValue="-709"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1vz//w==" DoubleValue="-69984000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/3//w==" DoubleValue="-61257600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012362" DistinctValues="30.021304">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/3//w==" LintValue="-709"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="WP3//w==" LintValue="-680"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/3//w==" DoubleValue="-61257600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="WP3//w==" DoubleValue="-58752000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000868" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="WP3//w==" LintValue="-680"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="WP3//w==" LintValue="-680"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="WP3//w==" DoubleValue="-58752000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="WP3//w==" DoubleValue="-58752000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.026856" DistinctValues="65.218696">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="WP3//w==" LintValue="-680"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/3//w==" LintValue="-617"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="WP3//w==" DoubleValue="-58752000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="l/3//w==" DoubleValue="-53308800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002745" DistinctValues="6.666800">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/3//w==" LintValue="-617"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nv3//w==" LintValue="-610"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/3//w==" DoubleValue="-53308800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nv3//w==" DoubleValue="-52704000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000740" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nv3//w==" LintValue="-610"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nv3//w==" LintValue="-610"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nv3//w==" DoubleValue="-52704000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nv3//w==" DoubleValue="-52704000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.036473" DistinctValues="88.573200">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nv3//w==" LintValue="-610"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+/3//w==" LintValue="-517"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nv3//w==" DoubleValue="-52704000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+/3//w==" DoubleValue="-44668800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:GPDBFunc Mdid="0.1740.1.0" Name="numeric" ReturnsSet="false" Stability="Immutable" IsStrict="true">
@@ -3458,614 +3458,614 @@
<dxl:ColumnStatistics Mdid="1.5844974.1.1.18" Name="cmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
<dxl:ColumnStatistics Mdid="1.5844974.1.1.11" Name="l_commitdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPT//w==" LintValue="-2892"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NvX//w==" LintValue="-2762"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPT//w==" DoubleValue="-249868800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NvX//w==" DoubleValue="-238636800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NvX//w==" LintValue="-2762"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvX//w==" LintValue="-2666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NvX//w==" DoubleValue="-238636800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvX//w==" DoubleValue="-230342400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028210" DistinctValues="69.246559">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvX//w==" LintValue="-2666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvX//w==" DoubleValue="-230342400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000807" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008741" DistinctValues="21.456680">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000795" DistinctValues="1.950607">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" LintValue="-2573"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9fX//w==" LintValue="-2571"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8/X//w==" DoubleValue="-222307200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9fX//w==" DoubleValue="-222134400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016688" DistinctValues="40.962753">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9fX//w==" LintValue="-2571"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="H/b//w==" LintValue="-2529"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9fX//w==" DoubleValue="-222134400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="H/b//w==" DoubleValue="-218505600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="H/b//w==" LintValue="-2529"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="H/b//w==" LintValue="-2529"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="H/b//w==" DoubleValue="-218505600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="H/b//w==" DoubleValue="-218505600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019866" DistinctValues="48.765182">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="H/b//w==" LintValue="-2529"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ufb//w==" LintValue="-2479"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="H/b//w==" DoubleValue="-218505600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ufb//w==" DoubleValue="-214185600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ufb//w==" LintValue="-2479"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ufb//w==" LintValue="-2479"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ufb//w==" DoubleValue="-214185600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Ufb//w==" DoubleValue="-214185600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001192" DistinctValues="2.925911">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ufb//w==" LintValue="-2479"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Ufb//w==" DoubleValue="-214185600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008741" DistinctValues="21.456680">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avb//w==" LintValue="-2454"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avb//w==" DoubleValue="-212025600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avb//w==" LintValue="-2454"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="avb//w==" LintValue="-2454"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avb//w==" DoubleValue="-212025600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="avb//w==" DoubleValue="-212025600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017085" DistinctValues="41.938057">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="avb//w==" LintValue="-2454"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lfb//w==" LintValue="-2411"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="avb//w==" DoubleValue="-212025600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lfb//w==" DoubleValue="-208310400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lfb//w==" LintValue="-2411"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lfb//w==" LintValue="-2411"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lfb//w==" DoubleValue="-208310400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lfb//w==" DoubleValue="-208310400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.011920" DistinctValues="29.259109">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lfb//w==" LintValue="-2411"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/b//w==" LintValue="-2381"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lfb//w==" DoubleValue="-208310400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/b//w==" DoubleValue="-205718400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007052" DistinctValues="17.495773">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/b//w==" LintValue="-2381"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPb//w==" LintValue="-2364"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/b//w==" DoubleValue="-205718400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPb//w==" DoubleValue="-204249600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPb//w==" LintValue="-2364"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xPb//w==" LintValue="-2364"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPb//w==" DoubleValue="-204249600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xPb//w==" DoubleValue="-204249600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.030695" DistinctValues="76.158073">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xPb//w==" LintValue="-2364"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvf//w==" LintValue="-2290"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xPb//w==" DoubleValue="-204249600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dvf//w==" DoubleValue="-197856000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvf//w==" LintValue="-2290"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dvf//w==" DoubleValue="-197856000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.018289" DistinctValues="44.894132">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mff//w==" LintValue="-2151"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mff//w==" DoubleValue="-185846400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mff//w==" LintValue="-2151"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mff//w==" LintValue="-2151"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mff//w==" DoubleValue="-185846400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mff//w==" DoubleValue="-185846400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007783" DistinctValues="19.103886">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mff//w==" LintValue="-2151"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rff//w==" LintValue="-2131"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mff//w==" DoubleValue="-185846400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rff//w==" DoubleValue="-184118400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000807" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rff//w==" LintValue="-2131"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rff//w==" LintValue="-2131"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rff//w==" DoubleValue="-184118400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rff//w==" DoubleValue="-184118400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.011674" DistinctValues="28.655829">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rff//w==" LintValue="-2131"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/f//w==" LintValue="-2101"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rff//w==" DoubleValue="-184118400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/f//w==" DoubleValue="-181526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/f//w==" LintValue="-2101"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kvj//w==" LintValue="-2006"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/f//w==" DoubleValue="-181526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kvj//w==" DoubleValue="-173318400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kvj//w==" LintValue="-2006"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivj//w==" LintValue="-1910"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kvj//w==" DoubleValue="-173318400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivj//w==" DoubleValue="-165024000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004575" DistinctValues="11.351981">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivj//w==" LintValue="-1910"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvj//w==" LintValue="-1898"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivj//w==" DoubleValue="-165024000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvj//w==" DoubleValue="-163987200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvj//w==" LintValue="-1898"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lvj//w==" LintValue="-1898"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvj//w==" DoubleValue="-163987200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lvj//w==" DoubleValue="-163987200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.033171" DistinctValues="82.301865">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lvj//w==" LintValue="-1898"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7fj//w==" LintValue="-1811"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lvj//w==" DoubleValue="-163987200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7fj//w==" DoubleValue="-156470400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.032769" DistinctValues="80.435757">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7fj//w==" LintValue="-1811"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PPn//w==" LintValue="-1732"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7fj//w==" DoubleValue="-156470400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PPn//w==" DoubleValue="-149644800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PPn//w==" LintValue="-1732"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PPn//w==" LintValue="-1732"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PPn//w==" DoubleValue="-149644800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PPn//w==" DoubleValue="-149644800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002489" DistinctValues="6.109045">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PPn//w==" LintValue="-1732"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Qvn//w==" LintValue="-1726"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PPn//w==" DoubleValue="-149644800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Qvn//w==" DoubleValue="-149126400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000777" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Qvn//w==" LintValue="-1726"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Qvn//w==" LintValue="-1726"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Qvn//w==" DoubleValue="-149126400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Qvn//w==" DoubleValue="-149126400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002489" DistinctValues="6.109045">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Qvn//w==" LintValue="-1726"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPn//w==" LintValue="-1720"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Qvn//w==" DoubleValue="-149126400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SPn//w==" DoubleValue="-148608000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPn//w==" LintValue="-1720"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qfn//w==" LintValue="-1623"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SPn//w==" DoubleValue="-148608000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qfn//w==" DoubleValue="-140227200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qfn//w==" LintValue="-1623"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cvr//w==" LintValue="-1526"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qfn//w==" DoubleValue="-140227200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cvr//w==" DoubleValue="-131846400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cvr//w==" LintValue="-1526"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="afr//w==" LintValue="-1431"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cvr//w==" DoubleValue="-131846400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="afr//w==" DoubleValue="-123638400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.030669" DistinctValues="76.093750">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="afr//w==" LintValue="-1431"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="t/r//w==" LintValue="-1353"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="afr//w==" DoubleValue="-123638400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="t/r//w==" DoubleValue="-116899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000807" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="t/r//w==" LintValue="-1353"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="t/r//w==" LintValue="-1353"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="t/r//w==" DoubleValue="-116899200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="t/r//w==" DoubleValue="-116899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007077" DistinctValues="17.560096">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="t/r//w==" LintValue="-1353"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yfr//w==" LintValue="-1335"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="t/r//w==" DoubleValue="-116899200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yfr//w==" DoubleValue="-115344000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yfr//w==" LintValue="-1335"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfv//w==" LintValue="-1239"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yfr//w==" DoubleValue="-115344000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfv//w==" DoubleValue="-107049600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004718" DistinctValues="11.331731">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfv//w==" LintValue="-1239"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nfv//w==" LintValue="-1227"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfv//w==" DoubleValue="-107049600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nfv//w==" DoubleValue="-106012800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nfv//w==" LintValue="-1227"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nfv//w==" LintValue="-1227"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nfv//w==" DoubleValue="-106012800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nfv//w==" DoubleValue="-106012800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010616" DistinctValues="25.496394">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nfv//w==" LintValue="-1227"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UPv//w==" LintValue="-1200"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nfv//w==" DoubleValue="-106012800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UPv//w==" DoubleValue="-103680000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UPv//w==" LintValue="-1200"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UPv//w==" LintValue="-1200"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UPv//w==" DoubleValue="-103680000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UPv//w==" DoubleValue="-103680000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.014941" DistinctValues="35.883814">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="UPv//w==" LintValue="-1200"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvv//w==" LintValue="-1162"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="UPv//w==" DoubleValue="-103680000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvv//w==" DoubleValue="-100396800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvv//w==" LintValue="-1162"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dvv//w==" LintValue="-1162"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvv//w==" DoubleValue="-100396800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dvv//w==" DoubleValue="-100396800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004718" DistinctValues="11.331731">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="dvv//w==" LintValue="-1162"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvv//w==" LintValue="-1150"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="dvv//w==" DoubleValue="-100396800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvv//w==" DoubleValue="-99360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvv//w==" LintValue="-1150"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gvv//w==" LintValue="-1150"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvv//w==" DoubleValue="-99360000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gvv//w==" DoubleValue="-99360000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002752" DistinctValues="6.610176">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="gvv//w==" LintValue="-1150"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ifv//w==" LintValue="-1143"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="gvv//w==" DoubleValue="-99360000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ifv//w==" DoubleValue="-98755200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ifv//w==" LintValue="-1143"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7Pv//w==" LintValue="-1044"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ifv//w==" DoubleValue="-98755200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7Pv//w==" DoubleValue="-90201600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000778" DistinctValues="1.910389">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7Pv//w==" LintValue="-1044"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7vv//w==" LintValue="-1042"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7Pv//w==" DoubleValue="-90201600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7vv//w==" DoubleValue="-90028800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7vv//w==" LintValue="-1042"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7vv//w==" LintValue="-1042"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7vv//w==" DoubleValue="-90028800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7vv//w==" DoubleValue="-90028800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.036190" DistinctValues="88.833069">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7vv//w==" LintValue="-1042"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/z//w==" LintValue="-949"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7vv//w==" DoubleValue="-90028800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/z//w==" DoubleValue="-81993600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/z//w==" LintValue="-949"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="S/z//w==" LintValue="-949"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/z//w==" DoubleValue="-81993600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="S/z//w==" DoubleValue="-81993600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000778" DistinctValues="1.910389">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="S/z//w==" LintValue="-949"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tfz//w==" LintValue="-947"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="S/z//w==" DoubleValue="-81993600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tfz//w==" DoubleValue="-81820800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.032125" DistinctValues="79.705401">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tfz//w==" LintValue="-947"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfz//w==" LintValue="-867"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tfz//w==" DoubleValue="-81820800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfz//w==" DoubleValue="-74908800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfz//w==" LintValue="-867"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nfz//w==" LintValue="-867"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfz//w==" DoubleValue="-74908800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nfz//w==" DoubleValue="-74908800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005622" DistinctValues="13.948445">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nfz//w==" LintValue="-867"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="q/z//w==" LintValue="-853"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nfz//w==" DoubleValue="-74908800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="q/z//w==" DoubleValue="-73699200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024634" DistinctValues="61.121457">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="q/z//w==" LintValue="-853"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6fz//w==" LintValue="-791"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="q/z//w==" DoubleValue="-73699200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6fz//w==" DoubleValue="-68342400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6fz//w==" LintValue="-791"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6fz//w==" LintValue="-791"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6fz//w==" DoubleValue="-68342400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6fz//w==" DoubleValue="-68342400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013112" DistinctValues="32.532389">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6fz//w==" LintValue="-791"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cv3//w==" LintValue="-758"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6fz//w==" DoubleValue="-68342400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cv3//w==" DoubleValue="-65491200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.011285" DistinctValues="27.700634">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cv3//w==" LintValue="-758"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/3//w==" LintValue="-729"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cv3//w==" DoubleValue="-65491200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/3//w==" DoubleValue="-62985600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/3//w==" LintValue="-729"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="J/3//w==" LintValue="-729"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/3//w==" DoubleValue="-62985600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="J/3//w==" DoubleValue="-62985600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008561" DistinctValues="21.014274">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="J/3//w==" LintValue="-729"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pf3//w==" LintValue="-707"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="J/3//w==" DoubleValue="-62985600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pf3//w==" DoubleValue="-61084800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pf3//w==" LintValue="-707"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Pf3//w==" LintValue="-707"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pf3//w==" DoubleValue="-61084800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Pf3//w==" DoubleValue="-61084800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017900" DistinctValues="43.938937">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Pf3//w==" LintValue="-707"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="a/3//w==" LintValue="-661"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Pf3//w==" DoubleValue="-61084800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="a/3//w==" DoubleValue="-57110400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007549" DistinctValues="18.530769">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="a/3//w==" LintValue="-661"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gP3//w==" LintValue="-640"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="a/3//w==" DoubleValue="-57110400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gP3//w==" DoubleValue="-55296000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000837" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gP3//w==" LintValue="-640"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gP3//w==" LintValue="-640"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gP3//w==" DoubleValue="-55296000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gP3//w==" DoubleValue="-55296000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019053" DistinctValues="46.768132">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="gP3//w==" LintValue="-640"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tf3//w==" LintValue="-587"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="gP3//w==" DoubleValue="-55296000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tf3//w==" DoubleValue="-50716800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tf3//w==" LintValue="-587"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tf3//w==" LintValue="-587"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tf3//w==" DoubleValue="-50716800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tf3//w==" DoubleValue="-50716800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.011144" DistinctValues="27.354945">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="tf3//w==" LintValue="-587"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1P3//w==" LintValue="-556"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="tf3//w==" DoubleValue="-50716800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1P3//w==" DoubleValue="-48038400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1P3//w==" LintValue="-556"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="R/7//w==" LintValue="-441"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1P3//w==" DoubleValue="-48038400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="R/7//w==" DoubleValue="-38102400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="94.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="R/7//w==" LintValue="-441"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Vf7//w==" LintValue="-427"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="R/7//w==" DoubleValue="-38102400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Vf7//w==" DoubleValue="-36892800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.5844974.1.1.10" Name="l_shipdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/T//w==" LintValue="-2921"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OPX//w==" LintValue="-2760"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="l/T//w==" DoubleValue="-252374400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="OPX//w==" DoubleValue="-238464000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007077" DistinctValues="17.747596">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OPX//w==" LintValue="-2760"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SvX//w==" LintValue="-2742"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="OPX//w==" DoubleValue="-238464000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="SvX//w==" DoubleValue="-236908800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000807" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SvX//w==" LintValue="-2742"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SvX//w==" LintValue="-2742"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SvX//w==" DoubleValue="-236908800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SvX//w==" DoubleValue="-236908800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007471" DistinctValues="18.733574">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="SvX//w==" LintValue="-2742"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="XfX//w==" LintValue="-2723"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="SvX//w==" DoubleValue="-236908800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="XfX//w==" DoubleValue="-235267200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="XfX//w==" LintValue="-2723"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="XfX//w==" LintValue="-2723"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="XfX//w==" DoubleValue="-235267200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="XfX//w==" DoubleValue="-235267200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023198" DistinctValues="58.172676">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="XfX//w==" LintValue="-2723"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mPX//w==" LintValue="-2664"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="XfX//w==" DoubleValue="-235267200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mPX//w==" DoubleValue="-230169600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mPX//w==" LintValue="-2664"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9vX//w==" LintValue="-2570"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mPX//w==" DoubleValue="-230169600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9vX//w==" DoubleValue="-222048000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010440" DistinctValues="26.457447">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9vX//w==" LintValue="-2570"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EPb//w==" LintValue="-2544"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9vX//w==" DoubleValue="-222048000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EPb//w==" DoubleValue="-219801600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EPb//w==" LintValue="-2544"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EPb//w==" LintValue="-2544"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EPb//w==" DoubleValue="-219801600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EPb//w==" DoubleValue="-219801600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.027306" DistinctValues="69.196399">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EPb//w==" LintValue="-2544"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EPb//w==" DoubleValue="-219801600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" LintValue="-2476"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tPb//w==" LintValue="-2380"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPb//w==" DoubleValue="-213926400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tPb//w==" DoubleValue="-205632000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001659" DistinctValues="4.160609">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPb//w==" LintValue="-2380"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tPb//w==" DoubleValue="-205632000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013273" DistinctValues="33.284869">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" LintValue="-2376"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2Pb//w==" LintValue="-2344"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uPb//w==" DoubleValue="-205286400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2Pb//w==" DoubleValue="-202521600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2Pb//w==" LintValue="-2344"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2Pb//w==" LintValue="-2344"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2Pb//w==" DoubleValue="-202521600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2Pb//w==" DoubleValue="-202521600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022814" DistinctValues="57.208369">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2Pb//w==" LintValue="-2344"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/f//w==" LintValue="-2289"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2Pb//w==" DoubleValue="-202521600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/f//w==" DoubleValue="-197769600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000415" DistinctValues="1.029163">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/f//w==" LintValue="-2289"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EPf//w==" LintValue="-2288"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/f//w==" DoubleValue="-197769600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EPf//w==" DoubleValue="-197683200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EPf//w==" LintValue="-2288"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EPf//w==" LintValue="-2288"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EPf//w==" DoubleValue="-197683200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EPf//w==" DoubleValue="-197683200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024888" DistinctValues="61.749789">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EPf//w==" LintValue="-2288"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPf//w==" LintValue="-2228"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EPf//w==" DoubleValue="-197683200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPf//w==" DoubleValue="-192499200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000867" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPf//w==" LintValue="-2228"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="TPf//w==" LintValue="-2228"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPf//w==" DoubleValue="-192499200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="TPf//w==" DoubleValue="-192499200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010370" DistinctValues="25.729079">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="TPf//w==" LintValue="-2228"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zff//w==" LintValue="-2203"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="TPf//w==" DoubleValue="-192499200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zff//w==" DoubleValue="-190339200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zff//w==" LintValue="-2203"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zff//w==" LintValue="-2203"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zff//w==" DoubleValue="-190339200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Zff//w==" DoubleValue="-190339200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002074" DistinctValues="5.145816">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zff//w==" LintValue="-2203"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Zff//w==" DoubleValue="-190339200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007394" DistinctValues="18.344568">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" LintValue="-2198"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fff//w==" LintValue="-2179"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avf//w==" DoubleValue="-189907200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fff//w==" DoubleValue="-188265600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fff//w==" LintValue="-2179"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fff//w==" LintValue="-2179"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fff//w==" DoubleValue="-188265600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fff//w==" DoubleValue="-188265600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.025294" DistinctValues="62.757732">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fff//w==" LintValue="-2179"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vvf//w==" LintValue="-2114"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fff//w==" DoubleValue="-188265600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vvf//w==" DoubleValue="-182649600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vvf//w==" LintValue="-2114"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vvf//w==" LintValue="-2114"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vvf//w==" DoubleValue="-182649600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vvf//w==" DoubleValue="-182649600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002335" DistinctValues="5.793021">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vvf//w==" LintValue="-2114"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPf//w==" LintValue="-2108"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vvf//w==" DoubleValue="-182649600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPf//w==" DoubleValue="-182131200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000897" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPf//w==" LintValue="-2108"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xPf//w==" LintValue="-2108"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPf//w==" DoubleValue="-182131200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xPf//w==" DoubleValue="-182131200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002724" DistinctValues="6.758525">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xPf//w==" LintValue="-2108"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/f//w==" LintValue="-2101"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xPf//w==" DoubleValue="-182131200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/f//w==" DoubleValue="-181526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021232" DistinctValues="53.805288">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/f//w==" LintValue="-2101"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Afj//w==" LintValue="-2047"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/f//w==" DoubleValue="-181526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Afj//w==" DoubleValue="-176860800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Afj//w==" LintValue="-2047"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Afj//w==" LintValue="-2047"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Afj//w==" DoubleValue="-176860800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Afj//w==" DoubleValue="-176860800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016514" DistinctValues="41.848558">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Afj//w==" LintValue="-2047"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="K/j//w==" LintValue="-2005"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Afj//w==" DoubleValue="-176860800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="K/j//w==" DoubleValue="-173232000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000385" DistinctValues="0.955651">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="K/j//w==" LintValue="-2005"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LPj//w==" LintValue="-2004"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="K/j//w==" DoubleValue="-173232000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="LPj//w==" DoubleValue="-173145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000777" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LPj//w==" LintValue="-2004"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LPj//w==" LintValue="-2004"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="LPj//w==" DoubleValue="-173145600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="LPj//w==" DoubleValue="-173145600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015407" DistinctValues="38.226060">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="LPj//w==" LintValue="-2004"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPj//w==" LintValue="-1964"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="LPj//w==" DoubleValue="-173145600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPj//w==" DoubleValue="-169689600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000747" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPj//w==" LintValue="-1964"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VPj//w==" LintValue="-1964"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPj//w==" DoubleValue="-169689600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VPj//w==" DoubleValue="-169689600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016177" DistinctValues="40.137363">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VPj//w==" LintValue="-1964"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvj//w==" LintValue="-1922"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VPj//w==" DoubleValue="-169689600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvj//w==" DoubleValue="-166060800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000777" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvj//w==" LintValue="-1922"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fvj//w==" LintValue="-1922"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvj//w==" DoubleValue="-166060800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fvj//w==" DoubleValue="-166060800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005777" DistinctValues="14.334772">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fvj//w==" LintValue="-1922"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jfj//w==" LintValue="-1907"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fvj//w==" DoubleValue="-166060800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jfj//w==" DoubleValue="-164764800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jfj//w==" LintValue="-1907"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6/j//w==" LintValue="-1813"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jfj//w==" DoubleValue="-164764800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6/j//w==" DoubleValue="-156643200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005898" DistinctValues="14.945913">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6/j//w==" LintValue="-1813"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vj//w==" LintValue="-1798"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6/j//w==" DoubleValue="-156643200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vj//w==" DoubleValue="-155347200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vj//w==" LintValue="-1798"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+vj//w==" LintValue="-1798"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vj//w==" DoubleValue="-155347200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+vj//w==" DoubleValue="-155347200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.031848" DistinctValues="80.707933">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+vj//w==" LintValue="-1798"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/n//w==" LintValue="-1717"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+vj//w==" DoubleValue="-155347200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="S/n//w==" DoubleValue="-148348800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.025032" DistinctValues="62.770445">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/n//w==" LintValue="-1717"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivn//w==" LintValue="-1654"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="S/n//w==" DoubleValue="-148348800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivn//w==" DoubleValue="-142905600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivn//w==" LintValue="-1654"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ivn//w==" LintValue="-1654"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivn//w==" DoubleValue="-142905600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ivn//w==" DoubleValue="-142905600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010728" DistinctValues="26.901619">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ivn//w==" LintValue="-1654"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pfn//w==" LintValue="-1627"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ivn//w==" DoubleValue="-142905600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pfn//w==" DoubleValue="-140572800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pfn//w==" LintValue="-1627"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pfn//w==" LintValue="-1627"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pfn//w==" DoubleValue="-140572800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pfn//w==" DoubleValue="-140572800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001987" DistinctValues="4.981781">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pfn//w==" LintValue="-1627"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qvn//w==" LintValue="-1622"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pfn//w==" DoubleValue="-140572800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qvn//w==" DoubleValue="-140140800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.024634" DistinctValues="62.426721">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qvn//w==" LintValue="-1622"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pn//w==" LintValue="-1560"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qvn//w==" DoubleValue="-140140800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pn//w==" DoubleValue="-134784000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pn//w==" LintValue="-1560"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pn//w==" LintValue="-1560"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pn//w==" DoubleValue="-134784000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6Pn//w==" DoubleValue="-134784000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013112" DistinctValues="33.227126">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pn//w==" LintValue="-1560"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cfr//w==" LintValue="-1527"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6Pn//w==" DoubleValue="-134784000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cfr//w==" DoubleValue="-131932800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016641" DistinctValues="42.169975">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cfr//w==" LintValue="-1527"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvr//w==" LintValue="-1486"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cfr//w==" DoubleValue="-131932800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvr//w==" DoubleValue="-128390400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvr//w==" LintValue="-1486"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvr//w==" LintValue="-1486"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvr//w==" DoubleValue="-128390400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Mvr//w==" DoubleValue="-128390400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.021105" DistinctValues="53.483871">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvr//w==" LintValue="-1486"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zvr//w==" LintValue="-1434"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Mvr//w==" DoubleValue="-128390400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Zvr//w==" DoubleValue="-123897600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zvr//w==" LintValue="-1434"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yvr//w==" LintValue="-1334"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Zvr//w==" DoubleValue="-123897600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yvr//w==" DoubleValue="-115257600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.014701" DistinctValues="37.254656">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yvr//w==" LintValue="-1334"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7/r//w==" LintValue="-1297"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yvr//w==" DoubleValue="-115257600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7/r//w==" DoubleValue="-112060800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7/r//w==" LintValue="-1297"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7/r//w==" LintValue="-1297"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7/r//w==" DoubleValue="-112060800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7/r//w==" DoubleValue="-112060800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023045" DistinctValues="58.399190">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7/r//w==" LintValue="-1297"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfv//w==" LintValue="-1239"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7/r//w==" DoubleValue="-112060800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfv//w==" DoubleValue="-107049600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfv//w==" LintValue="-1239"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jfv//w==" LintValue="-1139"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfv//w==" DoubleValue="-107049600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jfv//w==" DoubleValue="-98409600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jfv//w==" LintValue="-1139"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7Pv//w==" LintValue="-1044"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jfv//w==" DoubleValue="-98409600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7Pv//w==" DoubleValue="-90201600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7Pv//w==" LintValue="-1044"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tfz//w==" LintValue="-947"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7Pv//w==" DoubleValue="-90201600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Tfz//w==" DoubleValue="-81820800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019072" DistinctValues="47.825101">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tfz//w==" LintValue="-947"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ffz//w==" LintValue="-899"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Tfz//w==" DoubleValue="-81820800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ffz//w==" DoubleValue="-77673600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000867" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ffz//w==" LintValue="-899"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ffz//w==" LintValue="-899"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ffz//w==" DoubleValue="-77673600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ffz//w==" DoubleValue="-77673600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001987" DistinctValues="4.981781">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ffz//w==" LintValue="-899"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvz//w==" LintValue="-894"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ffz//w==" DoubleValue="-77673600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gvz//w==" DoubleValue="-77241600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvz//w==" LintValue="-894"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gvz//w==" LintValue="-894"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gvz//w==" DoubleValue="-77241600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="gvz//w==" DoubleValue="-77241600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016688" DistinctValues="41.846964">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="gvz//w==" LintValue="-894"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPz//w==" LintValue="-852"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="gvz//w==" DoubleValue="-77241600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPz//w==" DoubleValue="-73612800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.029964" DistinctValues="75.931404">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPz//w==" LintValue="-852"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fz//w==" LintValue="-775"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPz//w==" DoubleValue="-73612800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+fz//w==" DoubleValue="-66960000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000718" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fz//w==" LintValue="-775"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+fz//w==" LintValue="-775"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+fz//w==" DoubleValue="-66960000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+fz//w==" DoubleValue="-66960000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007783" DistinctValues="19.722443">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+fz//w==" LintValue="-775"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Df3//w==" LintValue="-755"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+fz//w==" DoubleValue="-66960000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Df3//w==" DoubleValue="-65232000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.019826" DistinctValues="50.242424">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Df3//w==" LintValue="-755"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Qf3//w==" LintValue="-703"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Df3//w==" DoubleValue="-65232000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Qf3//w==" DoubleValue="-60739200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000688" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Qf3//w==" LintValue="-703"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Qf3//w==" LintValue="-703"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Qf3//w==" DoubleValue="-60739200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Qf3//w==" DoubleValue="-60739200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.017920" DistinctValues="45.411422">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Qf3//w==" LintValue="-703"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cP3//w==" LintValue="-656"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Qf3//w==" DoubleValue="-60739200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cP3//w==" DoubleValue="-56678400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cP3//w==" LintValue="-656"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/3//w==" LintValue="-557"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cP3//w==" DoubleValue="-56678400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/3//w==" DoubleValue="-48124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/3//w==" LintValue="-557"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Y/7//w==" LintValue="-413"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/3//w==" DoubleValue="-48124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Y/7//w==" DoubleValue="-35683200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.037746" DistinctValues="96.653846">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Y/7//w==" LintValue="-413"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cv7//w==" LintValue="-398"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Y/7//w==" DoubleValue="-35683200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cv7//w==" DoubleValue="-34387200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.5844974.1.1.3" Name="l_linenumber" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
diff --git a/src/backend/gporca/data/dxl/minidump/Join-Varchar-Equality.mdp b/src/backend/gporca/data/dxl/minidump/Join-Varchar-Equality.mdp
index 9cd4e5a206..004f05541e 100644
--- a/src/backend/gporca/data/dxl/minidump/Join-Varchar-Equality.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Join-Varchar-Equality.mdp
@@ -699,308 +699,308 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.328293.1.1.0" Name="ymd" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.032303" DistinctValues="324.679326">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pur//w==" LintValue="-5570"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jev//w==" LintValue="-5235"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pur//w==" DoubleValue="-481248000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jev//w==" DoubleValue="-452304000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jev//w==" LintValue="-5235"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jev//w==" LintValue="-5235"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jev//w==" DoubleValue="-452304000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jev//w==" DoubleValue="-452304000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jev//w==" LintValue="-5235"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jev//w==" DoubleValue="-452304000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000193" DistinctValues="1.938384">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kOv//w==" LintValue="-5232"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kOv//w==" DoubleValue="-452044800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kOv//w==" LintValue="-5232"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kOv//w==" LintValue="-5232"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kOv//w==" DoubleValue="-452044800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kOv//w==" DoubleValue="-452044800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kOv//w==" LintValue="-5232"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kev//w==" LintValue="-5231"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kOv//w==" DoubleValue="-452044800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kev//w==" DoubleValue="-451958400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kev//w==" LintValue="-5231"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kev//w==" LintValue="-5231"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kev//w==" DoubleValue="-451958400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kev//w==" DoubleValue="-451958400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kev//w==" LintValue="-5231"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kuv//w==" LintValue="-5230"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kev//w==" DoubleValue="-451958400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kuv//w==" DoubleValue="-451872000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kuv//w==" LintValue="-5230"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kuv//w==" LintValue="-5230"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kuv//w==" DoubleValue="-451872000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kuv//w==" DoubleValue="-451872000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kuv//w==" LintValue="-5230"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k+v//w==" LintValue="-5229"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kuv//w==" DoubleValue="-451872000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k+v//w==" DoubleValue="-451785600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k+v//w==" LintValue="-5229"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="k+v//w==" LintValue="-5229"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k+v//w==" DoubleValue="-451785600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="k+v//w==" DoubleValue="-451785600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="k+v//w==" LintValue="-5229"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lOv//w==" LintValue="-5228"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="k+v//w==" DoubleValue="-451785600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lOv//w==" DoubleValue="-451699200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lOv//w==" LintValue="-5228"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lOv//w==" LintValue="-5228"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lOv//w==" DoubleValue="-451699200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lOv//w==" DoubleValue="-451699200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lOv//w==" LintValue="-5228"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lev//w==" LintValue="-5227"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lOv//w==" DoubleValue="-451699200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lev//w==" DoubleValue="-451612800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lev//w==" LintValue="-5227"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lev//w==" LintValue="-5227"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lev//w==" DoubleValue="-451612800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lev//w==" DoubleValue="-451612800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lev//w==" LintValue="-5227"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="luv//w==" LintValue="-5226"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lev//w==" DoubleValue="-451612800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="luv//w==" DoubleValue="-451526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="luv//w==" LintValue="-5226"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="luv//w==" LintValue="-5226"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="luv//w==" DoubleValue="-451526400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="luv//w==" DoubleValue="-451526400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000193" DistinctValues="1.938384">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="luv//w==" LintValue="-5226"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mOv//w==" LintValue="-5224"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="luv//w==" DoubleValue="-451526400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mOv//w==" DoubleValue="-451353600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mOv//w==" LintValue="-5224"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mOv//w==" LintValue="-5224"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mOv//w==" DoubleValue="-451353600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mOv//w==" DoubleValue="-451353600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mOv//w==" LintValue="-5224"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mev//w==" LintValue="-5223"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mOv//w==" DoubleValue="-451353600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mev//w==" DoubleValue="-451267200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mev//w==" LintValue="-5223"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mev//w==" LintValue="-5223"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mev//w==" DoubleValue="-451267200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mev//w==" DoubleValue="-451267200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000193" DistinctValues="1.938384">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mev//w==" LintValue="-5223"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="m+v//w==" LintValue="-5221"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mev//w==" DoubleValue="-451267200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="m+v//w==" DoubleValue="-451094400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m+v//w==" LintValue="-5221"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="m+v//w==" LintValue="-5221"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="m+v//w==" DoubleValue="-451094400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="m+v//w==" DoubleValue="-451094400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="m+v//w==" LintValue="-5221"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nOv//w==" LintValue="-5220"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="m+v//w==" DoubleValue="-451094400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nOv//w==" DoubleValue="-451008000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nOv//w==" LintValue="-5220"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nOv//w==" LintValue="-5220"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nOv//w==" DoubleValue="-451008000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nOv//w==" DoubleValue="-451008000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nOv//w==" LintValue="-5220"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nev//w==" LintValue="-5219"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nOv//w==" DoubleValue="-451008000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nev//w==" DoubleValue="-450921600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nev//w==" LintValue="-5219"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nev//w==" LintValue="-5219"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nev//w==" DoubleValue="-450921600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nev//w==" DoubleValue="-450921600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nev//w==" LintValue="-5219"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nuv//w==" LintValue="-5218"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nev//w==" DoubleValue="-450921600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nuv//w==" DoubleValue="-450835200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nuv//w==" LintValue="-5218"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nuv//w==" LintValue="-5218"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nuv//w==" DoubleValue="-450835200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nuv//w==" DoubleValue="-450835200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nuv//w==" LintValue="-5218"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n+v//w==" LintValue="-5217"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="nuv//w==" DoubleValue="-450835200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="n+v//w==" DoubleValue="-450748800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n+v//w==" LintValue="-5217"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="n+v//w==" LintValue="-5217"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="n+v//w==" DoubleValue="-450748800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="n+v//w==" DoubleValue="-450748800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="n+v//w==" LintValue="-5217"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oOv//w==" LintValue="-5216"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="n+v//w==" DoubleValue="-450748800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oOv//w==" DoubleValue="-450662400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oOv//w==" LintValue="-5216"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="oOv//w==" LintValue="-5216"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oOv//w==" DoubleValue="-450662400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="oOv//w==" DoubleValue="-450662400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="oOv//w==" LintValue="-5216"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oev//w==" LintValue="-5215"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="oOv//w==" DoubleValue="-450662400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="oev//w==" DoubleValue="-450576000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oev//w==" LintValue="-5215"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="oev//w==" LintValue="-5215"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="oev//w==" DoubleValue="-450576000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="oev//w==" DoubleValue="-450576000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="oev//w==" LintValue="-5215"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ouv//w==" LintValue="-5214"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="oev//w==" DoubleValue="-450576000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ouv//w==" DoubleValue="-450489600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ouv//w==" LintValue="-5214"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ouv//w==" LintValue="-5214"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ouv//w==" DoubleValue="-450489600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ouv//w==" DoubleValue="-450489600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ouv//w==" LintValue="-5214"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="o+v//w==" LintValue="-5213"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ouv//w==" DoubleValue="-450489600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="o+v//w==" DoubleValue="-450403200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="o+v//w==" LintValue="-5213"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="o+v//w==" LintValue="-5213"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="o+v//w==" DoubleValue="-450403200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="o+v//w==" DoubleValue="-450403200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="o+v//w==" LintValue="-5213"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pOv//w==" LintValue="-5212"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="o+v//w==" DoubleValue="-450403200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pOv//w==" DoubleValue="-450316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pOv//w==" LintValue="-5212"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pOv//w==" LintValue="-5212"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pOv//w==" DoubleValue="-450316800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pOv//w==" DoubleValue="-450316800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000289" DistinctValues="2.907576">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pOv//w==" LintValue="-5212"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p+v//w==" LintValue="-5209"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pOv//w==" DoubleValue="-450316800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="p+v//w==" DoubleValue="-450057600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p+v//w==" LintValue="-5209"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="p+v//w==" LintValue="-5209"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="p+v//w==" DoubleValue="-450057600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="p+v//w==" DoubleValue="-450057600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="p+v//w==" LintValue="-5209"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qOv//w==" LintValue="-5208"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="p+v//w==" DoubleValue="-450057600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qOv//w==" DoubleValue="-449971200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qOv//w==" LintValue="-5208"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qOv//w==" LintValue="-5208"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qOv//w==" DoubleValue="-449971200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qOv//w==" DoubleValue="-449971200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qOv//w==" LintValue="-5208"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qev//w==" LintValue="-5207"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qOv//w==" DoubleValue="-449971200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qev//w==" DoubleValue="-449884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qev//w==" LintValue="-5207"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qev//w==" LintValue="-5207"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qev//w==" DoubleValue="-449884800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qev//w==" DoubleValue="-449884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000096" DistinctValues="0.969192">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qev//w==" LintValue="-5207"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="quv//w==" LintValue="-5206"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qev//w==" DoubleValue="-449884800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="quv//w==" DoubleValue="-449798400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000187" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="quv//w==" LintValue="-5206"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="quv//w==" LintValue="-5206"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="quv//w==" DoubleValue="-449798400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="quv//w==" DoubleValue="-449798400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003182" DistinctValues="31.983337">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="quv//w==" LintValue="-5206"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y+v//w==" LintValue="-5173"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="quv//w==" DoubleValue="-449798400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y+v//w==" DoubleValue="-446947200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y+v//w==" LintValue="-5173"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="du3//w==" LintValue="-4746"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y+v//w==" DoubleValue="-446947200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="du3//w==" DoubleValue="-410054400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="du3//w==" LintValue="-4746"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ie///w==" LintValue="-4319"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="du3//w==" DoubleValue="-410054400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ie///w==" DoubleValue="-373161600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ie///w==" LintValue="-4319"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPD//w==" LintValue="-3892"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ie///w==" DoubleValue="-373161600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPD//w==" DoubleValue="-336268800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPD//w==" LintValue="-3892"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="d/L//w==" LintValue="-3465"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPD//w==" DoubleValue="-336268800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="d/L//w==" DoubleValue="-299376000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d/L//w==" LintValue="-3465"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IvT//w==" LintValue="-3038"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d/L//w==" DoubleValue="-299376000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="IvT//w==" DoubleValue="-262483200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IvT//w==" LintValue="-3038"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zfX//w==" LintValue="-2611"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="IvT//w==" DoubleValue="-262483200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zfX//w==" DoubleValue="-225590400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zfX//w==" LintValue="-2611"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ePf//w==" LintValue="-2184"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zfX//w==" DoubleValue="-225590400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ePf//w==" DoubleValue="-188697600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ePf//w==" LintValue="-2184"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="I/n//w==" LintValue="-1757"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ePf//w==" DoubleValue="-188697600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="I/n//w==" DoubleValue="-151804800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="I/n//w==" LintValue="-1757"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zvr//w==" LintValue="-1330"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="I/n//w==" DoubleValue="-151804800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zvr//w==" DoubleValue="-114912000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zvr//w==" LintValue="-1330"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="efz//w==" LintValue="-903"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zvr//w==" DoubleValue="-114912000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="efz//w==" DoubleValue="-78019200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="efz//w==" LintValue="-903"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JP7//w==" LintValue="-476"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="efz//w==" DoubleValue="-78019200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JP7//w==" DoubleValue="-41126400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JP7//w==" LintValue="-476"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="z////w==" LintValue="-49"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JP7//w==" DoubleValue="-41126400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="z////w==" DoubleValue="-4233600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="z////w==" LintValue="-49"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="egEAAA==" LintValue="378"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="z////w==" DoubleValue="-4233600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="egEAAA==" DoubleValue="32659200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="egEAAA==" LintValue="378"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JQMAAA==" LintValue="805"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="egEAAA==" DoubleValue="32659200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JQMAAA==" DoubleValue="69552000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JQMAAA==" LintValue="805"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0AQAAA==" LintValue="1232"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JQMAAA==" DoubleValue="69552000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0AQAAA==" DoubleValue="106444800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0AQAAA==" LintValue="1232"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ewYAAA==" LintValue="1659"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0AQAAA==" DoubleValue="106444800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ewYAAA==" DoubleValue="143337600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ewYAAA==" LintValue="1659"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JggAAA==" LintValue="2086"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ewYAAA==" DoubleValue="143337600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JggAAA==" DoubleValue="180230400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JggAAA==" LintValue="2086"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0QkAAA==" LintValue="2513"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JggAAA==" DoubleValue="180230400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0QkAAA==" DoubleValue="217123200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0QkAAA==" LintValue="2513"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fAsAAA==" LintValue="2940"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0QkAAA==" DoubleValue="217123200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fAsAAA==" DoubleValue="254016000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fAsAAA==" LintValue="2940"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jw0AAA==" LintValue="3367"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fAsAAA==" DoubleValue="254016000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jw0AAA==" DoubleValue="290908800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jw0AAA==" LintValue="3367"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0g4AAA==" LintValue="3794"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jw0AAA==" DoubleValue="290908800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0g4AAA==" DoubleValue="327801600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0g4AAA==" LintValue="3794"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fRAAAA==" LintValue="4221"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0g4AAA==" DoubleValue="327801600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fRAAAA==" DoubleValue="364694400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fRAAAA==" LintValue="4221"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KBIAAA==" LintValue="4648"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fRAAAA==" DoubleValue="364694400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KBIAAA==" DoubleValue="401587200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KBIAAA==" LintValue="4648"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0xMAAA==" LintValue="5075"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KBIAAA==" DoubleValue="401587200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0xMAAA==" DoubleValue="438480000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038282" DistinctValues="409.769231">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0xMAAA==" LintValue="5075"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2hMAAA==" LintValue="5082"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0xMAAA==" DoubleValue="438480000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2hMAAA==" DoubleValue="439084800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:GPDBFunc Mdid="0.6084.1.0" Name="gp_partition_selection" ReturnsSet="false" Stability="Stable" IsStrict="true">
@@ -1112,308 +1112,308 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.328475.1.1.0" Name="sales_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.034478" DistinctValues="303.492421">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="W+r//w==" LintValue="-5541"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="W+r//w==" DoubleValue="-478742400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000304" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003706" DistinctValues="32.622964">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" LintValue="-5234"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="r+v//w==" LintValue="-5201"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="juv//w==" DoubleValue="-452217600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="r+v//w==" DoubleValue="-449366400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002033" DistinctValues="17.793127">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="r+v//w==" LintValue="-5201"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wev//w==" LintValue="-5183"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="r+v//w==" DoubleValue="-449366400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wev//w==" DoubleValue="-447811200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wev//w==" LintValue="-5183"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="wev//w==" LintValue="-5183"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wev//w==" DoubleValue="-447811200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="wev//w==" DoubleValue="-447811200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007908" DistinctValues="69.195494">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="wev//w==" LintValue="-5183"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="B+z//w==" LintValue="-5113"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="wev//w==" DoubleValue="-447811200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="B+z//w==" DoubleValue="-441763200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000261" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="B+z//w==" LintValue="-5113"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="B+z//w==" LintValue="-5113"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="B+z//w==" DoubleValue="-441763200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="B+z//w==" DoubleValue="-441763200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005197" DistinctValues="45.471325">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="B+z//w==" LintValue="-5113"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nez//w==" LintValue="-5067"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="B+z//w==" DoubleValue="-441763200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Nez//w==" DoubleValue="-437788800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000304" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nez//w==" LintValue="-5067"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nez//w==" LintValue="-5067"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Nez//w==" DoubleValue="-437788800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Nez//w==" DoubleValue="-437788800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.023046" DistinctValues="201.655439">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nez//w==" LintValue="-5067"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ae3//w==" LintValue="-4863"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Nez//w==" DoubleValue="-437788800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Ae3//w==" DoubleValue="-420163200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.030982" DistinctValues="272.716375">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ae3//w==" LintValue="-4863"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EO7//w==" LintValue="-4592"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Ae3//w==" DoubleValue="-420163200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EO7//w==" DoubleValue="-396748800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EO7//w==" LintValue="-4592"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EO7//w==" LintValue="-4592"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EO7//w==" DoubleValue="-396748800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="EO7//w==" DoubleValue="-396748800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007202" DistinctValues="63.399010">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EO7//w==" LintValue="-4592"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="T+7//w==" LintValue="-4529"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="EO7//w==" DoubleValue="-396748800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="T+7//w==" DoubleValue="-391305600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.033820" DistinctValues="297.702198">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="T+7//w==" LintValue="-4529"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="he///w==" LintValue="-4219"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="T+7//w==" DoubleValue="-391305600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="he///w==" DoubleValue="-364521600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="he///w==" LintValue="-4219"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="he///w==" LintValue="-4219"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="he///w==" DoubleValue="-364521600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="he///w==" DoubleValue="-364521600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004364" DistinctValues="38.413187">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="he///w==" LintValue="-4219"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="re///w==" LintValue="-4179"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="he///w==" DoubleValue="-364521600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="re///w==" DoubleValue="-361065600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.036492" DistinctValues="321.218304">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="re///w==" LintValue="-4179"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BvH//w==" LintValue="-3834"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="re///w==" DoubleValue="-361065600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BvH//w==" DoubleValue="-331257600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BvH//w==" LintValue="-3834"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="BvH//w==" LintValue="-3834"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BvH//w==" DoubleValue="-331257600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="BvH//w==" DoubleValue="-331257600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001692" DistinctValues="14.897081">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="BvH//w==" LintValue="-3834"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="FvH//w==" LintValue="-3818"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="BvH//w==" DoubleValue="-331257600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="FvH//w==" DoubleValue="-329875200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="FvH//w==" LintValue="-3818"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvL//w==" LintValue="-3466"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="FvH//w==" DoubleValue="-329875200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dvL//w==" DoubleValue="-299462400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.018231" DistinctValues="160.002040">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvL//w==" LintValue="-3466"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KvP//w==" LintValue="-3286"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dvL//w==" DoubleValue="-299462400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KvP//w==" DoubleValue="-283910400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KvP//w==" LintValue="-3286"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KvP//w==" LintValue="-3286"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KvP//w==" DoubleValue="-283910400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KvP//w==" DoubleValue="-283910400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006077" DistinctValues="53.334013">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="KvP//w==" LintValue="-3286"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZvP//w==" LintValue="-3226"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="KvP//w==" DoubleValue="-283910400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZvP//w==" DoubleValue="-278726400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZvP//w==" LintValue="-3226"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZvP//w==" LintValue="-3226"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZvP//w==" DoubleValue="-278726400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ZvP//w==" DoubleValue="-278726400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013876" DistinctValues="121.779331">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZvP//w==" LintValue="-3226"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7/P//w==" LintValue="-3089"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ZvP//w==" DoubleValue="-278726400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7/P//w==" DoubleValue="-266889600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.011002" DistinctValues="96.558670">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7/P//w==" LintValue="-3089"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VfT//w==" LintValue="-2987"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7/P//w==" DoubleValue="-266889600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VfT//w==" DoubleValue="-258076800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000304" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VfT//w==" LintValue="-2987"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VfT//w==" LintValue="-2987"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VfT//w==" DoubleValue="-258076800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VfT//w==" DoubleValue="-258076800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006256" DistinctValues="54.905910">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VfT//w==" LintValue="-2987"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/T//w==" LintValue="-2929"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VfT//w==" DoubleValue="-258076800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="j/T//w==" DoubleValue="-253065600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/T//w==" LintValue="-2929"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="j/T//w==" LintValue="-2929"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="j/T//w==" DoubleValue="-253065600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="j/T//w==" DoubleValue="-253065600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.020926" DistinctValues="183.650804">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="j/T//w==" LintValue="-2929"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UfX//w==" LintValue="-2735"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="j/T//w==" DoubleValue="-253065600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UfX//w==" DoubleValue="-236304000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UfX//w==" LintValue="-2735"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="t/b//w==" LintValue="-2377"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UfX//w==" DoubleValue="-236304000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="t/b//w==" DoubleValue="-205372800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="t/b//w==" LintValue="-2377"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Evj//w==" LintValue="-2030"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="t/b//w==" DoubleValue="-205372800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Evj//w==" DoubleValue="-175392000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.028971" DistinctValues="255.017777">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Evj//w==" LintValue="-2030"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/n//w==" LintValue="-1769"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Evj//w==" DoubleValue="-175392000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="F/n//w==" DoubleValue="-152841600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/n//w==" LintValue="-1769"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="F/n//w==" LintValue="-1769"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="F/n//w==" DoubleValue="-152841600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="F/n//w==" DoubleValue="-152841600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.009213" DistinctValues="81.097607">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="F/n//w==" LintValue="-1769"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avn//w==" LintValue="-1686"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="F/n//w==" DoubleValue="-152841600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="avn//w==" DoubleValue="-145670400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.029786" DistinctValues="262.189714">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avn//w==" LintValue="-1686"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dPr//w==" LintValue="-1420"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="avn//w==" DoubleValue="-145670400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dPr//w==" DoubleValue="-122688000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dPr//w==" LintValue="-1420"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dPr//w==" LintValue="-1420"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dPr//w==" DoubleValue="-122688000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dPr//w==" DoubleValue="-122688000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008398" DistinctValues="73.925671">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="dPr//w==" LintValue="-1420"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/r//w==" LintValue="-1345"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="dPr//w==" DoubleValue="-122688000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/r//w==" DoubleValue="-116208000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.022054" DistinctValues="194.135610">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/r//w==" LintValue="-1345"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="iPv//w==" LintValue="-1144"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/r//w==" DoubleValue="-116208000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="iPv//w==" DoubleValue="-98841600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="iPv//w==" LintValue="-1144"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="iPv//w==" LintValue="-1144"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="iPv//w==" DoubleValue="-98841600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="iPv//w==" DoubleValue="-98841600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.016129" DistinctValues="141.979775">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="iPv//w==" LintValue="-1144"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="G/z//w==" LintValue="-997"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="iPv//w==" DoubleValue="-98841600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="G/z//w==" DoubleValue="-86140800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="G/z//w==" LintValue="-997"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gf3//w==" LintValue="-639"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="G/z//w==" DoubleValue="-86140800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gf3//w==" DoubleValue="-55209600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013645" DistinctValues="119.753048">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gf3//w==" LintValue="-639"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/f3//w==" LintValue="-515"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gf3//w==" DoubleValue="-55209600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/f3//w==" DoubleValue="-44496000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/f3//w==" LintValue="-515"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="/f3//w==" LintValue="-515"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/f3//w==" DoubleValue="-44496000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="/f3//w==" DoubleValue="-44496000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.020688" DistinctValues="181.561073">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="/f3//w==" LintValue="-515"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uf7//w==" LintValue="-327"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="/f3//w==" DoubleValue="-44496000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uf7//w==" DoubleValue="-28252800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uf7//w==" LintValue="-327"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uf7//w==" LintValue="-327"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uf7//w==" DoubleValue="-28252800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="uf7//w==" DoubleValue="-28252800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003851" DistinctValues="33.801264">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uf7//w==" LintValue="-327"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3P7//w==" LintValue="-292"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="uf7//w==" DoubleValue="-28252800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3P7//w==" DoubleValue="-25228800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001992" DistinctValues="17.484281">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3P7//w==" LintValue="-292"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7v7//w==" LintValue="-274"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3P7//w==" DoubleValue="-25228800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7v7//w==" DoubleValue="-23673600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000348" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7v7//w==" LintValue="-274"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7v7//w==" LintValue="-274"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7v7//w==" DoubleValue="-23673600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7v7//w==" DoubleValue="-23673600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.027780" DistinctValues="243.808584">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7v7//w==" LintValue="-274"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f///w==" LintValue="-23"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7v7//w==" DoubleValue="-23673600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6f///w==" DoubleValue="-1987200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f///w==" LintValue="-23"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6f///w==" LintValue="-23"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6f///w==" DoubleValue="-1987200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6f///w==" DoubleValue="-1987200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008412" DistinctValues="73.822520">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6f///w==" LintValue="-23"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NQAAAA==" LintValue="53"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6f///w==" DoubleValue="-1987200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NQAAAA==" DoubleValue="4579200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010894" DistinctValues="95.897327">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NQAAAA==" LintValue="53"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mgAAAA==" LintValue="154"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NQAAAA==" DoubleValue="4579200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mgAAAA==" DoubleValue="13305600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mgAAAA==" LintValue="154"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mgAAAA==" LintValue="154"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mgAAAA==" DoubleValue="13305600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mgAAAA==" DoubleValue="13305600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.027290" DistinctValues="240.218057">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mgAAAA==" LintValue="154"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lwEAAA==" LintValue="407"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mgAAAA==" DoubleValue="13305600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lwEAAA==" DoubleValue="35164800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.036766" DistinctValues="323.631099">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lwEAAA==" LintValue="407"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6AIAAA==" LintValue="744"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lwEAAA==" DoubleValue="35164800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6AIAAA==" DoubleValue="64281600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000304" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6AIAAA==" LintValue="744"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6AIAAA==" LintValue="744"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6AIAAA==" DoubleValue="64281600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6AIAAA==" DoubleValue="64281600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001418" DistinctValues="12.484286">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6AIAAA==" LintValue="744"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9QIAAA==" LintValue="757"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6AIAAA==" DoubleValue="64281600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9QIAAA==" DoubleValue="65404800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.025127" DistinctValues="221.179377">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9QIAAA==" LintValue="757"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2gMAAA==" LintValue="986"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9QIAAA==" DoubleValue="65404800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2gMAAA==" DoubleValue="85190400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2gMAAA==" LintValue="986"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2gMAAA==" LintValue="986"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2gMAAA==" DoubleValue="85190400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2gMAAA==" DoubleValue="85190400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.013057" DistinctValues="114.936008">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2gMAAA==" LintValue="986"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UQQAAA==" LintValue="1105"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2gMAAA==" DoubleValue="85190400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UQQAAA==" DoubleValue="95472000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.015229" DistinctValues="133.658737">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UQQAAA==" LintValue="1105"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2wQAAA==" LintValue="1243"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UQQAAA==" DoubleValue="95472000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2wQAAA==" DoubleValue="107395200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000304" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2wQAAA==" LintValue="1243"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2wQAAA==" LintValue="1243"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2wQAAA==" DoubleValue="107395200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2wQAAA==" DoubleValue="107395200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.020306" DistinctValues="178.211650">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2wQAAA==" LintValue="1243"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kwUAAA==" LintValue="1427"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2wQAAA==" DoubleValue="107395200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kwUAAA==" DoubleValue="123292800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kwUAAA==" LintValue="1427"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kwUAAA==" LintValue="1427"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kwUAAA==" DoubleValue="123292800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kwUAAA==" DoubleValue="123292800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002649" DistinctValues="23.244998">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kwUAAA==" LintValue="1427"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qwUAAA==" LintValue="1451"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kwUAAA==" DoubleValue="123292800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qwUAAA==" DoubleValue="125366400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qwUAAA==" LintValue="1451"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EQcAAA==" LintValue="1809"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qwUAAA==" DoubleValue="125366400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="EQcAAA==" DoubleValue="156297600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.025343" DistinctValues="223.085432">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EQcAAA==" LintValue="1809"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8gcAAA==" LintValue="2034"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="EQcAAA==" DoubleValue="156297600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8gcAAA==" DoubleValue="175737600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8gcAAA==" LintValue="2034"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8gcAAA==" LintValue="2034"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8gcAAA==" DoubleValue="175737600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8gcAAA==" DoubleValue="175737600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.012841" DistinctValues="113.029952">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8gcAAA==" LintValue="2034"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZAgAAA==" LintValue="2148"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8gcAAA==" DoubleValue="175737600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ZAgAAA==" DoubleValue="185587200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.010404" DistinctValues="91.582001">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZAgAAA==" LintValue="2148"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xQgAAA==" LintValue="2245"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ZAgAAA==" DoubleValue="185587200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xQgAAA==" DoubleValue="193968000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000283" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xQgAAA==" LintValue="2245"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xQgAAA==" LintValue="2245"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xQgAAA==" DoubleValue="193968000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="xQgAAA==" DoubleValue="193968000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.027780" DistinctValues="244.533384">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xQgAAA==" LintValue="2245"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yAkAAA==" LintValue="2504"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="xQgAAA==" DoubleValue="193968000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="yAkAAA==" DoubleValue="216345600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yAkAAA==" LintValue="2504"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KwsAAA==" LintValue="2859"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="yAkAAA==" DoubleValue="216345600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KwsAAA==" DoubleValue="247017600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwsAAA==" LintValue="2859"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lwwAAA==" LintValue="3223"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KwsAAA==" DoubleValue="247017600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lwwAAA==" DoubleValue="278467200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.038184" DistinctValues="337.115385">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lwwAAA==" LintValue="3223"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mgwAAA==" LintValue="3226"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lwwAAA==" DoubleValue="278467200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mgwAAA==" DoubleValue="278726400000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<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">
@@ -3257,11 +3257,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="vPH//w==" LintValue="-3652"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="vPH//w==" DoubleValue="-315532800000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" LintValue="0"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" DoubleValue="0.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -3298,11 +3298,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" LintValue="0"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="AAAAAA==" DoubleValue="0.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -3339,11 +3339,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" LintValue="3653"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="RQ4AAA==" DoubleValue="315619200000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" LintValue="7305"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" DoubleValue="631152000000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
@@ -3380,11 +3380,11 @@
</dxl:IsNotNull>
<dxl:Comparison ComparisonOperator=">=" OperatorMdid="0.1098.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" LintValue="7305"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="iRwAAA==" DoubleValue="631152000000000.000000"/>
</dxl:Comparison>
<dxl:Comparison ComparisonOperator="<" OperatorMdid="0.1095.1.0">
<dxl:Ident ColId="1" ColName="sales_date" TypeMdid="0.1082.1.0"/>
- <dxl:ConstValue TypeMdid="0.1082.1.0" Value="zioAAA==" LintValue="10958"/>
+ <dxl:ConstValue TypeMdid="0.1082.1.0" Value="zioAAA==" DoubleValue="946771200000000.000000"/>
</dxl:Comparison>
</dxl:And>
</dxl:PartConstraint>
diff --git a/src/backend/gporca/data/dxl/minidump/JoinColWithOnlyNDV.mdp b/src/backend/gporca/data/dxl/minidump/JoinColWithOnlyNDV.mdp
index a788f3f88b..4f11d431f5 100644
--- a/src/backend/gporca/data/dxl/minidump/JoinColWithOnlyNDV.mdp
+++ b/src/backend/gporca/data/dxl/minidump/JoinColWithOnlyNDV.mdp
@@ -9091,34 +9091,34 @@
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.641665.1.1.3" Name="web_rec_end_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.659091" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dv///w==" LintValue="-138"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dv///w==" LintValue="-138"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dv///w==" DoubleValue="-11923200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dv///w==" DoubleValue="-11923200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.181818" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4wAAAA==" LintValue="227"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="4wAAAA==" LintValue="227"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4wAAAA==" DoubleValue="19612800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="4wAAAA==" DoubleValue="19612800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.159091" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UAIAAA==" LintValue="592"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UAIAAA==" LintValue="592"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UAIAAA==" DoubleValue="51148800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UAIAAA==" DoubleValue="51148800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.641665.1.1.2" Name="web_rec_start_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.522727" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" LintValue="-868"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" LintValue="-868"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" DoubleValue="-74995200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="nPz//w==" DoubleValue="-74995200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.159091" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d////w==" LintValue="-137"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="d////w==" LintValue="-137"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d////w==" DoubleValue="-11836800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="d////w==" DoubleValue="-11836800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.159091" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5AAAAA==" LintValue="228"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5AAAAA==" LintValue="228"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5AAAAA==" DoubleValue="19699200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5AAAAA==" DoubleValue="19699200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.159091" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UQIAAA==" LintValue="593"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UQIAAA==" LintValue="593"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UQIAAA==" DoubleValue="51235200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UQIAAA==" DoubleValue="51235200000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.641613.1.1.35" Name="xmin" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
diff --git a/src/backend/gporca/data/dxl/minidump/JoinNDVRemain.mdp b/src/backend/gporca/data/dxl/minidump/JoinNDVRemain.mdp
index 9166682901..89545c48e7 100644
--- a/src/backend/gporca/data/dxl/minidump/JoinNDVRemain.mdp
+++ b/src/backend/gporca/data/dxl/minidump/JoinNDVRemain.mdp
@@ -521,34 +521,34 @@ select * from customer_address, store where customer_address.ca_county::text = s
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.516672.1.1.3" Name="s_rec_end_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.642215" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v7//w==" LintValue="-294"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2v7//w==" LintValue="-294"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2v7//w==" DoubleValue="-25401600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2v7//w==" DoubleValue="-25401600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.214072" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RwAAAA==" LintValue="71"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RwAAAA==" LintValue="71"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RwAAAA==" DoubleValue="6134400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RwAAAA==" DoubleValue="6134400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.142714" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tAEAAA==" LintValue="436"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tAEAAA==" LintValue="436"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tAEAAA==" DoubleValue="37670400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tAEAAA==" DoubleValue="37670400000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:ColumnStatistics Mdid="1.516672.1.1.2" Name="s_rec_start_date" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000">
<dxl:StatsBucket Frequency="0.570858" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="APz//w==" LintValue="-1024"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="APz//w==" LintValue="-1024"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="APz//w==" DoubleValue="-88473600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="APz//w==" DoubleValue="-88473600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.142714" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2/7//w==" LintValue="-293"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2/7//w==" LintValue="-293"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2/7//w==" DoubleValue="-25315200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2/7//w==" DoubleValue="-25315200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.142714" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SAAAAA==" LintValue="72"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SAAAAA==" LintValue="72"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="SAAAAA==" DoubleValue="6220800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="SAAAAA==" DoubleValue="6220800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.142714" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tQEAAA==" LintValue="437"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tQEAAA==" LintValue="437"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tQEAAA==" DoubleValue="37756800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="tQEAAA==" DoubleValue="37756800000000.000000"/>
</dxl:StatsBucket>
</dxl:ColumnStatistics>
<dxl:Type Mdid="0.1700.1.0" Name="numeric" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="false" Length="-1" PassByValue="false">
diff --git a/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp b/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp
index f3d1367a2c..a97f22e146 100644
--- a/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp
+++ b/src/backend/gporca/data/dxl/minidump/LOJ_bb_mpph.mdp
@@ -202,1204 +202,1204 @@
</dxl:Relation>
<dxl:ColumnStatistics Mdid="1.31256.1.0.12" Name="l_receiptdate" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvT//w==" LintValue="-2886"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/fT//w==" LintValue="-2819"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvT//w==" DoubleValue="-249350400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="/fT//w==" DoubleValue="-243561600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002390" DistinctValues="4.190345">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/fT//w==" LintValue="-2819"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BfX//w==" LintValue="-2811"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="/fT//w==" DoubleValue="-243561600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="BfX//w==" DoubleValue="-242870400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BfX//w==" LintValue="-2811"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="BfX//w==" LintValue="-2811"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="BfX//w==" DoubleValue="-242870400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="BfX//w==" DoubleValue="-242870400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005975" DistinctValues="10.475862">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="BfX//w==" LintValue="-2811"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GfX//w==" LintValue="-2791"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="BfX//w==" DoubleValue="-242870400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GfX//w==" DoubleValue="-241142400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GfX//w==" LintValue="-2791"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GfX//w==" LintValue="-2791"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GfX//w==" DoubleValue="-241142400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="GfX//w==" DoubleValue="-241142400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000299" DistinctValues="0.523793">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="GfX//w==" LintValue="-2791"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GvX//w==" LintValue="-2790"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="GfX//w==" DoubleValue="-241142400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="GvX//w==" DoubleValue="-241056000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000666" DistinctValues="1.014615">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GvX//w==" LintValue="-2790"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPX//w==" LintValue="-2788"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="GvX//w==" DoubleValue="-241056000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPX//w==" DoubleValue="-240883200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPX//w==" LintValue="-2788"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HPX//w==" LintValue="-2788"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPX//w==" DoubleValue="-240883200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HPX//w==" DoubleValue="-240883200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002999" DistinctValues="4.565769">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HPX//w==" LintValue="-2788"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JfX//w==" LintValue="-2779"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HPX//w==" DoubleValue="-240883200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="JfX//w==" DoubleValue="-240105600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JfX//w==" LintValue="-2779"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JfX//w==" LintValue="-2779"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="JfX//w==" DoubleValue="-240105600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="JfX//w==" DoubleValue="-240105600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001000" DistinctValues="1.521923">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JfX//w==" LintValue="-2779"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KPX//w==" LintValue="-2776"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="JfX//w==" DoubleValue="-240105600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="KPX//w==" DoubleValue="-239846400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KPX//w==" LintValue="-2776"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KPX//w==" LintValue="-2776"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="KPX//w==" DoubleValue="-239846400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="KPX//w==" DoubleValue="-239846400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002332" DistinctValues="3.551154">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="KPX//w==" LintValue="-2776"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="L/X//w==" LintValue="-2769"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="KPX//w==" DoubleValue="-239846400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="L/X//w==" DoubleValue="-239241600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="L/X//w==" LintValue="-2769"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="L/X//w==" LintValue="-2769"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="L/X//w==" DoubleValue="-239241600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="L/X//w==" DoubleValue="-239241600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001666" DistinctValues="2.536538">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="L/X//w==" LintValue="-2769"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NPX//w==" LintValue="-2764"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="L/X//w==" DoubleValue="-239241600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="NPX//w==" DoubleValue="-238809600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005776" DistinctValues="10.793333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NPX//w==" LintValue="-2764"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RPX//w==" LintValue="-2748"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="NPX//w==" DoubleValue="-238809600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="RPX//w==" DoubleValue="-237427200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RPX//w==" LintValue="-2748"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RPX//w==" LintValue="-2748"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="RPX//w==" DoubleValue="-237427200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="RPX//w==" DoubleValue="-237427200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002888" DistinctValues="5.396667">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RPX//w==" LintValue="-2748"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPX//w==" LintValue="-2740"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="RPX//w==" DoubleValue="-237427200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="TPX//w==" DoubleValue="-236736000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000963" DistinctValues="1.354444">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPX//w==" LintValue="-2740"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="T/X//w==" LintValue="-2737"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="TPX//w==" DoubleValue="-236736000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="T/X//w==" DoubleValue="-236476800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="T/X//w==" LintValue="-2737"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="T/X//w==" LintValue="-2737"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="T/X//w==" DoubleValue="-236476800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="T/X//w==" DoubleValue="-236476800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000321" DistinctValues="0.451481">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="T/X//w==" LintValue="-2737"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UPX//w==" LintValue="-2736"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="T/X//w==" DoubleValue="-236476800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="UPX//w==" DoubleValue="-236390400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UPX//w==" LintValue="-2736"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UPX//w==" LintValue="-2736"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="UPX//w==" DoubleValue="-236390400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="UPX//w==" DoubleValue="-236390400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001925" DistinctValues="2.708889">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="UPX//w==" LintValue="-2736"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VvX//w==" LintValue="-2730"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="UPX//w==" DoubleValue="-236390400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VvX//w==" DoubleValue="-235872000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VvX//w==" LintValue="-2730"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VvX//w==" LintValue="-2730"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VvX//w==" DoubleValue="-235872000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="VvX//w==" DoubleValue="-235872000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000321" DistinctValues="0.451481">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VvX//w==" LintValue="-2730"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="V/X//w==" LintValue="-2729"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="VvX//w==" DoubleValue="-235872000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="V/X//w==" DoubleValue="-235785600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="V/X//w==" LintValue="-2729"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="V/X//w==" LintValue="-2729"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="V/X//w==" DoubleValue="-235785600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="V/X//w==" DoubleValue="-235785600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002888" DistinctValues="4.063333">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="V/X//w==" LintValue="-2729"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="YPX//w==" LintValue="-2720"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="V/X//w==" DoubleValue="-235785600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="YPX//w==" DoubleValue="-235008000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="YPX//w==" LintValue="-2720"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="YPX//w==" LintValue="-2720"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="YPX//w==" DoubleValue="-235008000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="YPX//w==" DoubleValue="-235008000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002246" DistinctValues="3.160370">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="YPX//w==" LintValue="-2720"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Z/X//w==" LintValue="-2713"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="YPX//w==" DoubleValue="-235008000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Z/X//w==" DoubleValue="-234403200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004332" DistinctValues="6.595000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Z/X//w==" LintValue="-2713"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="d/X//w==" LintValue="-2697"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Z/X//w==" DoubleValue="-234403200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="d/X//w==" DoubleValue="-233020800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d/X//w==" LintValue="-2697"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="d/X//w==" LintValue="-2697"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="d/X//w==" DoubleValue="-233020800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="d/X//w==" DoubleValue="-233020800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000541" DistinctValues="0.824375">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="d/X//w==" LintValue="-2697"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="efX//w==" LintValue="-2695"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="d/X//w==" DoubleValue="-233020800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="efX//w==" DoubleValue="-232848000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="efX//w==" LintValue="-2695"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="efX//w==" LintValue="-2695"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="efX//w==" DoubleValue="-232848000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="efX//w==" DoubleValue="-232848000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001354" DistinctValues="2.060938">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="efX//w==" LintValue="-2695"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvX//w==" LintValue="-2690"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="efX//w==" DoubleValue="-232848000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvX//w==" DoubleValue="-232416000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvX//w==" LintValue="-2690"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fvX//w==" LintValue="-2690"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvX//w==" DoubleValue="-232416000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="fvX//w==" DoubleValue="-232416000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001354" DistinctValues="2.060938">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fvX//w==" LintValue="-2690"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g/X//w==" LintValue="-2685"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="fvX//w==" DoubleValue="-232416000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="g/X//w==" DoubleValue="-231984000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g/X//w==" LintValue="-2685"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="g/X//w==" LintValue="-2685"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="g/X//w==" DoubleValue="-231984000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="g/X//w==" DoubleValue="-231984000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001083" DistinctValues="1.648750">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="g/X//w==" LintValue="-2685"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="h/X//w==" LintValue="-2681"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="g/X//w==" DoubleValue="-231984000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="h/X//w==" DoubleValue="-231638400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002363" DistinctValues="3.324545">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="h/X//w==" LintValue="-2681"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="h/X//w==" DoubleValue="-231638400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000394" DistinctValues="0.554091">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" LintValue="-2669"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lfX//w==" LintValue="-2667"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="k/X//w==" DoubleValue="-230601600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lfX//w==" DoubleValue="-230428800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lfX//w==" LintValue="-2667"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lfX//w==" LintValue="-2667"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lfX//w==" DoubleValue="-230428800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="lfX//w==" DoubleValue="-230428800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003741" DistinctValues="5.263864">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lfX//w==" LintValue="-2667"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPX//w==" LintValue="-2648"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="lfX//w==" DoubleValue="-230428800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qPX//w==" DoubleValue="-228787200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPX//w==" LintValue="-2648"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qPX//w==" LintValue="-2648"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qPX//w==" DoubleValue="-228787200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qPX//w==" DoubleValue="-228787200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000788" DistinctValues="1.108182">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qPX//w==" LintValue="-2648"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPX//w==" LintValue="-2644"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qPX//w==" DoubleValue="-228787200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rPX//w==" DoubleValue="-228441600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPX//w==" LintValue="-2644"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rPX//w==" LintValue="-2644"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rPX//w==" DoubleValue="-228441600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rPX//w==" DoubleValue="-228441600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000394" DistinctValues="0.554091">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rPX//w==" LintValue="-2644"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rvX//w==" LintValue="-2642"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rPX//w==" DoubleValue="-228441600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rvX//w==" DoubleValue="-228268800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rvX//w==" LintValue="-2642"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rvX//w==" LintValue="-2642"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rvX//w==" DoubleValue="-228268800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="rvX//w==" DoubleValue="-228268800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000984" DistinctValues="1.385227">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rvX//w==" LintValue="-2642"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/X//w==" LintValue="-2637"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="rvX//w==" DoubleValue="-228268800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="s/X//w==" DoubleValue="-227836800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002987" DistinctValues="5.237931">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/X//w==" LintValue="-2637"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfX//w==" LintValue="-2627"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="s/X//w==" DoubleValue="-227836800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vfX//w==" DoubleValue="-226972800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfX//w==" LintValue="-2627"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vfX//w==" LintValue="-2627"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vfX//w==" DoubleValue="-226972800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vfX//w==" DoubleValue="-226972800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004182" DistinctValues="7.333103">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vfX//w==" LintValue="-2627"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/X//w==" LintValue="-2613"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vfX//w==" DoubleValue="-226972800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="y/X//w==" DoubleValue="-225763200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/X//w==" LintValue="-2613"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="y/X//w==" LintValue="-2613"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="y/X//w==" DoubleValue="-225763200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="y/X//w==" DoubleValue="-225763200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001494" DistinctValues="2.618966">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="y/X//w==" LintValue="-2613"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0PX//w==" LintValue="-2608"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="y/X//w==" DoubleValue="-225763200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0PX//w==" DoubleValue="-225331200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000279" DistinctValues="0.393226">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0PX//w==" LintValue="-2608"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0PX//w==" DoubleValue="-225331200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003354" DistinctValues="4.718710">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" LintValue="-2607"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="0fX//w==" DoubleValue="-225244800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002795" DistinctValues="3.932258">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" LintValue="-2595"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5/X//w==" LintValue="-2585"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fX//w==" DoubleValue="-224208000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="5/X//w==" DoubleValue="-223344000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5/X//w==" LintValue="-2585"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5/X//w==" LintValue="-2585"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="5/X//w==" DoubleValue="-223344000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="5/X//w==" DoubleValue="-223344000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000279" DistinctValues="0.393226">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5/X//w==" LintValue="-2585"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6PX//w==" LintValue="-2584"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="5/X//w==" DoubleValue="-223344000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6PX//w==" DoubleValue="-223257600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6PX//w==" LintValue="-2584"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6PX//w==" LintValue="-2584"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6PX//w==" DoubleValue="-223257600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6PX//w==" DoubleValue="-223257600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000838" DistinctValues="1.179677">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6PX//w==" LintValue="-2584"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6/X//w==" LintValue="-2581"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6PX//w==" DoubleValue="-223257600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6/X//w==" DoubleValue="-222998400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6/X//w==" LintValue="-2581"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6/X//w==" LintValue="-2581"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6/X//w==" DoubleValue="-222998400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="6/X//w==" DoubleValue="-222998400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001118" DistinctValues="1.572903">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6/X//w==" LintValue="-2581"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7/X//w==" LintValue="-2577"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="6/X//w==" DoubleValue="-222998400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7/X//w==" DoubleValue="-222652800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000928" DistinctValues="1.306071">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7/X//w==" LintValue="-2577"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8vX//w==" LintValue="-2574"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7/X//w==" DoubleValue="-222652800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8vX//w==" DoubleValue="-222393600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8vX//w==" LintValue="-2574"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8vX//w==" LintValue="-2574"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8vX//w==" DoubleValue="-222393600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8vX//w==" DoubleValue="-222393600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002475" DistinctValues="3.482857">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8vX//w==" LintValue="-2574"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vX//w==" LintValue="-2566"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8vX//w==" DoubleValue="-222393600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="+vX//w==" DoubleValue="-221702400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vX//w==" LintValue="-2566"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+vX//w==" LintValue="-2566"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="+vX//w==" DoubleValue="-221702400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="+vX//w==" DoubleValue="-221702400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002166" DistinctValues="3.047500">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+vX//w==" LintValue="-2566"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Afb//w==" LintValue="-2559"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="+vX//w==" DoubleValue="-221702400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Afb//w==" DoubleValue="-221097600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Afb//w==" LintValue="-2559"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Afb//w==" LintValue="-2559"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Afb//w==" DoubleValue="-221097600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Afb//w==" DoubleValue="-221097600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001238" DistinctValues="1.741429">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Afb//w==" LintValue="-2559"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bfb//w==" LintValue="-2555"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Afb//w==" DoubleValue="-221097600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bfb//w==" DoubleValue="-220752000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bfb//w==" LintValue="-2555"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Bfb//w==" LintValue="-2555"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Bfb//w==" DoubleValue="-220752000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Bfb//w==" DoubleValue="-220752000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001238" DistinctValues="1.741429">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Bfb//w==" LintValue="-2555"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cfb//w==" LintValue="-2551"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Bfb//w==" DoubleValue="-220752000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cfb//w==" DoubleValue="-220406400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cfb//w==" LintValue="-2551"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Cfb//w==" LintValue="-2551"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cfb//w==" DoubleValue="-220406400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Cfb//w==" DoubleValue="-220406400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000619" DistinctValues="0.870714">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Cfb//w==" LintValue="-2551"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="C/b//w==" LintValue="-2549"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Cfb//w==" DoubleValue="-220406400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="C/b//w==" DoubleValue="-220233600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000642" DistinctValues="1.199259">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="C/b//w==" LintValue="-2549"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfb//w==" LintValue="-2547"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="C/b//w==" DoubleValue="-220233600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfb//w==" DoubleValue="-220060800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001005" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfb//w==" LintValue="-2547"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfb//w==" LintValue="-2547"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfb//w==" DoubleValue="-220060800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfb//w==" DoubleValue="-220060800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008022" DistinctValues="14.990741">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfb//w==" LintValue="-2547"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvb//w==" LintValue="-2522"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfb//w==" DoubleValue="-220060800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvb//w==" DoubleValue="-217900800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001083" DistinctValues="2.023750">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvb//w==" LintValue="-2522"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfb//w==" LintValue="-2519"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvb//w==" DoubleValue="-217900800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfb//w==" DoubleValue="-217641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfb//w==" LintValue="-2519"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfb//w==" LintValue="-2519"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfb//w==" DoubleValue="-217641600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Kfb//w==" DoubleValue="-217641600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007580" DistinctValues="14.166250">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfb//w==" LintValue="-2519"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pvb//w==" LintValue="-2498"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Kfb//w==" DoubleValue="-217641600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Pvb//w==" DoubleValue="-215827200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002246" DistinctValues="4.197407">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pvb//w==" LintValue="-2498"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfb//w==" LintValue="-2491"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Pvb//w==" DoubleValue="-215827200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfb//w==" DoubleValue="-215222400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfb//w==" LintValue="-2491"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfb//w==" LintValue="-2491"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfb//w==" DoubleValue="-215222400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfb//w==" DoubleValue="-215222400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006417" DistinctValues="11.992593">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfb//w==" LintValue="-2491"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfb//w==" LintValue="-2471"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfb//w==" DoubleValue="-215222400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Wfb//w==" DoubleValue="-213494400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006301" DistinctValues="11.774545">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfb//w==" LintValue="-2471"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="afb//w==" LintValue="-2455"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Wfb//w==" DoubleValue="-213494400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="afb//w==" DoubleValue="-212112000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="afb//w==" LintValue="-2455"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="afb//w==" LintValue="-2455"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="afb//w==" DoubleValue="-212112000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="afb//w==" DoubleValue="-212112000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002363" DistinctValues="4.415455">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="afb//w==" LintValue="-2455"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="b/b//w==" LintValue="-2449"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="afb//w==" DoubleValue="-212112000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="b/b//w==" DoubleValue="-211593600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="b/b//w==" LintValue="-2449"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gPb//w==" LintValue="-2432"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="b/b//w==" DoubleValue="-211593600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gPb//w==" DoubleValue="-210124800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005119" DistinctValues="8.975909">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gPb//w==" LintValue="-2432"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jfb//w==" LintValue="-2419"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gPb//w==" DoubleValue="-210124800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jfb//w==" DoubleValue="-209001600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jfb//w==" LintValue="-2419"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jfb//w==" LintValue="-2419"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jfb//w==" DoubleValue="-209001600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jfb//w==" DoubleValue="-209001600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001575" DistinctValues="2.761818">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jfb//w==" LintValue="-2419"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfb//w==" LintValue="-2415"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jfb//w==" DoubleValue="-209001600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kfb//w==" DoubleValue="-208656000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfb//w==" LintValue="-2415"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfb//w==" LintValue="-2415"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kfb//w==" DoubleValue="-208656000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="kfb//w==" DoubleValue="-208656000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001969" DistinctValues="3.452273">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfb//w==" LintValue="-2415"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvb//w==" LintValue="-2410"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="kfb//w==" DoubleValue="-208656000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lvb//w==" DoubleValue="-208224000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvb//w==" LintValue="-2410"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pvb//w==" LintValue="-2394"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lvb//w==" DoubleValue="-208224000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pvb//w==" DoubleValue="-206841600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pvb//w==" LintValue="-2394"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tfb//w==" LintValue="-2379"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pvb//w==" DoubleValue="-206841600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="tfb//w==" DoubleValue="-205545600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003465" DistinctValues="6.476000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tfb//w==" LintValue="-2379"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wfb//w==" LintValue="-2367"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="tfb//w==" DoubleValue="-205545600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="wfb//w==" DoubleValue="-204508800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wfb//w==" LintValue="-2367"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="wfb//w==" LintValue="-2367"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="wfb//w==" DoubleValue="-204508800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="wfb//w==" DoubleValue="-204508800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005198" DistinctValues="9.714000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="wfb//w==" LintValue="-2367"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/b//w==" LintValue="-2349"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="wfb//w==" DoubleValue="-204508800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="0/b//w==" DoubleValue="-202953600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002707" DistinctValues="4.746875">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/b//w==" LintValue="-2349"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fb//w==" LintValue="-2339"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="0/b//w==" DoubleValue="-202953600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fb//w==" DoubleValue="-202089600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fb//w==" LintValue="-2339"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fb//w==" LintValue="-2339"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fb//w==" DoubleValue="-202089600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fb//w==" DoubleValue="-202089600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004602" DistinctValues="8.069688">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fb//w==" LintValue="-2339"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7vb//w==" LintValue="-2322"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fb//w==" DoubleValue="-202089600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="7vb//w==" DoubleValue="-200620800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7vb//w==" LintValue="-2322"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7vb//w==" LintValue="-2322"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="7vb//w==" DoubleValue="-200620800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="7vb//w==" DoubleValue="-200620800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001354" DistinctValues="2.373438">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7vb//w==" LintValue="-2322"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/b//w==" LintValue="-2317"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="7vb//w==" DoubleValue="-200620800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/b//w==" DoubleValue="-200188800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/b//w==" LintValue="-2317"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/f//w==" LintValue="-2289"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/b//w==" DoubleValue="-200188800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/f//w==" DoubleValue="-197769600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001507" DistinctValues="2.815652">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/f//w==" LintValue="-2289"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="E/f//w==" LintValue="-2285"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/f//w==" DoubleValue="-197769600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="E/f//w==" DoubleValue="-197424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002010" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="E/f//w==" LintValue="-2285"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="E/f//w==" LintValue="-2285"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="E/f//w==" DoubleValue="-197424000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="E/f//w==" DoubleValue="-197424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007157" DistinctValues="13.374348">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="E/f//w==" LintValue="-2285"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvf//w==" LintValue="-2266"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="E/f//w==" DoubleValue="-197424000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Jvf//w==" DoubleValue="-195782400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvf//w==" LintValue="-2266"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/f//w==" LintValue="-2245"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Jvf//w==" DoubleValue="-195782400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="O/f//w==" DoubleValue="-193968000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000347" DistinctValues="0.647600">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/f//w==" LintValue="-2245"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PPf//w==" LintValue="-2244"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="O/f//w==" DoubleValue="-193968000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="PPf//w==" DoubleValue="-193881600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PPf//w==" LintValue="-2244"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PPf//w==" LintValue="-2244"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="PPf//w==" DoubleValue="-193881600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="PPf//w==" DoubleValue="-193881600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008317" DistinctValues="15.542400">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PPf//w==" LintValue="-2244"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPf//w==" LintValue="-2220"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="PPf//w==" DoubleValue="-193881600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="VPf//w==" DoubleValue="-191808000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007970" DistinctValues="14.894800">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPf//w==" LintValue="-2220"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="a/f//w==" LintValue="-2197"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="VPf//w==" DoubleValue="-191808000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="a/f//w==" DoubleValue="-189820800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="a/f//w==" LintValue="-2197"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="a/f//w==" LintValue="-2197"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="a/f//w==" DoubleValue="-189820800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="a/f//w==" DoubleValue="-189820800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000693" DistinctValues="1.295200">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="a/f//w==" LintValue="-2197"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bff//w==" LintValue="-2195"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="a/f//w==" DoubleValue="-189820800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="bff//w==" DoubleValue="-189648000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001733" DistinctValues="3.038000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bff//w==" LintValue="-2195"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cff//w==" LintValue="-2191"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="bff//w==" DoubleValue="-189648000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="cff//w==" DoubleValue="-189302400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cff//w==" LintValue="-2191"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cff//w==" LintValue="-2191"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="cff//w==" DoubleValue="-189302400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="cff//w==" DoubleValue="-189302400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001299" DistinctValues="2.278500">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="cff//w==" LintValue="-2191"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dPf//w==" LintValue="-2188"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="cff//w==" DoubleValue="-189302400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dPf//w==" DoubleValue="-189043200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dPf//w==" LintValue="-2188"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dPf//w==" LintValue="-2188"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dPf//w==" DoubleValue="-189043200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="dPf//w==" DoubleValue="-189043200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005631" DistinctValues="9.873500">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="dPf//w==" LintValue="-2188"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gff//w==" LintValue="-2175"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="dPf//w==" DoubleValue="-189043200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="gff//w==" DoubleValue="-187920000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004873" DistinctValues="8.544375">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gff//w==" LintValue="-2175"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivf//w==" LintValue="-2166"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="gff//w==" DoubleValue="-187920000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="ivf//w==" DoubleValue="-187142400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivf//w==" LintValue="-2166"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ivf//w==" LintValue="-2166"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="ivf//w==" DoubleValue="-187142400000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="ivf//w==" DoubleValue="-187142400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001083" DistinctValues="1.898750">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ivf//w==" LintValue="-2166"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jPf//w==" LintValue="-2164"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="ivf//w==" DoubleValue="-187142400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="jPf//w==" DoubleValue="-186969600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002010" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jPf//w==" LintValue="-2164"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jPf//w==" LintValue="-2164"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="jPf//w==" DoubleValue="-186969600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="jPf//w==" DoubleValue="-186969600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002707" DistinctValues="4.746875">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jPf//w==" LintValue="-2164"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kff//w==" LintValue="-2159"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="jPf//w==" DoubleValue="-186969600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="kff//w==" DoubleValue="-186537600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002888" DistinctValues="5.063333">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kff//w==" LintValue="-2159"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mPf//w==" LintValue="-2152"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="kff//w==" DoubleValue="-186537600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="mPf//w==" DoubleValue="-185932800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mPf//w==" LintValue="-2152"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mPf//w==" LintValue="-2152"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="mPf//w==" DoubleValue="-185932800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="mPf//w==" DoubleValue="-185932800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004950" DistinctValues="8.680000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mPf//w==" LintValue="-2152"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pPf//w==" LintValue="-2140"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="mPf//w==" DoubleValue="-185932800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pPf//w==" DoubleValue="-184896000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pPf//w==" LintValue="-2140"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pPf//w==" LintValue="-2140"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pPf//w==" DoubleValue="-184896000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="pPf//w==" DoubleValue="-184896000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000825" DistinctValues="1.446667">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pPf//w==" LintValue="-2140"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pvf//w==" LintValue="-2138"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="pPf//w==" DoubleValue="-184896000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="pvf//w==" DoubleValue="-184723200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pvf//w==" LintValue="-2138"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvf//w==" LintValue="-2118"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="pvf//w==" DoubleValue="-184723200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="uvf//w==" DoubleValue="-182995200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002406" DistinctValues="4.497222">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvf//w==" LintValue="-2118"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/f//w==" LintValue="-2113"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="uvf//w==" DoubleValue="-182995200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="v/f//w==" DoubleValue="-182563200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/f//w==" LintValue="-2113"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v/f//w==" LintValue="-2113"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="v/f//w==" DoubleValue="-182563200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="v/f//w==" DoubleValue="-182563200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006257" DistinctValues="11.692778">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="v/f//w==" LintValue="-2113"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPf//w==" LintValue="-2100"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="v/f//w==" DoubleValue="-182563200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="zPf//w==" DoubleValue="-181440000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007088" DistinctValues="13.246364">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPf//w==" LintValue="-2100"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="zPf//w==" DoubleValue="-181440000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001575" DistinctValues="2.943636">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" LintValue="-2082"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4vf//w==" LintValue="-2078"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3vf//w==" DoubleValue="-179884800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="4vf//w==" DoubleValue="-179539200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4vf//w==" LintValue="-2078"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8vf//w==" LintValue="-2062"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="4vf//w==" DoubleValue="-179539200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8vf//w==" DoubleValue="-178156800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001805" DistinctValues="3.372917">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8vf//w==" LintValue="-2062"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9/f//w==" LintValue="-2057"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8vf//w==" DoubleValue="-178156800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="9/f//w==" DoubleValue="-177724800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9/f//w==" LintValue="-2057"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9/f//w==" LintValue="-2057"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="9/f//w==" DoubleValue="-177724800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="9/f//w==" DoubleValue="-177724800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006858" DistinctValues="12.817083">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9/f//w==" LintValue="-2057"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cvj//w==" LintValue="-2038"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="9/f//w==" DoubleValue="-177724800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Cvj//w==" DoubleValue="-176083200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000896" DistinctValues="1.364483">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cvj//w==" LintValue="-2038"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfj//w==" LintValue="-2035"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Cvj//w==" DoubleValue="-176083200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfj//w==" DoubleValue="-175824000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfj//w==" LintValue="-2035"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfj//w==" LintValue="-2035"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfj//w==" DoubleValue="-175824000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Dfj//w==" DoubleValue="-175824000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.004481" DistinctValues="6.822414">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfj//w==" LintValue="-2035"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPj//w==" LintValue="-2020"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Dfj//w==" DoubleValue="-175824000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="HPj//w==" DoubleValue="-174528000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPj//w==" LintValue="-2020"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HPj//w==" LintValue="-2020"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="HPj//w==" DoubleValue="-174528000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="HPj//w==" DoubleValue="-174528000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000299" DistinctValues="0.454828">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HPj//w==" LintValue="-2020"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hfj//w==" LintValue="-2019"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="HPj//w==" DoubleValue="-174528000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hfj//w==" DoubleValue="-174441600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hfj//w==" LintValue="-2019"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Hfj//w==" LintValue="-2019"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hfj//w==" DoubleValue="-174441600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Hfj//w==" DoubleValue="-174441600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000299" DistinctValues="0.454828">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Hfj//w==" LintValue="-2019"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvj//w==" LintValue="-2018"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Hfj//w==" DoubleValue="-174441600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvj//w==" DoubleValue="-174355200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvj//w==" LintValue="-2018"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvj//w==" LintValue="-2018"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvj//w==" DoubleValue="-174355200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Hvj//w==" DoubleValue="-174355200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002689" DistinctValues="4.093448">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvj//w==" LintValue="-2018"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/j//w==" LintValue="-2009"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Hvj//w==" DoubleValue="-174355200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="J/j//w==" DoubleValue="-173577600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/j//w==" LintValue="-2009"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/j//w==" LintValue="-1981"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="J/j//w==" DoubleValue="-173577600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Q/j//w==" DoubleValue="-171158400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000838" DistinctValues="1.470000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/j//w==" LintValue="-1981"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Rvj//w==" LintValue="-1978"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Q/j//w==" DoubleValue="-171158400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Rvj//w==" DoubleValue="-170899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rvj//w==" LintValue="-1978"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Rvj//w==" LintValue="-1978"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rvj//w==" DoubleValue="-170899200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Rvj//w==" DoubleValue="-170899200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002515" DistinctValues="4.410000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Rvj//w==" LintValue="-1978"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="T/j//w==" LintValue="-1969"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Rvj//w==" DoubleValue="-170899200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="T/j//w==" DoubleValue="-170121600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="T/j//w==" LintValue="-1969"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="T/j//w==" LintValue="-1969"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="T/j//w==" DoubleValue="-170121600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="T/j//w==" DoubleValue="-170121600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005310" DistinctValues="9.310000">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="T/j//w==" LintValue="-1969"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvj//w==" LintValue="-1950"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="T/j//w==" DoubleValue="-170121600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yvj//w==" DoubleValue="-168480000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvj//w==" LintValue="-1950"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dfj//w==" LintValue="-1931"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yvj//w==" DoubleValue="-168480000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="dfj//w==" DoubleValue="-166838400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dfj//w==" LintValue="-1931"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="iPj//w==" LintValue="-1912"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="dfj//w==" DoubleValue="-166838400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="iPj//w==" DoubleValue="-165196800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="iPj//w==" LintValue="-1912"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfj//w==" LintValue="-1891"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="iPj//w==" DoubleValue="-165196800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="nfj//w==" DoubleValue="-163382400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002666" DistinctValues="4.981538">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfj//w==" LintValue="-1891"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qfj//w==" LintValue="-1879"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="nfj//w==" DoubleValue="-163382400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="qfj//w==" DoubleValue="-162345600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qfj//w==" LintValue="-1879"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qfj//w==" LintValue="-1879"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="qfj//w==" DoubleValue="-162345600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="qfj//w==" DoubleValue="-162345600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005998" DistinctValues="11.208462">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qfj//w==" LintValue="-1879"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPj//w==" LintValue="-1852"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="qfj//w==" DoubleValue="-162345600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xPj//w==" DoubleValue="-160012800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPj//w==" LintValue="-1852"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1/j//w==" LintValue="-1833"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xPj//w==" DoubleValue="-160012800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="1/j//w==" DoubleValue="-158371200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002736" DistinctValues="5.112632">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1/j//w==" LintValue="-1833"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fj//w==" LintValue="-1827"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="1/j//w==" DoubleValue="-158371200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="3fj//w==" DoubleValue="-157852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fj//w==" LintValue="-1827"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fj//w==" LintValue="-1827"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="3fj//w==" DoubleValue="-157852800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="3fj//w==" DoubleValue="-157852800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005928" DistinctValues="11.077368">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fj//w==" LintValue="-1827"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6vj//w==" LintValue="-1814"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="3fj//w==" DoubleValue="-157852800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="6vj//w==" DoubleValue="-156729600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6vj//w==" LintValue="-1814"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//j//w==" LintValue="-1793"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="6vj//w==" DoubleValue="-156729600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//j//w==" DoubleValue="-154915200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//j//w==" LintValue="-1793"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/n//w==" LintValue="-1777"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//j//w==" DoubleValue="-154915200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="D/n//w==" DoubleValue="-153532800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/n//w==" LintValue="-1777"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kvn//w==" LintValue="-1750"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="D/n//w==" DoubleValue="-153532800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Kvn//w==" DoubleValue="-151200000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007545" DistinctValues="14.100968">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kvn//w==" LintValue="-1750"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfn//w==" LintValue="-1723"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Kvn//w==" DoubleValue="-151200000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfn//w==" DoubleValue="-148867200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfn//w==" LintValue="-1723"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfn//w==" LintValue="-1723"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfn//w==" DoubleValue="-148867200000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="Rfn//w==" DoubleValue="-148867200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001118" DistinctValues="2.089032">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfn//w==" LintValue="-1723"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sfn//w==" LintValue="-1719"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="Rfn//w==" DoubleValue="-148867200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Sfn//w==" DoubleValue="-148521600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sfn//w==" LintValue="-1719"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yfn//w==" LintValue="-1695"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Sfn//w==" DoubleValue="-148521600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Yfn//w==" DoubleValue="-146448000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yfn//w==" LintValue="-1695"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvn//w==" LintValue="-1666"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="Yfn//w==" DoubleValue="-146448000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="fvn//w==" DoubleValue="-143942400000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.002363" DistinctValues="4.415455">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvn//w==" LintValue="-1666"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPn//w==" LintValue="-1660"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="fvn//w==" DoubleValue="-143942400000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="hPn//w==" DoubleValue="-143424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPn//w==" LintValue="-1660"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hPn//w==" LintValue="-1660"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="hPn//w==" DoubleValue="-143424000000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="hPn//w==" DoubleValue="-143424000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.006301" DistinctValues="11.774545">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hPn//w==" LintValue="-1660"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lPn//w==" LintValue="-1644"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="hPn//w==" DoubleValue="-143424000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="lPn//w==" DoubleValue="-142041600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008663" DistinctValues="17.190000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lPn//w==" LintValue="-1644"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rvn//w==" LintValue="-1618"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="lPn//w==" DoubleValue="-142041600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="rvn//w==" DoubleValue="-139795200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003390" DistinctValues="5.943913">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rvn//w==" LintValue="-1618"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="t/n//w==" LintValue="-1609"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="rvn//w==" DoubleValue="-139795200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="t/n//w==" DoubleValue="-139017600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="t/n//w==" LintValue="-1609"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="t/n//w==" LintValue="-1609"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="t/n//w==" DoubleValue="-139017600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="t/n//w==" DoubleValue="-139017600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001883" DistinctValues="3.302174">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="t/n//w==" LintValue="-1609"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="t/n//w==" DoubleValue="-139017600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003390" DistinctValues="5.943913">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" LintValue="-1604"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfn//w==" LintValue="-1595"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="vPn//w==" DoubleValue="-138585600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="xfn//w==" DoubleValue="-137808000000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.008270" DistinctValues="15.454091">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfn//w==" LintValue="-1595"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2vn//w==" LintValue="-1574"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="xfn//w==" DoubleValue="-137808000000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2vn//w==" DoubleValue="-135993600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2vn//w==" LintValue="-1574"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2vn//w==" LintValue="-1574"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2vn//w==" DoubleValue="-135993600000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="2vn//w==" DoubleValue="-135993600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.000394" DistinctValues="0.735909">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2vn//w==" LintValue="-1574"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2/n//w==" LintValue="-1573"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="2vn//w==" DoubleValue="-135993600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="2/n//w==" DoubleValue="-135907200000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.007580" DistinctValues="14.166250">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2/n//w==" LintValue="-1573"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pn//w==" LintValue="-1552"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="2/n//w==" DoubleValue="-135907200000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pn//w==" DoubleValue="-134092800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001675" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pn//w==" LintValue="-1552"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pn//w==" LintValue="-1552"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pn//w==" DoubleValue="-134092800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="8Pn//w==" DoubleValue="-134092800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001083" DistinctValues="2.023750">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pn//w==" LintValue="-1552"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/n//w==" LintValue="-1549"/>
+ <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="8Pn//w==" DoubleValue="-134092800000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="8/n//w==" DoubleValue="-133833600000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.005472" DistinctValues="10.225263">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/n//w==" LintValue="-1549"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//n//w==" LintValue="-1537"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="8/n//w==" DoubleValue="-133833600000000.000000"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="//n//w==" DoubleValue="-132796800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.001340" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//n//w==" LintValue="-1537"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="//n//w==" LintValue="-1537"/>
+ <dxl:LowerBound Closed="true" TypeMdid="0.1082.1.0" Value="//n//w==" DoubleValue="-132796800000000.000000"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.1082.1.0" Value="//n//w==" DoubleValue="-132796800000000.000000"/>
</dxl:StatsBucket>
<dxl:StatsBucket Frequency="0.003192" DistinctValues="5.964737">
- <dxl:LowerBound Closed="false" TypeMdid="0.1082.1.0" Value="//n//w==" LintValue="-1537"/>
- <dxl:UpperBound Closed="false" TypeMdid="0.1082.1.0" Value="Bvr//w==" LintValue="-1530"/>
... 11097 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 28/30: [ORCA] Fix ident to const predicate push down optimization
Posted by ma...@apache.org.
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 58dcaf000c47644df266e812c17c17a68cce213a
Author: David Kimura <dk...@vmware.com>
AuthorDate: Tue Feb 27 13:28:08 2024 -0800
[ORCA] Fix ident to const predicate push down optimization
In preprocessing, ORCA may choose to add select filters in order to help
trigger predicate push down during query normalization. In preprocessing
step PexprReplaceColWithConst(), a duplicate filter is created of join
predicates, with idents replaced by consts from equality predicates
among the select filter. The transformation looks like:
Input:
Select
|-- NaryJoin/LeftOuterJoin
| |-- ...
| +-- Join Pred (has idents)
+-- Filter
Output:
Select
|-- Select
| |-- NaryJoin/LeftOuterJoin
| | |-- ...
| | +-- Join Pred (has idents)
| +-- Join Pred (has consts)
+-- Filter
However, an issue occurs if the Join Pred contains a CTEAnchor. In that
case the CTEAnchor is "duplicated" and leads to an invalid plan. In
retail build that manifests as a crash during DXL to PlStmt translation.
This commit fixes the issue by choosing to not add the select filter
when the Join Pred contains a CTEAnchor.
---
.../src/operators/CExpressionPreprocessor.cpp | 37 ++++++---
src/test/regress/expected/bfv_cte.out | 47 +++++++++++
src/test/regress/expected/bfv_cte_optimizer.out | 93 ++++++++++++++++++++++
src/test/regress/sql/bfv_cte.sql | 25 ++++++
4 files changed, 189 insertions(+), 13 deletions(-)
diff --git a/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp b/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp
index c939fa3805..ec36bf68b5 100644
--- a/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CExpressionPreprocessor.cpp
@@ -2133,7 +2133,13 @@ CExpressionPreprocessor::PexprReplaceColWithConst(
{
GPOS_ASSERT(nullptr != pexpr);
- COperator *pop = pexpr->Pop();
+ CExpression *pexprFilter = nullptr;
+ if (COperator::EopLogicalNAryJoin == pexpr->Pop()->Eopid() ||
+ COperator::EopLogicalSelect == pexpr->Pop()->Eopid())
+ {
+ pexprFilter = (*pexpr)[pexpr->Arity() - 1];
+ }
+
// Here we check for following pattern:
//
// Select
@@ -2150,15 +2156,15 @@ CExpressionPreprocessor::PexprReplaceColWithConst(
(COperator::EopLogicalLeftOuterJoin == ((*pexpr)[0])->Pop()->Eopid() ||
COperator::EopLogicalNAryJoin == ((*pexpr)[0])->Pop()->Eopid()))
{
- UpdateExprToConstantPredicateMapping(mp, (*pexpr)[pexpr->Arity() - 1],
- phmExprToConst, true);
+ UpdateExprToConstantPredicateMapping(mp, pexprFilter, phmExprToConst,
+ true);
CExpression *pexprNew =
PexprReplaceColWithConst(mp, pexpr, phmExprToConst, false);
// erase values from map...
- UpdateExprToConstantPredicateMapping(mp, (*pexpr)[pexpr->Arity() - 1],
- phmExprToConst, false);
+ UpdateExprToConstantPredicateMapping(mp, pexprFilter, phmExprToConst,
+ false);
return pexprNew;
}
@@ -2174,19 +2180,24 @@ CExpressionPreprocessor::PexprReplaceColWithConst(
pdrgpexpr->Append(pexprChild);
}
+ COperator *pop = pexpr->Pop();
+ pop->AddRef();
+
+ // Add a select with a filter where idents are replaced by const values.
+ // Skip if the filter contains a CTEAnchor to prevent creating an invalid
+ // plan with a duplicate CTEAnchor.
if (COperator::EopLogicalNAryJoin == pexpr->Pop()->Eopid() &&
- phmExprToConst->Size() > 0)
+ phmExprToConst->Size() > 0 && !CUtils::FHasCTEAnchor(pexprFilter))
{
- CExpression *pexprFilter = SubstituteConstantIdentifier(
- mp, (*pexpr)[pexpr->Arity() - 1], phmExprToConst);
+ CExpression *pexprFilterWithConsts =
+ SubstituteConstantIdentifier(mp, pexprFilter, phmExprToConst);
- pop->AddRef();
- return GPOS_NEW(mp) CExpression(
- mp, GPOS_NEW(mp) CLogicalSelect(mp),
- GPOS_NEW(mp) CExpression(mp, pop, pdrgpexpr), pexprFilter);
+ return GPOS_NEW(mp)
+ CExpression(mp, GPOS_NEW(mp) CLogicalSelect(mp),
+ GPOS_NEW(mp) CExpression(mp, pop, pdrgpexpr),
+ pexprFilterWithConsts);
}
- pop->AddRef();
return GPOS_NEW(mp) CExpression(mp, pop, pdrgpexpr);
}
diff --git a/src/test/regress/expected/bfv_cte.out b/src/test/regress/expected/bfv_cte.out
index b050796d4a..b5704eecca 100644
--- a/src/test/regress/expected/bfv_cte.out
+++ b/src/test/regress/expected/bfv_cte.out
@@ -1,6 +1,7 @@
--
-- Test queries mixes window functions with aggregate functions or grouping.
--
+set optimizer_trace_fallback=on;
DROP TABLE IF EXISTS test_group_window;
NOTICE: table "test_group_window" does not exist, skipping
CREATE TABLE test_group_window(c1 int, c2 int);
@@ -686,3 +687,49 @@ from t1_cte join t2 on t1_cte.b = t2.b;
(10 rows)
drop table t1, t2, rep;
+--
+-- Test for a bug in ORCA optimizing a CTE view.
+--
+-- This crashed at one point in retail build due to preprocessor creating a
+-- duplicate CTE anchor. That led ORCA to construct a bad plan where
+-- CTEConsumer project list contained an invalid scalar subplan and caused a
+-- SIGSEGV during DXL to PlStmt translation.
+--
+create table a_table(a smallint);
+create view cte_view as
+ with t1 as (select a from a_table)
+ select t1.a from t1
+ where (t1.a = (select t1.a from t1));
+-- Only by tampering with pg_stats directly I was able to guide ORCA cost model
+-- to pick a plan that would crash before this fix
+set allow_system_table_mods=true;
+update pg_class set relpages = 1::int, reltuples = 12.0::real where relname = 'a_table';
+reset allow_system_table_mods;
+explain select * from a_table join cte_view on a_table.a = (select a from cte_view) where cte_view.a = 2024;
+ QUERY PLAN
+-------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=10000000003.50..10000000005.68 rows=3 width=4)
+ InitPlan 2 (returns $1) (slice5)
+ -> Gather Motion 3:1 (slice6; segments: 3) (cost=1.20..2.30 rows=3 width=2)
+ -> Seq Scan on a_table a_table_3 (cost=0.00..1.05 rows=1 width=2)
+ Filter: (a = $0)
+ InitPlan 1 (returns $0) (slice7)
+ -> Gather Motion 3:1 (slice8; segments: 3) (cost=0.00..1.20 rows=12 width=2)
+ -> Seq Scan on a_table a_table_2 (cost=0.00..1.04 rows=4 width=2)
+ -> Nested Loop (cost=10000000001.20..10000000003.34 rows=1 width=4)
+ -> Seq Scan on a_table (cost=0.00..1.05 rows=1 width=2)
+ Filter: (a = $1)
+ -> Materialize (cost=1.20..2.28 rows=1 width=2)
+ -> Redistribute Motion 1:3 (slice2; segments: 1) (cost=1.20..2.28 rows=1 width=2)
+ Hash Key: $1
+ -> Result (cost=1.20..2.25 rows=1 width=2)
+ One-Time Filter: ($2 = 2024)
+ InitPlan 3 (returns $2) (slice3)
+ -> Gather Motion 3:1 (slice4; segments: 3) (cost=0.00..1.20 rows=12 width=2)
+ -> Seq Scan on a_table a_table_4 (cost=0.00..1.04 rows=4 width=2)
+ -> Seq Scan on a_table a_table_1 (cost=0.00..1.05 rows=1 width=2)
+ Filter: (a = 2024)
+ Optimizer: Postgres-based planner
+(22 rows)
+
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/expected/bfv_cte_optimizer.out b/src/test/regress/expected/bfv_cte_optimizer.out
index dc7c1d75e1..a3057cf207 100644
--- a/src/test/regress/expected/bfv_cte_optimizer.out
+++ b/src/test/regress/expected/bfv_cte_optimizer.out
@@ -1,6 +1,7 @@
--
-- Test queries mixes window functions with aggregate functions or grouping.
--
+set optimizer_trace_fallback=on;
DROP TABLE IF EXISTS test_group_window;
NOTICE: table "test_group_window" does not exist, skipping
CREATE TABLE test_group_window(c1 int, c2 int);
@@ -305,6 +306,8 @@ SELECT cup.* FROM
SELECT sum(t.b) OVER(PARTITION BY t.a ) AS e FROM (select 1 as a, 2 as b from pg_class limit 1)foo,t
) as cup
GROUP BY cup.e;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
e
---
2
@@ -435,12 +438,16 @@ WHERE y.b = z.b - 1;
-- On seg2, introduce a delay in SISC WRITER (slice1) so that the xslice shared state
-- which is stored in shared memory is initialized by the SISC READER (slice2 or slice4)
select gp_inject_fault('get_shareinput_reference_delay_writer', 'suspend', dbid) from gp_segment_configuration where content = 2 and role = 'p';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
gp_inject_fault
-----------------
Success:
(1 row)
select gp_inject_fault('get_shareinput_reference_done', 'skip', dbid) from gp_segment_configuration where content = 2 and role = 'p';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
gp_inject_fault
-----------------
Success:
@@ -456,18 +463,24 @@ select gp_inject_fault('get_shareinput_reference_done', 'skip', dbid) from gp_se
\! bash -c 'psql -X regression -c "set client_min_messages to log; set enable_parallel=off; set debug_shareinput_xslice to true; set optimizer_enable_motion_broadcast to off; WITH cte AS MATERIALIZED (SELECT * FROM sisc_t1) SELECT y.a, z.a FROM (SELECT cte1.a, cte1.b FROM cte cte1 JOIN sisc_t2 ON (cte1.a = sisc_t2.d)) y, (SELECT cte2.a, cte2.b FROM cte cte2 JOIN sisc_t2 ON (cte2.a = sisc_t2.d)) z WHERE y.b = z.b - 1;" &> /tmp/bfv_cte.out' &
-- Wait for both SISC READERs to be initialized and squelched
select gp_wait_until_triggered_fault('get_shareinput_reference_done', 1, dbid) from gp_segment_configuration where content = 2 and role = 'p';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
gp_wait_until_triggered_fault
-------------------------------
Success:
(1 row)
select gp_inject_fault('get_shareinput_reference_done', 'reset', dbid) from gp_segment_configuration where content = 2 and role = 'p';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
gp_inject_fault
-----------------
Success:
(1 row)
select gp_inject_fault('get_shareinput_reference_delay_writer', 'reset', dbid) from gp_segment_configuration where content = 2 and role = 'p';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
gp_inject_fault
-----------------
Success:
@@ -475,6 +488,16 @@ select gp_inject_fault('get_shareinput_reference_delay_writer', 'reset', dbid) f
-- Wait for the query to finish
select wait_until_query_output_to_file('/tmp/bfv_cte.out');
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: SIRV functions
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: SIRV functions
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query Parameter
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Query Parameter
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: SIRV functions
wait_until_query_output_to_file
---------------------------------
@@ -507,6 +530,8 @@ LOG: SISC (shareid=0, slice=1): removed xslice state (seg2 slice1 127.0.1.1:70
-- cleanup
select gp_inject_fault_infinite('all', 'reset', dbid) from gp_segment_configuration;
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
gp_inject_fault_infinite
--------------------------
Success:
@@ -701,3 +726,71 @@ from t1_cte join t2 on t1_cte.b = t2.b;
(10 rows)
drop table t1, t2, rep;
+--
+-- Test for a bug in ORCA optimizing a CTE view.
+--
+-- This crashed at one point in retail build due to preprocessor creating a
+-- duplicate CTE anchor. That led ORCA to construct a bad plan where
+-- CTEConsumer project list contained an invalid scalar subplan and caused a
+-- SIGSEGV during DXL to PlStmt translation.
+--
+create table a_table(a smallint);
+create view cte_view as
+ with t1 as (select a from a_table)
+ select t1.a from t1
+ where (t1.a = (select t1.a from t1));
+-- Only by tampering with pg_stats directly I was able to guide ORCA cost model
+-- to pick a plan that would crash before this fix
+set allow_system_table_mods=true;
+update pg_class set relpages = 1::int, reltuples = 12.0::real where relname = 'a_table';
+INFO: GPORCA failed to produce a plan, falling back to Postgres-based planner
+DETAIL: Falling back to Postgres-based planner because GPORCA does not support the following feature: Queries on coordinator-only tables
+reset allow_system_table_mods;
+explain select * from a_table join cte_view on a_table.a = (select a from cte_view) where cte_view.a = 2024;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..2261454580.07 rows=1920 width=4)
+ -> Nested Loop (cost=0.00..2261454580.04 rows=640 width=4)
+ Join Filter: true
+ -> Result (cost=0.00..2206727.73 rows=134 width=2)
+ Filter: (a_table_1.a = ((SubPlan 1)))
+ -> Seq Scan on a_table a_table_1 (cost=0.00..2206727.70 rows=334 width=4)
+ SubPlan 1
+ -> Materialize (cost=0.00..1293.00 rows=12 width=2)
+ -> Broadcast Motion 3:3 (slice5; segments: 3) (cost=0.00..1293.00 rows=12 width=2)
+ -> Sequence (cost=0.00..1293.00 rows=4 width=2)
+ -> Shared Scan (share slice:id 5:1) (cost=0.00..431.00 rows=4 width=1)
+ -> Seq Scan on a_table a_table_2 (cost=0.00..431.00 rows=4 width=2)
+ -> Hash Join (cost=0.00..862.00 rows=4 width=2)
+ Hash Cond: (share1_ref3.a = share1_ref2.a)
+ -> Redistribute Motion 1:3 (slice6) (cost=0.00..431.00 rows=1 width=2)
+ Hash Key: share1_ref3.a
+ -> Assert (cost=0.00..431.00 rows=1 width=2)
+ Assert Cond: ((row_number() OVER (?)) = 1)
+ -> WindowAgg (cost=0.00..431.00 rows=12 width=10)
+ -> Gather Motion 3:1 (slice7; segments: 3) (cost=0.00..431.00 rows=12 width=2)
+ -> Shared Scan (share slice:id 7:1) (cost=0.00..431.00 rows=4 width=2)
+ -> Hash (cost=431.00..431.00 rows=4 width=2)
+ -> Shared Scan (share slice:id 5:1) (cost=0.00..431.00 rows=4 width=2)
+ -> Materialize (cost=0.00..1293.00 rows=5 width=2)
+ -> Broadcast Motion 3:3 (slice2; segments: 3) (cost=0.00..1293.00 rows=5 width=2)
+ -> Sequence (cost=0.00..1293.00 rows=2 width=2)
+ -> Shared Scan (share slice:id 2:0) (cost=0.00..431.00 rows=4 width=1)
+ -> Seq Scan on a_table (cost=0.00..431.00 rows=4 width=2)
+ -> Hash Join (cost=0.00..862.00 rows=2 width=2)
+ Hash Cond: (share0_ref3.a = share0_ref2.a)
+ -> Redistribute Motion 1:3 (slice3) (cost=0.00..431.00 rows=1 width=2)
+ Hash Key: share0_ref3.a
+ -> Assert (cost=0.00..431.00 rows=1 width=2)
+ Assert Cond: ((row_number() OVER (?)) = 1)
+ -> WindowAgg (cost=0.00..431.00 rows=12 width=10)
+ -> Gather Motion 3:1 (slice4; segments: 3) (cost=0.00..431.00 rows=12 width=2)
+ -> Shared Scan (share slice:id 4:0) (cost=0.00..431.00 rows=4 width=2)
+ -> Hash (cost=431.00..431.00 rows=2 width=2)
+ -> Result (cost=0.00..431.00 rows=2 width=2)
+ Filter: (share0_ref2.a = 2024)
+ -> Shared Scan (share slice:id 2:0) (cost=0.00..431.00 rows=4 width=2)
+ Optimizer: GPORCA
+(42 rows)
+
+reset optimizer_trace_fallback;
diff --git a/src/test/regress/sql/bfv_cte.sql b/src/test/regress/sql/bfv_cte.sql
index 537579784f..d1352edd08 100644
--- a/src/test/regress/sql/bfv_cte.sql
+++ b/src/test/regress/sql/bfv_cte.sql
@@ -1,6 +1,7 @@
--
-- Test queries mixes window functions with aggregate functions or grouping.
--
+set optimizer_trace_fallback=on;
DROP TABLE IF EXISTS test_group_window;
CREATE TABLE test_group_window(c1 int, c2 int);
@@ -417,3 +418,27 @@ end as rep_cte_a
from t1_cte join t2 on t1_cte.b = t2.b;
drop table t1, t2, rep;
+--
+-- Test for a bug in ORCA optimizing a CTE view.
+--
+-- This crashed at one point in retail build due to preprocessor creating a
+-- duplicate CTE anchor. That led ORCA to construct a bad plan where
+-- CTEConsumer project list contained an invalid scalar subplan and caused a
+-- SIGSEGV during DXL to PlStmt translation.
+--
+create table a_table(a smallint);
+
+create view cte_view as
+ with t1 as (select a from a_table)
+ select t1.a from t1
+ where (t1.a = (select t1.a from t1));
+
+-- Only by tampering with pg_stats directly I was able to guide ORCA cost model
+-- to pick a plan that would crash before this fix
+set allow_system_table_mods=true;
+update pg_class set relpages = 1::int, reltuples = 12.0::real where relname = 'a_table';
+reset allow_system_table_mods;
+
+explain select * from a_table join cte_view on a_table.a = (select a from cte_view) where cte_view.a = 2024;
+
+reset optimizer_trace_fallback;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 03/30: [ORCA] Avoid extra motion from multiple self LOJ/ROJ
Posted by ma...@apache.org.
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 cb4ccfd1a5db1cd9d691d328f6feffcf7ed904ed
Author: David Kimura <dk...@vmware.com>
AuthorDate: Tue Dec 19 22:28:18 2023 +0000
[ORCA] Avoid extra motion from multiple self LOJ/ROJ
The distribution spec derived from an inner-join is the combined child
distribution specs when both sides are hashed on subsets of the hash
join keys. That allows the derived spec to be seen as distributed by the
outer or (equivalently) the inner.
Left-outer-join (LOJ) and right-outer-join (ROJ) cannot perform that
optimization because there may be non-colocated NULLs in the result set.
That means that the result set no longer satisfies the child
distribution spec. However, self-join is a special case, if the join
condition is symmetrical (e.g. a=a), because the NULLs end up
collocated.
This commit allows the derived distribution spec from self-join to
combine the child distribution specs if the join keys are symmetrical.
As a result, ORCA is able to avoid unnecessary redistribute motions on
multi-way self-joins with symmetric join conditions.
Following demostrates that scenario:
CREATE TABLE o1 (a1 int, b1 int) DISTRIBUTED BY (a1);
EXPLAIN (COSTS OFF)
SELECT * FROM (SELECT DISTINCT a1 FROM o1) t1
LEFT OUTER JOIN o1 t2 ON t1.a1 = t2.a1
LEFT OUTER JOIN o1 t3 ON t2.a1 = t3.a1;
In this case, redistributes beneath the join is not required because the
joined data is already colocated per-segment.
---
.../gporca/libgpopt/include/gpopt/base/CUtils.h | 3 +
.../include/gpopt/operators/CPhysicalHashJoin.h | 12 ++
.../gpopt/operators/CPhysicalLeftOuterHashJoin.h | 6 -
.../gpopt/operators/CPhysicalRightOuterHashJoin.h | 8 +
src/backend/gporca/libgpopt/src/base/CUtils.cpp | 29 +++
.../libgpopt/src/operators/CPhysicalHashJoin.cpp | 214 +++++++++++++++++++++
.../src/operators/CPhysicalLeftOuterHashJoin.cpp | 101 +---------
.../src/operators/CPhysicalRightOuterHashJoin.cpp | 8 +
src/test/regress/expected/bfv_joins.out | 177 +++++++++++++++++
src/test/regress/expected/bfv_joins_optimizer.out | 185 +++++++++++++++++-
src/test/regress/sql/bfv_joins.sql | 54 ++++++
11 files changed, 690 insertions(+), 107 deletions(-)
diff --git a/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h b/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h
index a179544052..b209fcc4fb 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/base/CUtils.h
@@ -1021,6 +1021,9 @@ public:
static BOOL FScalarConstOrBinaryCoercible(CExpression *pexpr);
static BOOL FScalarIdentNullTest(CExpression *pexpr);
+
+ static CTableDescriptorHashSet *RemoveDuplicateMdids(
+ CMemoryPool *mp, CTableDescriptorHashSet *tabdescs);
}; // class CUtils
// hash set from expressions
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalHashJoin.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalHashJoin.h
index 50b0b1abd1..fe86fbd12c 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalHashJoin.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalHashJoin.h
@@ -55,6 +55,15 @@ private:
CDistributionSpec *PdsMatch(CMemoryPool *mp, CDistributionSpec *pds,
ULONG ulSourceChildIndex) const;
+ // helper for deriving hash join distribution from hashed children
+ CDistributionSpec *PdsDeriveFromHashedChildren(
+ CMemoryPool *mp, CExpressionHandle &exprhdl,
+ CDistributionSpec *pdsOuter, CDistributionSpec *pdsInner) const;
+
+ BOOL FSelfJoinWithMatchingJoinKeys(CMemoryPool *mp,
+ CExpressionHandle &exprhdl) const;
+
+
protected:
// compute required hashed distribution from the n-th child
CDistributionSpecHashed *PdshashedRequired(CMemoryPool *mp,
@@ -127,6 +136,9 @@ protected:
CPartitionPropagationSpec *PppsDeriveForJoins(
CMemoryPool *mp, CExpressionHandle &exprhdl) const;
+ CDistributionSpec *PdsDeriveForOuterJoin(CMemoryPool *mp,
+ CExpressionHandle &exprhdl) const;
+
public:
CPhysicalHashJoin(const CPhysicalHashJoin &) = delete;
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalLeftOuterHashJoin.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalLeftOuterHashJoin.h
index 41f7635fee..675021b8ad 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalLeftOuterHashJoin.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalLeftOuterHashJoin.h
@@ -27,12 +27,6 @@ namespace gpopt
//---------------------------------------------------------------------------
class CPhysicalLeftOuterHashJoin : public CPhysicalHashJoin
{
-private:
- // helper for deriving hash join distribution from hashed children
- CDistributionSpec *PdsDeriveFromHashedChildren(
- CMemoryPool *mp, CDistributionSpec *pdsOuter,
- CDistributionSpec *pdsInner) const;
-
public:
CPhysicalLeftOuterHashJoin(const CPhysicalLeftOuterHashJoin &) = delete;
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalRightOuterHashJoin.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalRightOuterHashJoin.h
index 7086fec8a8..bf8df832c0 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalRightOuterHashJoin.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CPhysicalRightOuterHashJoin.h
@@ -28,6 +28,11 @@ namespace gpopt
class CPhysicalRightOuterHashJoin : public CPhysicalHashJoin
{
private:
+ // helper for deriving hash join distribution from hashed children
+ CDistributionSpec *PdsDeriveFromHashedChildren(
+ CMemoryPool *mp, CDistributionSpec *pdsOuter,
+ CDistributionSpec *pdsInner) const;
+
protected:
// create optimization requests
void CreateOptRequests(CMemoryPool *mp) override;
@@ -45,6 +50,9 @@ public:
// dtor
~CPhysicalRightOuterHashJoin() override;
+ CDistributionSpec *PdsDerive(CMemoryPool *mp,
+ CExpressionHandle &exprhdl) const override;
+
// ident accessors
EOperatorId
Eopid() const override
diff --git a/src/backend/gporca/libgpopt/src/base/CUtils.cpp b/src/backend/gporca/libgpopt/src/base/CUtils.cpp
index 0ce367eb43..056e081f5c 100644
--- a/src/backend/gporca/libgpopt/src/base/CUtils.cpp
+++ b/src/backend/gporca/libgpopt/src/base/CUtils.cpp
@@ -5034,4 +5034,33 @@ CUtils::AddExprs(CExpressionArrays *results_exprs,
}
GPOS_ASSERT(results_exprs->Size() >= input_exprs->Size());
}
+
+
+// Given a table desriptor set, return a new table descriptor set without
+// duplicate mdids. This can happen if there is more than one table desriptor
+// for the same table, but using different alias names.
+CTableDescriptorHashSet *
+CUtils::RemoveDuplicateMdids(CMemoryPool *mp, CTableDescriptorHashSet *tabdescs)
+{
+ GPOS_ASSERT(nullptr != tabdescs);
+ CTableDescriptorHashSet *result = GPOS_NEW(mp) CTableDescriptorHashSet(mp);
+
+ MdidHashSet *mdids = GPOS_NEW(mp) MdidHashSet(mp);
+ CTableDescriptorHashSetIter hsiter(tabdescs);
+ while (hsiter.Advance())
+ {
+ CTableDescriptor *tabdesc =
+ const_cast<CTableDescriptor *>(hsiter.Get());
+ if (mdids->Insert(tabdesc->MDId()))
+ {
+ tabdesc->MDId()->AddRef();
+ if (result->Insert(tabdesc))
+ {
+ tabdesc->AddRef();
+ }
+ }
+ }
+ mdids->Release();
+ return result;
+}
// EOF
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalHashJoin.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalHashJoin.cpp
index 781ec2c0ec..c398cd95f3 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalHashJoin.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalHashJoin.cpp
@@ -14,6 +14,7 @@
#include "gpos/base.h"
#include "gpopt/base/CCastUtils.h"
+#include "gpopt/base/CColRefSetIter.h"
#include "gpopt/base/CDistributionSpecHashed.h"
#include "gpopt/base/CDistributionSpecNonReplicated.h"
#include "gpopt/base/CDistributionSpecNonSingleton.h"
@@ -314,6 +315,219 @@ CPhysicalHashJoin::PdsMatch(CMemoryPool *mp, CDistributionSpec *pds,
}
}
+//---------------------------------------------------------------------------
+// @function:
+// FIdenticalExpression
+//
+// @doc:
+// Check whether the expressions match based on column name, instead of
+// column identifier. This is to accommodate the case of self-joins where
+// column names match, but the column identifier may not.
+//---------------------------------------------------------------------------
+static BOOL
+FIdenticalExpression(CExpression *left, CExpression *right)
+{
+ if (left->Pop()->Eopid() == COperator::EopScalarIdent &&
+ right->Pop()->Eopid() == COperator::EopScalarIdent)
+ {
+ // skip colid check. just make sure that names are same.
+ return CWStringConst::Equals(
+ CScalarIdent::PopConvert(left->Pop())->Pcr()->Name().Pstr(),
+ CScalarIdent::PopConvert(right->Pop())->Pcr()->Name().Pstr());
+ }
+ else if (!left->Pop()->Matches(right->Pop()) ||
+ left->Arity() != right->Arity())
+ {
+ return false;
+ }
+ else
+ {
+ for (ULONG ul = 0; ul < left->Arity(); ul++)
+ {
+ if (!FIdenticalExpression((*left)[ul], (*right)[ul]))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// FIdenticalExpressionArrays
+//
+// @doc:
+// Check whether the expressions in input arrays match, *not* including
+// colid.
+//---------------------------------------------------------------------------
+static BOOL
+FIdenticalExpressionArrays(const CExpressionArray *outer,
+ const CExpressionArray *inner)
+{
+ GPOS_ASSERT(outer->Size() == inner->Size());
+
+ for (ULONG ul = 0; ul < outer->Size(); ul++)
+ {
+ if (!FIdenticalExpression((*outer)[ul], (*inner)[ul]))
+ {
+ return false;
+ }
+ }
+ return true;
+}
+
+BOOL
+CPhysicalHashJoin::FSelfJoinWithMatchingJoinKeys(
+ CMemoryPool *mp, CExpressionHandle &exprhdl) const
+{
+ // There may be duplicate mdids because the hash key is unique on a
+ // combination of mdid and alias. Here we do not care about duplicate
+ // aliases because joining the same table with different alias is still a
+ // self-join.
+ CTableDescriptorHashSet *outertabs = CUtils::RemoveDuplicateMdids(
+ mp, exprhdl.DeriveTableDescriptor(0 /*child_index*/));
+ CTableDescriptorHashSet *innertabs = CUtils::RemoveDuplicateMdids(
+ mp, exprhdl.DeriveTableDescriptor(1 /*child_index*/));
+
+ BOOL result = false;
+
+ // Check that this is a self join. Size() of 1 means that there is 1 unique
+ // table on each side of the join. Check whether it is the same table.
+ if (outertabs->Size() == 1 && innertabs->Size() == 1 &&
+ outertabs->First()->MDId()->Equals(innertabs->First()->MDId()))
+ {
+ // Check that the join keys are identical
+ if (FIdenticalExpressionArrays(PdrgpexprInnerKeys(),
+ PdrgpexprOuterKeys()))
+ {
+ result = true;
+ }
+ }
+ outertabs->Release();
+ innertabs->Release();
+
+ return result;
+}
+
+
+//---------------------------------------------------------------------------
+// @function:
+// CPhysicalHashJoin::PdsDeriveFromHashedChildren
+//
+// @doc:
+// Derive hash join distribution from hashed children;
+// return NULL if derivation failed
+//
+//---------------------------------------------------------------------------
+CDistributionSpec *
+CPhysicalHashJoin::PdsDeriveFromHashedChildren(
+ CMemoryPool *mp, CExpressionHandle &exprhdl, CDistributionSpec *pdsOuter,
+ CDistributionSpec *pdsInner) const
+{
+ GPOS_ASSERT(nullptr != pdsOuter);
+ GPOS_ASSERT(nullptr != pdsInner);
+
+ CDistributionSpecHashed *pdshashedOuter =
+ CDistributionSpecHashed::PdsConvert(pdsOuter);
+ CDistributionSpecHashed *pdshashedInner =
+ CDistributionSpecHashed::PdsConvert(pdsInner);
+
+ if (FSelfJoinWithMatchingJoinKeys(mp, exprhdl))
+ {
+ // A self join on distributed spec columns will preserve the colocated
+ // nulls.
+ CDistributionSpecHashed *combined_hashed_spec =
+ pdshashedOuter->Combine(mp, pdshashedInner);
+ return combined_hashed_spec;
+ }
+
+ if (pdshashedOuter->IsCoveredBy(PdrgpexprOuterKeys()) &&
+ pdshashedInner->IsCoveredBy(PdrgpexprInnerKeys()))
+ {
+ // if both sides are hashed on subsets of hash join keys, join's output can be
+ // seen as distributed on outer spec or (equivalently) on inner spec,
+ // so create a new spec and mark outer and inner as equivalent
+
+ CDistributionSpecHashed *pdshashedInnerCopy =
+ pdshashedInner->Copy(mp, false);
+ CDistributionSpecHashed *combined_hashed_spec =
+ pdshashedOuter->Combine(mp, pdshashedInnerCopy);
+ pdshashedInnerCopy->Release();
+ return combined_hashed_spec;
+ }
+
+ return nullptr;
+}
+
+CDistributionSpec *
+CPhysicalHashJoin::PdsDeriveForOuterJoin(CMemoryPool *mp,
+ CExpressionHandle &exprhdl) const
+{
+ GPOS_ASSERT(EopPhysicalLeftOuterHashJoin == Eopid() ||
+ EopPhysicalRightOuterHashJoin == Eopid());
+
+ CDistributionSpec *pdsOuter = exprhdl.Pdpplan(0 /*child_index*/)->Pds();
+ CDistributionSpec *pdsInner = exprhdl.Pdpplan(1 /*child_index*/)->Pds();
+
+ // We must use the non-nullable side for the distribution spec for outer joins.
+ // For right join, the hash side is the non-nullable side, so we swap the inner/outer
+ // distribution specs for the logic below
+ if (exprhdl.Pop()->Eopid() == EopPhysicalRightOuterHashJoin)
+ {
+ pdsOuter = exprhdl.Pdpplan(1 /*child_index*/)->Pds();
+ pdsInner = exprhdl.Pdpplan(0 /*child_index*/)->Pds();
+ }
+
+ if (CDistributionSpec::EdtHashed == pdsOuter->Edt() &&
+ CDistributionSpec::EdtHashed == pdsInner->Edt())
+ {
+ CDistributionSpec *pdsDerived =
+ PdsDeriveFromHashedChildren(mp, exprhdl, pdsOuter, pdsInner);
+ if (nullptr != pdsDerived)
+ {
+ return pdsDerived;
+ }
+ }
+
+ CDistributionSpec *pds;
+ if (CDistributionSpec::EdtStrictReplicated == pdsOuter->Edt() ||
+ CDistributionSpec::EdtUniversal == pdsOuter->Edt())
+ {
+ // if outer is replicated/universal, return inner distribution
+ pds = pdsInner;
+ }
+ else
+ {
+ // otherwise, return outer distribution
+ pds = pdsOuter;
+ }
+
+ if (CDistributionSpec::EdtHashed == pds->Edt())
+ {
+ CDistributionSpecHashed *pdsHashed =
+ CDistributionSpecHashed::PdsConvert(pds);
+
+ // Clean up any incomplete distribution specs since they can no longer be completed above
+ // Note that, since this is done at the lowest join, no relevant equivalent specs are lost.
+ if (!pdsHashed->HasCompleteEquivSpec(mp))
+ {
+ CExpressionArray *pdrgpexpr = pdsHashed->Pdrgpexpr();
+ IMdIdArray *opfamilies = pdsHashed->Opfamilies();
+
+ if (nullptr != opfamilies)
+ {
+ opfamilies->AddRef();
+ }
+ pdrgpexpr->AddRef();
+ return GPOS_NEW(mp) CDistributionSpecHashed(
+ pdrgpexpr, pdsHashed->FNullsColocated(), opfamilies);
+ }
+ }
+
+ pds->AddRef();
+ return pds;
+}
//---------------------------------------------------------------------------
// @function:
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalLeftOuterHashJoin.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalLeftOuterHashJoin.cpp
index 897639e664..53ec77f9a5 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalLeftOuterHashJoin.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalLeftOuterHashJoin.cpp
@@ -49,46 +49,6 @@ CPhysicalLeftOuterHashJoin::CPhysicalLeftOuterHashJoin(
//---------------------------------------------------------------------------
CPhysicalLeftOuterHashJoin::~CPhysicalLeftOuterHashJoin() = default;
-//---------------------------------------------------------------------------
-// @function:
-// CPhysicalInnerHashJoin::PdsDeriveFromHashedChildren
-//
-// @doc:
-// Derive hash join distribution from hashed children;
-// return NULL if derivation failed
-//
-//---------------------------------------------------------------------------
-CDistributionSpec *
-CPhysicalLeftOuterHashJoin::PdsDeriveFromHashedChildren(
- CMemoryPool *mp, CDistributionSpec *pdsOuter,
- CDistributionSpec *pdsInner) const
-{
- GPOS_ASSERT(nullptr != pdsOuter);
- GPOS_ASSERT(nullptr != pdsInner);
-
- CDistributionSpecHashed *pdshashedOuter =
- CDistributionSpecHashed::PdsConvert(pdsOuter);
- CDistributionSpecHashed *pdshashedInner =
- CDistributionSpecHashed::PdsConvert(pdsInner);
-
- if (pdshashedOuter->IsCoveredBy(PdrgpexprOuterKeys()) &&
- pdshashedInner->IsCoveredBy(PdrgpexprInnerKeys()))
- {
- // if both sides are hashed on subsets of hash join keys, join's output can be
- // seen as distributed on outer spec or (equivalently) on inner spec,
- // so create a new spec and mark outer and inner as equivalent
-
- CDistributionSpecHashed *pdshashedInnerCopy =
- pdshashedInner->Copy(mp, false);
- CDistributionSpecHashed *combined_hashed_spec =
- pdshashedOuter->Combine(mp, pdshashedInnerCopy);
- pdshashedInnerCopy->Release();
- return combined_hashed_spec;
- }
-
- return nullptr;
-}
-
//---------------------------------------------------------------------------
// @function:
// CPhysicalJoin::PdsDerive
@@ -101,65 +61,6 @@ CDistributionSpec *
CPhysicalLeftOuterHashJoin::PdsDerive(CMemoryPool *mp,
CExpressionHandle &exprhdl) const
{
- CDistributionSpec *pdsOuter = exprhdl.Pdpplan(0 /*child_index*/)->Pds();
- CDistributionSpec *pdsInner = exprhdl.Pdpplan(1 /*child_index*/)->Pds();
-
- // We must use the non-nullable side for the distribution spec for outer joins.
- // For right join, the hash side is the non-nullable side, so we swap the inner/outer
- // distribution specs for the logic below
- if (exprhdl.Pop()->Eopid() == EopPhysicalRightOuterHashJoin)
- {
- pdsOuter = exprhdl.Pdpplan(1 /*child_index*/)->Pds();
- pdsInner = exprhdl.Pdpplan(0 /*child_index*/)->Pds();
- }
-
- if (CDistributionSpec::EdtHashed == pdsOuter->Edt() &&
- CDistributionSpec::EdtHashed == pdsInner->Edt())
- {
- CDistributionSpec *pdsDerived =
- PdsDeriveFromHashedChildren(mp, pdsOuter, pdsInner);
- if (nullptr != pdsDerived)
- {
- return pdsDerived;
- }
- }
-
- CDistributionSpec *pds;
- if (CDistributionSpec::EdtStrictReplicated == pdsOuter->Edt() ||
- CDistributionSpec::EdtUniversal == pdsOuter->Edt())
- {
- // if outer is replicated/universal, return inner distribution
- pds = pdsInner;
- }
- else
- {
- // otherwise, return outer distribution
- pds = pdsOuter;
- }
-
- if (CDistributionSpec::EdtHashed == pds->Edt())
- {
- CDistributionSpecHashed *pdsHashed =
- CDistributionSpecHashed::PdsConvert(pds);
-
- // Clean up any incomplete distribution specs since they can no longer be completed above
- // Note that, since this is done at the lowest join, no relevant equivalent specs are lost.
- if (!pdsHashed->HasCompleteEquivSpec(mp))
- {
- CExpressionArray *pdrgpexpr = pdsHashed->Pdrgpexpr();
- IMdIdArray *opfamilies = pdsHashed->Opfamilies();
-
- if (nullptr != opfamilies)
- {
- opfamilies->AddRef();
- }
- pdrgpexpr->AddRef();
- return GPOS_NEW(mp) CDistributionSpecHashed(
- pdrgpexpr, pdsHashed->FNullsColocated(), opfamilies);
- }
- }
-
- pds->AddRef();
- return pds;
+ return PdsDeriveForOuterJoin(mp, exprhdl);
}
// EOF
diff --git a/src/backend/gporca/libgpopt/src/operators/CPhysicalRightOuterHashJoin.cpp b/src/backend/gporca/libgpopt/src/operators/CPhysicalRightOuterHashJoin.cpp
index c10333b417..4c49385ff5 100644
--- a/src/backend/gporca/libgpopt/src/operators/CPhysicalRightOuterHashJoin.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CPhysicalRightOuterHashJoin.cpp
@@ -52,6 +52,14 @@ CPhysicalRightOuterHashJoin::CPhysicalRightOuterHashJoin(
//---------------------------------------------------------------------------
CPhysicalRightOuterHashJoin::~CPhysicalRightOuterHashJoin() = default;
+CDistributionSpec *
+CPhysicalRightOuterHashJoin::PdsDerive(CMemoryPool *mp,
+ CExpressionHandle &exprhdl) const
+{
+ return PdsDeriveForOuterJoin(mp, exprhdl);
+}
+
+
//---------------------------------------------------------------------------
// @function:
// CPhysicalRightOuterHashJoin::PdsRequired
diff --git a/src/test/regress/expected/bfv_joins.out b/src/test/regress/expected/bfv_joins.out
index 52fdb87626..61d6dafa9c 100644
--- a/src/test/regress/expected/bfv_joins.out
+++ b/src/test/regress/expected/bfv_joins.out
@@ -3826,6 +3826,183 @@ explain select * from o1 left join o2 on a1 = a2 left join o3 on a2 is not disti
Optimizer: Postgres query optimizer
(18 rows)
+-- Test hashed distribution spec derived from a self join
+truncate o1;
+truncate o2;
+insert into o1 select i, i from generate_series(1,9) i;
+insert into o1 values (NULL, NULL);
+insert into o2 select i, NULL from generate_series(11,100) i;
+insert into o2 values (NULL, NULL);
+analyze o1;
+analyze o2;
+-- Self join maintains the distribution keys from both children (i.e. the join
+-- result produces a combine hash distribution spec)
+--
+-- Expect no redistribute under the joins
+explain select t2.b1 from (select distinct a1 from o1) t1
+left outer join (select a1, b1 from o1) t2 on t1.a1 = t2.a1
+left outer join o1 t3 on t2.a1 = t3.a1
+left outer join o1 t4 on t2.a1 = t4.a1;
+ QUERY PLAN
+-----------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=3.29..4.57 rows=9 width=4)
+ -> Hash Right Join (cost=3.29..4.45 rows=3 width=4)
+ Hash Cond: (o1.a1 = o1_1.a1)
+ -> Hash Left Join (cost=2.15..3.27 rows=3 width=8)
+ Hash Cond: (o1.a1 = t4.a1)
+ -> Hash Left Join (cost=1.08..2.15 rows=3 width=8)
+ Hash Cond: (o1.a1 = t3.a1)
+ -> Seq Scan on o1 (cost=0.00..1.03 rows=3 width=8)
+ -> Hash (cost=1.03..1.03 rows=3 width=4)
+ -> Seq Scan on o1 t3 (cost=0.00..1.03 rows=3 width=4)
+ -> Hash (cost=1.03..1.03 rows=3 width=4)
+ -> Seq Scan on o1 t4 (cost=0.00..1.03 rows=3 width=4)
+ -> Hash (cost=1.10..1.10 rows=3 width=4)
+ -> HashAggregate (cost=1.04..1.07 rows=3 width=4)
+ Group Key: o1_1.a1
+ -> Seq Scan on o1 o1_1 (cost=0.00..1.03 rows=3 width=4)
+ Optimizer: Postgres-based planner
+(17 rows)
+
+select t2.b1 from (select distinct a1 from o1) t1
+left outer join (select a1, b1 from o1) t2 on t1.a1 = t2.a1
+left outer join o1 t3 on t2.a1 = t3.a1
+left outer join o1 t4 on t2.a1 = t4.a1;
+ b1
+----
+ 2
+ 3
+ 4
+ 7
+ 8
+
+ 1
+ 5
+ 6
+ 9
+(10 rows)
+
+-- Self join maintains the distribution keys from both children (i.e. the join
+-- result produces a combine hash distribution spec)
+--
+-- Expect no redistribute under the joins
+explain (costs off) select t2.b1 from o1 t3
+right outer join (select a1, b1 from o1) t2 on t2.a1 = t3.a1
+right outer join o1 t4 on t2.a1 = t4.a1
+right outer join (select distinct a1 from o1) t1 on t1.a1 = t2.a1;
+ QUERY PLAN
+-------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Right Join
+ Hash Cond: (o1.a1 = o1_1.a1)
+ -> Hash Left Join
+ Hash Cond: (o1.a1 = t3.a1)
+ -> Hash Join
+ Hash Cond: (o1.a1 = t4.a1)
+ -> Seq Scan on o1
+ -> Hash
+ -> Seq Scan on o1 t4
+ -> Hash
+ -> Seq Scan on o1 t3
+ -> Hash
+ -> HashAggregate
+ Group Key: o1_1.a1
+ -> Seq Scan on o1 o1_1
+ Optimizer: Postgres-based planner
+(17 rows)
+
+select t2.b1 from o1 t3
+right outer join (select a1, b1 from o1) t2 on t2.a1 = t3.a1
+right outer join o1 t4 on t2.a1 = t4.a1
+right outer join (select distinct a1 from o1) t1 on t1.a1 = t2.a1;
+ b1
+----
+ 1
+ 5
+ 6
+ 9
+ 2
+ 3
+ 4
+ 7
+ 8
+
+(10 rows)
+
+-- Self join, but the projected distribution key value is changed
+--
+-- Expect redistribute under the joins
+explain select t2.b1 from (select distinct a1+1 as a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1;
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=1.22..2.41 rows=9 width=4)
+ -> Hash Right Join (cost=1.22..2.29 rows=3 width=4)
+ Hash Cond: (t2.a1 = ((o1.a1 + 1)))
+ -> Seq Scan on o1 t2 (cost=0.00..1.03 rows=3 width=8)
+ -> Hash (cost=1.18..1.18 rows=3 width=4)
+ -> Unique (cost=1.14..1.15 rows=3 width=4)
+ Group Key: ((o1.a1 + 1))
+ -> Sort (cost=1.14..1.15 rows=3 width=4)
+ Sort Key: ((o1.a1 + 1))
+ -> Redistribute Motion 3:3 (slice2; segments: 3) (cost=0.00..1.11 rows=3 width=4)
+ Hash Key: ((o1.a1 + 1))
+ -> Seq Scan on o1 (cost=0.00..1.04 rows=3 width=4)
+ Optimizer: Postgres-based planner
+(13 rows)
+
+select t2.b1 from (select distinct a1+1 as a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1;
+ b1
+----
+ 5
+ 6
+ 9
+
+ 2
+ 3
+ 4
+ 7
+ 8
+
+(10 rows)
+
+-- Self join, but the joined distribution key value is changed
+--
+-- Expect redistribute under the joins
+explain select t2.b1 from (select distinct a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1+1;
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=1.20..2.40 rows=9 width=4)
+ -> Hash Right Join (cost=1.20..2.28 rows=3 width=4)
+ Hash Cond: (t2.a1 = (o1.a1 + 1))
+ -> Seq Scan on o1 t2 (cost=0.00..1.03 rows=3 width=8)
+ -> Hash (cost=1.16..1.16 rows=3 width=4)
+ -> Redistribute Motion 3:3 (slice2; segments: 3) (cost=1.04..1.16 rows=3 width=4)
+ Hash Key: (o1.a1 + 1)
+ -> HashAggregate (cost=1.04..1.07 rows=3 width=4)
+ Group Key: o1.a1
+ -> Seq Scan on o1 (cost=0.00..1.03 rows=3 width=4)
+ Optimizer: Postgres-based planner
+(11 rows)
+
+select t2.b1 from (select distinct a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1+1;
+ b1
+----
+ 5
+ 6
+ 9
+
+ 2
+ 3
+ 4
+ 7
+ 8
+
+(10 rows)
+
-- Test case from community Github PR 13722
create table t_13722(id int, tt timestamp)
distributed by (id);
diff --git a/src/test/regress/expected/bfv_joins_optimizer.out b/src/test/regress/expected/bfv_joins_optimizer.out
index cc6f1632cd..cea4fb471e 100644
--- a/src/test/regress/expected/bfv_joins_optimizer.out
+++ b/src/test/regress/expected/bfv_joins_optimizer.out
@@ -3835,9 +3835,192 @@ explain select * from o1 left join o2 on a1 = a2 left join o3 on a2 is not disti
-> Hash (cost=431.00..431.00 rows=1 width=8)
-> Gather Motion 3:1 (slice3; segments: 3) (cost=0.00..431.00 rows=1 width=8)
-> Seq Scan on o3 (cost=0.00..431.00 rows=1 width=8)
- Optimizer: Pivotal Optimizer (GPORCA)
+ Optimizer: GPORCA
(13 rows)
+-- Test hashed distribution spec derived from a self join
+truncate o1;
+truncate o2;
+insert into o1 select i, i from generate_series(1,9) i;
+insert into o1 values (NULL, NULL);
+insert into o2 select i, NULL from generate_series(11,100) i;
+insert into o2 values (NULL, NULL);
+analyze o1;
+analyze o2;
+-- Self join maintains the distribution keys from both children (i.e. the join
+-- result produces a combine hash distribution spec)
+--
+-- Expect no redistribute under the joins
+explain select t2.b1 from (select distinct a1 from o1) t1
+left outer join (select a1, b1 from o1) t2 on t1.a1 = t2.a1
+left outer join o1 t3 on t2.a1 = t3.a1
+left outer join o1 t4 on t2.a1 = t4.a1;
+ QUERY PLAN
+---------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..1724.00 rows=13 width=4)
+ -> Hash Left Join (cost=0.00..1724.00 rows=5 width=4)
+ Hash Cond: (o1.a1 = o1_3.a1)
+ -> Hash Left Join (cost=0.00..1293.00 rows=4 width=8)
+ Hash Cond: (o1.a1 = o1_2.a1)
+ -> Hash Right Join (cost=0.00..862.00 rows=4 width=8)
+ Hash Cond: (o1.a1 = o1_1.a1)
+ -> Seq Scan on o1 (cost=0.00..431.00 rows=4 width=8)
+ -> Hash (cost=431.00..431.00 rows=4 width=4)
+ -> GroupAggregate (cost=0.00..431.00 rows=4 width=4)
+ Group Key: o1_1.a1
+ -> Sort (cost=0.00..431.00 rows=4 width=4)
+ Sort Key: o1_1.a1
+ -> Seq Scan on o1 o1_1 (cost=0.00..431.00 rows=4 width=4)
+ -> Hash (cost=431.00..431.00 rows=4 width=4)
+ -> Seq Scan on o1 o1_2 (cost=0.00..431.00 rows=4 width=4)
+ -> Hash (cost=431.00..431.00 rows=4 width=4)
+ -> Seq Scan on o1 o1_3 (cost=0.00..431.00 rows=4 width=4)
+ Optimizer: GPORCA
+(19 rows)
+
+select t2.b1 from (select distinct a1 from o1) t1
+left outer join (select a1, b1 from o1) t2 on t1.a1 = t2.a1
+left outer join o1 t3 on t2.a1 = t3.a1
+left outer join o1 t4 on t2.a1 = t4.a1;
+ b1
+----
+ 1
+ 5
+ 6
+ 9
+ 2
+ 3
+ 4
+ 7
+ 8
+
+(10 rows)
+
+-- Self join maintains the distribution keys from both children (i.e. the join
+-- result produces a combine hash distribution spec)
+--
+-- Expect no redistribute under the joins
+explain (costs off) select t2.b1 from o1 t3
+right outer join (select a1, b1 from o1) t2 on t2.a1 = t3.a1
+right outer join o1 t4 on t2.a1 = t4.a1
+right outer join (select distinct a1 from o1) t1 on t1.a1 = t2.a1;
+ QUERY PLAN
+---------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Hash Right Join
+ Hash Cond: (o1.a1 = o1_3.a1)
+ -> Hash Right Join
+ Hash Cond: (o1.a1 = o1_2.a1)
+ -> Hash Left Join
+ Hash Cond: (o1.a1 = o1_1.a1)
+ -> Seq Scan on o1
+ -> Hash
+ -> Seq Scan on o1 o1_1
+ -> Hash
+ -> Seq Scan on o1 o1_2
+ -> Hash
+ -> GroupAggregate
+ Group Key: o1_3.a1
+ -> Sort
+ Sort Key: o1_3.a1
+ -> Seq Scan on o1 o1_3
+ Optimizer: GPORCA
+(19 rows)
+
+select t2.b1 from o1 t3
+right outer join (select a1, b1 from o1) t2 on t2.a1 = t3.a1
+right outer join o1 t4 on t2.a1 = t4.a1
+right outer join (select distinct a1 from o1) t1 on t1.a1 = t2.a1;
+ b1
+----
+ 1
+ 5
+ 6
+ 9
+ 2
+ 3
+ 4
+ 7
+ 8
+
+(10 rows)
+
+-- Self join, but the projected distribution key value is changed
+--
+-- Expect redistribute under the joins
+explain select t2.b1 from (select distinct a1+1 as a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..862.00 rows=11 width=4)
+ -> Hash Right Join (cost=0.00..862.00 rows=4 width=4)
+ Hash Cond: (o1.a1 = ((o1_1.a1 + 1)))
+ -> Seq Scan on o1 (cost=0.00..431.00 rows=4 width=8)
+ -> Hash (cost=431.00..431.00 rows=4 width=4)
+ -> GroupAggregate (cost=0.00..431.00 rows=4 width=4)
+ Group Key: ((o1_1.a1 + 1))
+ -> Sort (cost=0.00..431.00 rows=4 width=4)
+ Sort Key: ((o1_1.a1 + 1))
+ -> Redistribute Motion 3:3 (slice2; segments: 3) (cost=0.00..431.00 rows=4 width=4)
+ Hash Key: ((o1_1.a1 + 1))
+ -> Seq Scan on o1 o1_1 (cost=0.00..431.00 rows=4 width=4)
+ Optimizer: GPORCA
+(13 rows)
+
+select t2.b1 from (select distinct a1+1 as a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1;
+ b1
+----
+ 2
+ 3
+ 4
+ 7
+ 8
+
+ 5
+ 6
+ 9
+
+(10 rows)
+
+-- Self join, but the joined distribution key value is changed
+--
+-- Expect redistribute under the joins
+explain select t2.b1 from (select distinct a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1+1;
+ QUERY PLAN
+------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..862.00 rows=14 width=4)
+ -> Hash Right Join (cost=0.00..862.00 rows=5 width=4)
+ Hash Cond: (o1.a1 = (o1_1.a1 + 1))
+ -> Seq Scan on o1 (cost=0.00..431.00 rows=4 width=8)
+ -> Hash (cost=431.00..431.00 rows=4 width=4)
+ -> Redistribute Motion 3:3 (slice2; segments: 3) (cost=0.00..431.00 rows=4 width=4)
+ Hash Key: (o1_1.a1 + 1)
+ -> GroupAggregate (cost=0.00..431.00 rows=4 width=4)
+ Group Key: o1_1.a1
+ -> Sort (cost=0.00..431.00 rows=4 width=4)
+ Sort Key: o1_1.a1
+ -> Seq Scan on o1 o1_1 (cost=0.00..431.00 rows=4 width=4)
+ Optimizer: GPORCA
+(13 rows)
+
+select t2.b1 from (select distinct a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1+1;
+ b1
+----
+ 2
+ 3
+ 4
+ 7
+ 8
+
+ 5
+ 6
+ 9
+
+(10 rows)
+
-- Test case from community Github PR 13722
create table t_13722(id int, tt timestamp)
distributed by (id);
diff --git a/src/test/regress/sql/bfv_joins.sql b/src/test/regress/sql/bfv_joins.sql
index 2440e8a6d4..edc39f58a7 100644
--- a/src/test/regress/sql/bfv_joins.sql
+++ b/src/test/regress/sql/bfv_joins.sql
@@ -434,6 +434,60 @@ explain select * from o1 left join o2 on a1 = a2 left join o3 on a2 is not disti
explain select * from o1 left join o2 on a1 = a2 left join o3 on a2 is not distinct from a3 and b2 is distinct from b3;
explain select * from o1 left join o2 on a1 = a2 left join o3 on a2 is not distinct from a3 and b2 = b3;
+-- Test hashed distribution spec derived from a self join
+truncate o1;
+truncate o2;
+
+insert into o1 select i, i from generate_series(1,9) i;
+insert into o1 values (NULL, NULL);
+insert into o2 select i, NULL from generate_series(11,100) i;
+insert into o2 values (NULL, NULL);
+
+analyze o1;
+analyze o2;
+
+-- Self join maintains the distribution keys from both children (i.e. the join
+-- result produces a combine hash distribution spec)
+--
+-- Expect no redistribute under the joins
+explain select t2.b1 from (select distinct a1 from o1) t1
+left outer join (select a1, b1 from o1) t2 on t1.a1 = t2.a1
+left outer join o1 t3 on t2.a1 = t3.a1
+left outer join o1 t4 on t2.a1 = t4.a1;
+select t2.b1 from (select distinct a1 from o1) t1
+left outer join (select a1, b1 from o1) t2 on t1.a1 = t2.a1
+left outer join o1 t3 on t2.a1 = t3.a1
+left outer join o1 t4 on t2.a1 = t4.a1;
+
+-- Self join maintains the distribution keys from both children (i.e. the join
+-- result produces a combine hash distribution spec)
+--
+-- Expect no redistribute under the joins
+explain (costs off) select t2.b1 from o1 t3
+right outer join (select a1, b1 from o1) t2 on t2.a1 = t3.a1
+right outer join o1 t4 on t2.a1 = t4.a1
+right outer join (select distinct a1 from o1) t1 on t1.a1 = t2.a1;
+select t2.b1 from o1 t3
+right outer join (select a1, b1 from o1) t2 on t2.a1 = t3.a1
+right outer join o1 t4 on t2.a1 = t4.a1
+right outer join (select distinct a1 from o1) t1 on t1.a1 = t2.a1;
+
+-- Self join, but the projected distribution key value is changed
+--
+-- Expect redistribute under the joins
+explain select t2.b1 from (select distinct a1+1 as a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1;
+select t2.b1 from (select distinct a1+1 as a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1;
+
+-- Self join, but the joined distribution key value is changed
+--
+-- Expect redistribute under the joins
+explain select t2.b1 from (select distinct a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1+1;
+select t2.b1 from (select distinct a1 from o1) t1
+left outer join o1 t2 on t2.a1 = t1.a1+1;
+
-- Test case from community Github PR 13722
create table t_13722(id int, tt timestamp)
distributed by (id);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 14/30: Derive statistics only for used columns in Orca's Union All operator (#16811)
Posted by ma...@apache.org.
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 e148dde531e95f214adfc5537c0fa2e71b1dcc95
Author: Pan Wang <15...@users.noreply.github.com>
AuthorDate: Sat Jan 20 02:56:44 2024 +0800
Derive statistics only for used columns in Orca's Union All operator (#16811)
Previously, ORCA derived statistics for all output columns in CLogicalSetOp.
For example, we would derive all stats columns in the following query:
```
create table t1(a int, b int, c int, d int) distributed by(a);
create table t2(a int, b int, c int, d int) distributed by(a);
select a from t1 union all select a from t2;
```
If we execute the union all SQL, ORCA will derive statistics for all of the columns a, b, c, and d. But this is useless work. If there are many columns in the table, and the type of them are varchar or other string-related type, it will waste a lot of time deriving unnecessary statistics. Now, we only derive stats for used columns, similarly to how we do it for other operators like joins.
Fixes https://github.com/greenplum-db/gpdb/issues/16771
Authored-by: tongshu <wa...@alibaba-inc.com>
---
.../minidump/Blocking-Spool-Parallel-Union-All.mdp | 14 +-
.../NoOpMotionUsesOnlyGroupOutputColumns.mdp | 12 +-
...rallelUnionAllWithNotEqualNumOfDistrColumns.mdp | 12 +-
...lUnionAllWithSingleNotRedistributableColumn.mdp | 12 +-
.../TwoHashedTables.mdp | 12 +-
.../gporca/data/dxl/minidump/CTE-PartTbl.mdp | 8 +-
.../data/dxl/minidump/CTEWithVolatileFunction.mdp | 10 +-
.../dxl/minidump/DML-UnionAll-With-OuterRef.mdp | 24 +-
.../minidump/DML-UnionAll-With-Universal-Child.mdp | 693 +++++++++++++++++----
.../DynamicIndexScan-Heterogenous-Union.mdp | 8 +-
.../Equivalence-class-project-over-LOJ.mdp | 12 +-
.../data/dxl/minidump/ExpandFullOuterJoin.mdp | 24 +-
.../data/dxl/minidump/ExpandFullOuterJoin2.mdp | 16 +-
.../data/dxl/minidump/FOJ-Condition-False.mdp | 10 +-
.../FullJoin-InnerNotOnDistributionColumn.mdp | 4 +-
.../dxl/minidump/FullJoin-OnDistributionColumn.mdp | 4 +-
.../data/dxl/minidump/FullJoin-Replicated.mdp | 4 +-
.../dxl/minidump/FullJoin-SwappedPredicates.mdp | 4 +-
.../dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp | 16 +-
.../data/dxl/minidump/IsNullUnionAllIsNotNull.mdp | 96 +--
.../gporca/data/dxl/minidump/JoinBelowUnionAll.mdp | 10 +-
.../LOJ-IndexApply-CoordinatorOnly-Table.mdp | 8 +-
.../LeftOuter2InnerUnionAllAntiSemiJoin.mdp | 30 +-
.../dxl/minidump/PartForeignDifferentServer.mdp | 8 +-
.../minidump/PartTbl-List-DPE-Int-Predicates.mdp | 12 +-
.../dxl/minidump/Remove-Distinct-From-Subquery.mdp | 14 +-
.../dxl/minidump/UnionAllCompatibleDataType.mdp | 12 +-
.../dxl/minidump/UnionAllWithTruncatedOutput.mdp | 8 +-
.../gporca/data/dxl/minidump/UnionWithCTE.mdp | 10 +-
.../include/gpopt/operators/CLogicalUnionAll.h | 7 +-
.../libgpopt/src/operators/CLogicalUnion.cpp | 8 +-
.../libgpopt/src/operators/CLogicalUnionAll.cpp | 87 ++-
.../parser/CParseHandlerStatsDerivedRelation.cpp | 3 -
src/test/regress/expected/gporca_optimizer.out | 57 +-
.../regress/expected/groupingsets_optimizer.out | 34 +-
35 files changed, 866 insertions(+), 437 deletions(-)
diff --git a/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp b/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp
index 5680e5de82..7c2948097e 100644
--- a/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Blocking-Spool-Parallel-Union-All.mdp
@@ -741,7 +741,7 @@
<dxl:Plan Id="0" SpaceSize="8">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1356745003.797162" Rows="3002438.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1356744856.482021" Rows="3002438.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -758,7 +758,7 @@
<dxl:SortingColumnList/>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1356744869.528135" Rows="3002438.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1356744722.212994" Rows="3002438.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -819,7 +819,7 @@
</dxl:BroadcastMotion>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324032.479522" Rows="3002438.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324032.335660" Rows="3002438.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="a">
@@ -829,7 +829,7 @@
<dxl:Filter/>
<dxl:Materialize Eager="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324032.479522" Rows="11.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324032.335660" Rows="11.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="a">
@@ -839,7 +839,7 @@
<dxl:Filter/>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324032.479508" Rows="11.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324032.335645" Rows="11.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="a">
@@ -855,7 +855,7 @@
</dxl:HashExprList>
<dxl:NestedLoopJoin JoinType="Left" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1324032.479508" Rows="11.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1324032.335645" Rows="11.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="a">
@@ -868,7 +868,7 @@
</dxl:JoinFilter>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/NoOpMotionUsesOnlyGroupOutputColumns.mdp b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/NoOpMotionUsesOnlyGroupOutputColumns.mdp
index 952dadc36e..ffa668762e 100644
--- a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/NoOpMotionUsesOnlyGroupOutputColumns.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/NoOpMotionUsesOnlyGroupOutputColumns.mdp
@@ -270,7 +270,7 @@ EXPLAIN SELECT b, a FROM foo UNION ALL SELECT b, a FROM foo INTERSECT ALL SELECT
<dxl:Plan Id="0" SpaceSize="0">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.001505" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.001486" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="b">
@@ -284,7 +284,7 @@ EXPLAIN SELECT b, a FROM foo UNION ALL SELECT b, a FROM foo INTERSECT ALL SELECT
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.001475" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.001457" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="b">
@@ -297,7 +297,7 @@ EXPLAIN SELECT b, a FROM foo UNION ALL SELECT b, a FROM foo INTERSECT ALL SELECT
<dxl:Filter/>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000036" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000012" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="b">
@@ -316,7 +316,7 @@ EXPLAIN SELECT b, a FROM foo UNION ALL SELECT b, a FROM foo INTERSECT ALL SELECT
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="b">
@@ -344,7 +344,7 @@ EXPLAIN SELECT b, a FROM foo UNION ALL SELECT b, a FROM foo INTERSECT ALL SELECT
</dxl:RedistributeMotion>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.001475" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.001457" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="b">
@@ -363,7 +363,7 @@ EXPLAIN SELECT b, a FROM foo UNION ALL SELECT b, a FROM foo INTERSECT ALL SELECT
</dxl:HashExprList>
<dxl:HashJoin JoinType="In">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.001475" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.001457" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="b">
diff --git a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithNotEqualNumOfDistrColumns.mdp b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithNotEqualNumOfDistrColumns.mdp
index b348e4d043..ad47b8b5f1 100644
--- a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithNotEqualNumOfDistrColumns.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithNotEqualNumOfDistrColumns.mdp
@@ -226,7 +226,7 @@ EXPLAIN SELECT a,b FROM foo UNION ALL SELECT c,d FROM bar;
<dxl:Plan Id="0" SpaceSize="0">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000066" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000042" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -240,7 +240,7 @@ EXPLAIN SELECT a,b FROM foo UNION ALL SELECT c,d FROM bar;
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000036" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000012" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -253,7 +253,7 @@ EXPLAIN SELECT a,b FROM foo UNION ALL SELECT c,d FROM bar;
<dxl:Filter/>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000036" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000012" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -272,7 +272,7 @@ EXPLAIN SELECT a,b FROM foo UNION ALL SELECT c,d FROM bar;
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -300,7 +300,7 @@ EXPLAIN SELECT a,b FROM foo UNION ALL SELECT c,d FROM bar;
</dxl:RedistributeMotion>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000036" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000012" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="c">
@@ -322,7 +322,7 @@ EXPLAIN SELECT a,b FROM foo UNION ALL SELECT c,d FROM bar;
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="c">
diff --git a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithSingleNotRedistributableColumn.mdp b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithSingleNotRedistributableColumn.mdp
index ff605d37cd..5a74210cfa 100644
--- a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithSingleNotRedistributableColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/ParallelUnionAllWithSingleNotRedistributableColumn.mdp
@@ -236,7 +236,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
<dxl:Plan Id="1" SpaceSize="2">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000121" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000072" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -253,7 +253,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000077" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000028" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -269,7 +269,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
<dxl:Filter/>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000077" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000028" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -294,7 +294,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000023" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000008" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -326,7 +326,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
</dxl:RedistributeMotion>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000077" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000028" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="c">
@@ -351,7 +351,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000023" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000008" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="c">
diff --git a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/TwoHashedTables.mdp b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/TwoHashedTables.mdp
index 4040381ec5..40ee4cea29 100644
--- a/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/TwoHashedTables.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CPhysicalParallelUnionAllTest/TwoHashedTables.mdp
@@ -215,7 +215,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
<dxl:Plan Id="0" SpaceSize="0">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000041" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000024" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="i">
@@ -226,7 +226,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000026" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000009" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="i">
@@ -236,7 +236,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
<dxl:Filter/>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000026" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000009" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="i">
@@ -252,7 +252,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000019" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000006" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="i">
@@ -276,7 +276,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
</dxl:RedistributeMotion>
<dxl:RedistributeMotion InputSegments="0,1,2" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000026" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000009" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="8" Alias="j">
@@ -292,7 +292,7 @@ EXPLAIN SELECT * FROM foo UNION ALL SELECT * FROM bar;
</dxl:HashExprList>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000019" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000006" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="8" Alias="j">
diff --git a/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp b/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp
index e2449256d3..851ed2dcf2 100644
--- a/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTE-PartTbl.mdp
@@ -465,7 +465,7 @@
<dxl:Plan Id="0" SpaceSize="1320">
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000374" Rows="2.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000350" Rows="2.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="22" Alias="a">
@@ -539,7 +539,7 @@
</dxl:CTEProducer>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000293" Rows="2.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000277" Rows="2.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="22" Alias="a">
@@ -552,7 +552,7 @@
<dxl:Filter/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000134" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000130" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="22" Alias="a">
@@ -613,7 +613,7 @@
</dxl:Result>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000134" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000130" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="23" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/CTEWithVolatileFunction.mdp b/src/backend/gporca/data/dxl/minidump/CTEWithVolatileFunction.mdp
index 2f35685ac7..66408bfcab 100644
--- a/src/backend/gporca/data/dxl/minidump/CTEWithVolatileFunction.mdp
+++ b/src/backend/gporca/data/dxl/minidump/CTEWithVolatileFunction.mdp
@@ -163,7 +163,7 @@
<dxl:Plan Id="0" SpaceSize="120">
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000399" Rows="2.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000397" Rows="2.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="4" Alias="sum">
@@ -208,7 +208,7 @@
</dxl:CTEProducer>
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000273" Rows="2.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000271" Rows="2.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="4" Alias="sum">
@@ -219,7 +219,7 @@
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000202" Rows="2.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000199" Rows="2.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="4" Alias="sum">
@@ -229,7 +229,7 @@
<dxl:Filter/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000148" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000145" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="4" Alias="sum">
@@ -240,7 +240,7 @@
<dxl:OneTimeFilter/>
<dxl:Aggregate AggregationStrategy="Sorted" StreamSafe="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000148" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000145" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:GroupingColumns>
<dxl:GroupingColumn ColId="2"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp
index 74a1ea8e25..7669d0935d 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-OuterRef.mdp
@@ -361,7 +361,7 @@
<dxl:Plan Id="0" SpaceSize="528">
<dxl:DMLInsert Columns="0" ActionCol="41" CtidCol="0" SegmentIdCol="0">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1808628108.398402" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1808628058.863672" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:DirectDispatchInfo/>
<dxl:ProjList>
@@ -383,7 +383,7 @@
</dxl:TableDescriptor>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1808628108.387985" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1808628058.853255" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -397,7 +397,7 @@
<dxl:OneTimeFilter/>
<dxl:NestedLoopJoin JoinType="In" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1808628108.387982" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1808628058.853252" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -433,32 +433,32 @@
</dxl:TableScan>
<dxl:Materialize Eager="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1765376.387083" Rows="3.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="1765376.338709" Rows="3.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
<dxl:BroadcastMotion InputSegments="0" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1765376.387082" Rows="3.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="1765376.338708" Rows="3.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
<dxl:SortingColumnList/>
<dxl:Limit>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1765376.387028" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="1765376.338654" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1765376.387027" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="1765376.338653" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
<dxl:OneTimeFilter/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1765376.387027" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="1765376.338653" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="8" Alias="a">
@@ -473,7 +473,7 @@
</dxl:ParamList>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000292" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000244" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="16" Alias="a">
@@ -546,7 +546,7 @@
</dxl:Result>
<dxl:Materialize Eager="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000075" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000028" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="25" Alias="b">
@@ -556,7 +556,7 @@
<dxl:Filter/>
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="0">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000071" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000024" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="25" Alias="b">
@@ -567,7 +567,7 @@
<dxl:SortingColumnList/>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000019" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000006" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="25" Alias="b">
diff --git a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp
index acfba432a6..753bd0ac94 100644
--- a/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DML-UnionAll-With-Universal-Child.mdp
@@ -7,6 +7,8 @@
create table x(a int);
create table y(b int);
+ insert into x select i from generate_series(1, 100)i;
+ analyze x;
explain insert into y select 1 union all select a from x limit 10;
]]>
</dxl:Comment>
@@ -21,56 +23,412 @@
<dxl:CostParam Name="NLJFactor" Value="1024.000000" LowerBound="1023.500000" UpperBound="1024.500000"/>
</dxl:CostParams>
</dxl:CostModelConfig>
- <dxl:Hint JoinArityForAssociativityCommutativity="18" ArrayExpansionThreshold="100" JoinOrderDynamicProgThreshold="10" BroadcastThreshold="10000000" EnforceConstraintsOnDML="false"/>
- <dxl:TraceFlags Value="102001,102002,102003,102074,102120,102144,103001,103014,103015,103022,103033,104003,104004,104005,105000,106000"/>
+ <dxl:Hint JoinArityForAssociativityCommutativity="18" ArrayExpansionThreshold="20" JoinOrderDynamicProgThreshold="10" BroadcastThreshold="100000" EnforceConstraintsOnDML="false" PushGroupByBelowSetopThreshold="10" XformBindThreshold="0" SkewFactor="0"/>
+ <dxl:TraceFlags Value="101013,102001,102002,102003,102043,102074,102120,102144,102162,102163,103001,103014,103022,103026,103027,103029,103033,103038,103040,104002,104003,104004,104005,106000"/>
</dxl:OptimizerConfig>
<dxl:Metadata SystemIds="0.GPDB">
- <dxl:Relation Mdid="6.49155.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
- <dxl:Columns>
- <dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- </dxl:Relation>
- <dxl:RelationStatistics Mdid="2.49152.1.0" Name="x" Rows="0.000000" EmptyRelation="true"/>
- <dxl:Relation Mdid="6.49152.1.0" Name="x" IsTemporary="false" Rows="0.000000" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
- <dxl:Columns>
- <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6">
- </dxl:Column>
- <dxl:Column Name="xmin" Attno="-3" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmin" Attno="-4" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="xmax" Attno="-5" Mdid="0.28.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="cmax" Attno="-6" Mdid="0.29.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="tableoid" Attno="-7" Mdid="0.26.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- <dxl:Column Name="gp_segment_id" Attno="-8" Mdid="0.23.1.0" Nullable="false" ColWidth="4">
- </dxl:Column>
- </dxl:Columns>
- <dxl:IndexInfoList/>
- <dxl:CheckConstraints/>
- </dxl:Relation>
- <dxl:Type Mdid="0.16.1.0" Name="bool" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="1" PassByValue="true">
+ <dxl:ColumnStatistics Mdid="1.18806.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="false">
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="2"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="3"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="4"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="5"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="6"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="7"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="8"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="9"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="10"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="10"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="11"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="11"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="12"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="12"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="13"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="13"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="14"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="14"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="15"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="15"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="16"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="16"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="17"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="17"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="18"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="18"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="19"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="19"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="20"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="20"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="21"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="21"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="22"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="22"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="23"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="23"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="24"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="24"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="25"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="25"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="26"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="26"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="27"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="27"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="28"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="28"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="29"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="29"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="30"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="30"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="31"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="31"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="32"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="32"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="33"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="33"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="34"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="34"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="35"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="35"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="36"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="36"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="37"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="37"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="38"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="38"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="39"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="39"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="40"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="40"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="41"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="41"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="42"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="42"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="43"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="43"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="44"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="44"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="45"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="45"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="46"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="46"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="47"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="47"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="48"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="48"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="49"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="49"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="50"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="50"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="51"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="51"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="52"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="52"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="53"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="53"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="54"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="54"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="55"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="55"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="56"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="56"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="57"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="57"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="58"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="58"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="59"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="59"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="60"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="60"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="61"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="61"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="62"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="62"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="63"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="63"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="64"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="64"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="65"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="65"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="66"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="66"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="67"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="67"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="68"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="68"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="69"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="69"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="70"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="70"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="71"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="71"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="72"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="72"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="73"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="73"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="74"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="74"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="75"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="75"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="76"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="76"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="77"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="77"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="78"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="78"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="79"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="79"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="80"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="80"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="81"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="81"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="82"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="82"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="83"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="83"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="84"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="84"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="85"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="85"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="86"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="86"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="87"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="87"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="88"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="88"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="89"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="89"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="90"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="90"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="91"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="91"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="92"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="92"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="93"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="93"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="94"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="94"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="95"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="95"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="96"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="96"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="97"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="97"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="98"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="98"/>
+ <dxl:UpperBound Closed="false" TypeMdid="0.23.1.0" Value="99"/>
+ </dxl:StatsBucket>
+ <dxl:StatsBucket Frequency="0.010101" DistinctValues="1.010101">
+ <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="99"/>
+ <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="100"/>
+ </dxl:StatsBucket>
+ </dxl:ColumnStatistics>
+ <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:PartOpfamily Mdid="0.424.1.0"/>
<dxl:EqualityOp Mdid="0.91.1.0"/>
<dxl:InequalityOp Mdid="0.85.1.0"/>
<dxl:LessThanOp Mdid="0.58.1.0"/>
@@ -85,7 +443,10 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:Type Mdid="0.20.1.0" Name="Int8" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsFixedLength="true" Length="8" PassByValue="true">
+ <dxl:Type Mdid="0.20.1.0" Name="Int8" IsRedistributable="true" IsHashable="true" IsMergeJoinable="true" IsComposite="false" IsTextRelated="false" IsFixedLength="true" Length="8" PassByValue="true">
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ <dxl:LegacyDistrOpfamily Mdid="0.7100.1.0"/>
+ <dxl:PartOpfamily Mdid="0.1976.1.0"/>
<dxl:EqualityOp Mdid="0.410.1.0"/>
<dxl:InequalityOp Mdid="0.411.1.0"/>
<dxl:LessThanOp Mdid="0.412.1.0"/>
@@ -100,7 +461,10 @@
<dxl:SumAgg Mdid="0.2107.1.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" IsFixedLength="true" Length="4" PassByValue="true">
+ <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:PartOpfamily Mdid="0.1976.1.0"/>
<dxl:EqualityOp Mdid="0.96.1.0"/>
<dxl:InequalityOp Mdid="0.518.1.0"/>
<dxl:LessThanOp Mdid="0.97.1.0"/>
@@ -115,7 +479,10 @@
<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" IsFixedLength="true" Length="4" PassByValue="true">
+ <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:PartOpfamily Mdid="0.1989.1.0"/>
<dxl:EqualityOp Mdid="0.607.1.0"/>
<dxl:InequalityOp Mdid="0.608.1.0"/>
<dxl:LessThanOp Mdid="0.609.1.0"/>
@@ -124,13 +491,16 @@
<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.2118.1.0"/>
- <dxl:MaxAgg Mdid="0.2134.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="false" IsMergeJoinable="false" IsComposite="false" IsFixedLength="true" Length="6" PassByValue="false">
+ <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:PartOpfamily Mdid="0.2789.1.0"/>
<dxl:EqualityOp Mdid="0.387.1.0"/>
<dxl:InequalityOp Mdid="0.402.1.0"/>
<dxl:LessThanOp Mdid="0.2799.1.0"/>
@@ -145,7 +515,8 @@
<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="false" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
+ <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"/>
@@ -160,9 +531,10 @@
<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="false" IsHashable="true" IsMergeJoinable="false" IsComposite="false" IsFixedLength="true" Length="4" PassByValue="true">
+ <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.0.0.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"/>
@@ -175,18 +547,57 @@
<dxl:SumAgg Mdid="0.0.0.0"/>
<dxl:CountAgg Mdid="0.2147.1.0"/>
</dxl:Type>
- <dxl:ColumnStatistics Mdid="1.49152.1.0.0" Name="a" Width="4.000000" NullFreq="0.000000" NdvRemain="0.000000" FreqRemain="0.000000" ColStatsMissing="true"/>
- <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true">
+ <dxl:RelationExtendedStatistics Mdid="10.18806.1.0" Name="x"/>
+ <dxl:RelationStatistics Mdid="2.18806.1.0" Name="x" Rows="100.000000" RelPages="3" RelAllVisible="0" EmptyRelation="false"/>
+ <dxl:Relation Mdid="6.18806.1.0" Name="x" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Columns>
+ <dxl:Column Name="a" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:Relation Mdid="6.18809.1.0" Name="y" IsTemporary="false" StorageType="Heap" DistributionPolicy="Hash" DistributionColumns="0" Keys="7,1">
+ <dxl:Columns>
+ <dxl:Column Name="b" Attno="1" Mdid="0.23.1.0" Nullable="true" ColWidth="4"/>
+ <dxl:Column Name="ctid" Attno="-1" Mdid="0.27.1.0" Nullable="false" ColWidth="6"/>
+ <dxl:Column Name="xmin" Attno="-2" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmin" Attno="-3" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="xmax" Attno="-4" Mdid="0.28.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="cmax" Attno="-5" Mdid="0.29.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="tableoid" Attno="-6" Mdid="0.26.1.0" Nullable="false" ColWidth="4"/>
+ <dxl:Column Name="gp_segment_id" Attno="-7" Mdid="0.23.1.0" Nullable="false" ColWidth="4"/>
+ </dxl:Columns>
+ <dxl:IndexInfoList/>
+ <dxl:CheckConstraints/>
+ <dxl:DistrOpfamilies>
+ <dxl:DistrOpfamily Mdid="0.1977.1.0"/>
+ </dxl:DistrOpfamilies>
+ </dxl:Relation>
+ <dxl:GPDBScalarOp Mdid="0.96.1.0" Name="=" ComparisonType="Eq" ReturnsNullOnNullInput="true" IsNDVPreserving="false">
<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.65.1.0"/>
<dxl:Commutator Mdid="0.96.1.0"/>
<dxl:InverseOp Mdid="0.518.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.7027.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:Metadata>
@@ -196,16 +607,16 @@
</dxl:OutputColumns>
<dxl:CTEList/>
<dxl:LogicalInsert InsertColumns="2">
- <dxl:TableDescriptor Mdid="6.49155.1.0" TableName="y">
+ <dxl:TableDescriptor Mdid="6.18809.1.0" TableName="y" LockMode="3" AclMode="1" AssignedQueryIdForTargetRel="1">
<dxl:Columns>
<dxl:Column ColId="11" Attno="1" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
- <dxl:Column ColId="13" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="14" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="15" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="16" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="17" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
- <dxl:Column ColId="18" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
</dxl:Columns>
</dxl:TableDescriptor>
<dxl:LogicalLimit TopLimitUnderDML="true">
@@ -234,16 +645,16 @@
</dxl:LogicalConstTable>
</dxl:LogicalProject>
<dxl:LogicalGet>
- <dxl:TableDescriptor Mdid="6.49152.1.0" TableName="x">
+ <dxl:TableDescriptor Mdid="6.18806.1.0" TableName="x" LockMode="1" AclMode="2">
<dxl:Columns>
<dxl:Column ColId="3" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="4" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
- <dxl:Column ColId="5" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="6" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="7" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="8" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="9" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
- <dxl:Column ColId="10" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="10" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
</dxl:Columns>
</dxl:TableDescriptor>
</dxl:LogicalGet>
@@ -254,7 +665,7 @@
<dxl:Plan Id="0" SpaceSize="5">
<dxl:DMLInsert Columns="1" ActionCol="10" CtidCol="0" SegmentIdCol="0">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.020962" Rows="2.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.105668" Rows="10.000000" Width="4"/>
</dxl:Properties>
<dxl:DirectDispatchInfo/>
<dxl:ProjList>
@@ -262,21 +673,21 @@
<dxl:Ident ColId="1" ColName="?column?" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
- <dxl:TableDescriptor Mdid="6.49155.1.0" TableName="y">
+ <dxl:TableDescriptor Mdid="6.18809.1.0" TableName="y" LockMode="3" AclMode="1" AssignedQueryIdForTargetRel="1">
<dxl:Columns>
<dxl:Column ColId="11" Attno="1" ColName="b" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="12" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
- <dxl:Column ColId="13" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="14" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="15" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="16" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="17" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
- <dxl:Column ColId="18" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="13" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="14" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="15" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="16" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="17" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="18" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
</dxl:Columns>
</dxl:TableDescriptor>
<dxl:RedistributeMotion InputSegments="0" OutputSegments="0,1,2">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000129" Rows="2.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001501" Rows="10.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="?column?">
@@ -289,13 +700,13 @@
<dxl:Filter/>
<dxl:SortingColumnList/>
<dxl:HashExprList>
- <dxl:HashExpr>
+ <dxl:HashExpr Opfamily="0.1977.1.0">
<dxl:Ident ColId="1" ColName="?column?" TypeMdid="0.23.1.0"/>
</dxl:HashExpr>
</dxl:HashExprList>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000088" Rows="2.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001293" Rows="10.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="?column?">
@@ -309,7 +720,7 @@
<dxl:OneTimeFilter/>
<dxl:Limit>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000072" Rows="2.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001213" Rows="10.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="?column?">
@@ -318,7 +729,7 @@
</dxl:ProjList>
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="0">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000064" Rows="2.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001173" Rows="10.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="?column?">
@@ -327,80 +738,96 @@
</dxl:ProjList>
<dxl:Filter/>
<dxl:SortingColumnList/>
- <dxl:Append IsTarget="false" IsZapped="false">
+ <dxl:Limit>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000034" Rows="2.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001024" Rows="10.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="?column?">
<dxl:Ident ColId="1" ColName="?column?" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
- <dxl:Filter/>
- <dxl:Result>
+ <dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000005" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001011" Rows="101.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="?column?">
- <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ <dxl:Ident ColId="1" ColName="?column?" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
- <dxl:OneTimeFilter/>
- <dxl:RandomMotion InputSegments="0" OutputSegments="0,1,2" DuplicateSensitive="true">
+ <dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000004" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="0.000005" Rows="1.000000" Width="4"/>
</dxl:Properties>
- <dxl:ProjList/>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="1" Alias="?column?">
+ <dxl:ConstValue TypeMdid="0.23.1.0" Value="1"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
<dxl:Filter/>
- <dxl:SortingColumnList/>
- <dxl:Result>
+ <dxl:OneTimeFilter/>
+ <dxl:RandomMotion InputSegments="0" OutputSegments="0,1,2" DuplicateSensitive="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="0.000001" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="0.000004" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
- <dxl:OneTimeFilter/>
+ <dxl:SortingColumnList/>
<dxl:Result>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="0.000001" Rows="1.000000" Width="1"/>
</dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="0" Alias="">
- <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
- </dxl:ProjElem>
- </dxl:ProjList>
+ <dxl:ProjList/>
<dxl:Filter/>
<dxl:OneTimeFilter/>
+ <dxl:Result>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="0.000001" Rows="1.000000" Width="1"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="0" Alias="">
+ <dxl:ConstValue TypeMdid="0.16.1.0" Value="true"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:OneTimeFilter/>
+ </dxl:Result>
</dxl:Result>
- </dxl:Result>
- </dxl:RandomMotion>
- </dxl:Result>
- <dxl:TableScan>
- <dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000019" Rows="1.000000" Width="4"/>
- </dxl:Properties>
- <dxl:ProjList>
- <dxl:ProjElem ColId="2" Alias="a">
- <dxl:Ident ColId="2" ColName="a" TypeMdid="0.23.1.0"/>
- </dxl:ProjElem>
- </dxl:ProjList>
- <dxl:Filter/>
- <dxl:TableDescriptor Mdid="6.49152.1.0" TableName="x">
- <dxl:Columns>
- <dxl:Column ColId="2" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
- <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
- <dxl:Column ColId="4" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="5" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="6" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
- <dxl:Column ColId="7" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
- <dxl:Column ColId="8" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
- <dxl:Column ColId="9" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
- </dxl:Columns>
- </dxl:TableDescriptor>
- </dxl:TableScan>
- </dxl:Append>
+ </dxl:RandomMotion>
+ </dxl:Result>
+ <dxl:TableScan>
+ <dxl:Properties>
+ <dxl:Cost StartupCost="0" TotalCost="431.000623" Rows="100.000000" Width="4"/>
+ </dxl:Properties>
+ <dxl:ProjList>
+ <dxl:ProjElem ColId="2" Alias="a">
+ <dxl:Ident ColId="2" ColName="a" TypeMdid="0.23.1.0"/>
+ </dxl:ProjElem>
+ </dxl:ProjList>
+ <dxl:Filter/>
+ <dxl:TableDescriptor Mdid="6.18806.1.0" TableName="x" LockMode="1" AclMode="2">
+ <dxl:Columns>
+ <dxl:Column ColId="2" Attno="1" ColName="a" TypeMdid="0.23.1.0" ColWidth="4"/>
+ <dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0" ColWidth="6"/>
+ <dxl:Column ColId="4" Attno="-2" ColName="xmin" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="5" Attno="-3" ColName="cmin" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="6" Attno="-4" ColName="xmax" TypeMdid="0.28.1.0" ColWidth="4"/>
+ <dxl:Column ColId="7" Attno="-5" ColName="cmax" TypeMdid="0.29.1.0" ColWidth="4"/>
+ <dxl:Column ColId="8" Attno="-6" ColName="tableoid" TypeMdid="0.26.1.0" ColWidth="4"/>
+ <dxl:Column ColId="9" Attno="-7" ColName="gp_segment_id" TypeMdid="0.23.1.0" ColWidth="4"/>
+ </dxl:Columns>
+ </dxl:TableDescriptor>
+ </dxl:TableScan>
+ </dxl:Append>
+ <dxl:LimitCount>
+ <dxl:ConstValue TypeMdid="0.20.1.0" Value="10"/>
+ </dxl:LimitCount>
+ <dxl:LimitOffset>
+ <dxl:ConstValue TypeMdid="0.20.1.0" Value="0"/>
+ </dxl:LimitOffset>
+ </dxl:Limit>
</dxl:GatherMotion>
<dxl:LimitCount>
<dxl:ConstValue TypeMdid="0.20.1.0" Value="10"/>
diff --git a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp
index 9822382de1..649a763a0d 100644
--- a/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp
+++ b/src/backend/gporca/data/dxl/minidump/DynamicIndexScan-Heterogenous-Union.mdp
@@ -635,7 +635,7 @@
<dxl:Plan Id="0" SpaceSize="4">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="818.966701" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="822.295589" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -649,7 +649,7 @@
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="818.966671" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="822.295559" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -662,7 +662,7 @@
<dxl:Filter/>
<dxl:DynamicTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -700,7 +700,7 @@
</dxl:DynamicTableScan>
<dxl:DynamicBitmapTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="387.966633" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="391.295544" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp b/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp
index 2a3999a9fd..ea0cf05074 100644
--- a/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Equivalence-class-project-over-LOJ.mdp
@@ -349,14 +349,14 @@
<dxl:Plan Id="0" SpaceSize="42">
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000573" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000558" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:GroupingColumns/>
<dxl:ProjList>
<dxl:ProjElem ColId="28" Alias="count">
<dxl:AggFunc AggMdid="0.2803.1.0" AggDistinct="false" AggStage="Final" AggKind="n" AggArgTypes="">
<dxl:ValuesList ParamType="aggargs">
- <dxl:Ident ColId="29" ColName="ColRef_0029" TypeMdid="0.20.1.0"/>
+ <dxl:Ident ColId="29" ColName="ColRef_0029" TypeMdid="0.20.1.0"/>
</dxl:ValuesList>
<dxl:ValuesList ParamType="aggdirectargs"/>
<dxl:ValuesList ParamType="aggorder"/>
@@ -367,7 +367,7 @@
<dxl:Filter/>
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000572" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000557" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="29" Alias="ColRef_0029">
@@ -378,7 +378,7 @@
<dxl:SortingColumnList/>
<dxl:Aggregate AggregationStrategy="Plain" StreamSafe="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000542" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000527" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:GroupingColumns/>
<dxl:ProjList>
@@ -394,7 +394,7 @@
<dxl:Filter/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000542" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000527" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
@@ -497,7 +497,7 @@
</dxl:Result>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList/>
<dxl:Filter/>
diff --git a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp
index 0741c9f9b3..6136c1be2f 100644
--- a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin.mdp
@@ -199,10 +199,10 @@ select * from t full join s on t1 = s1;
</dxl:Comparison>
</dxl:LogicalJoin>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="573">
+ <dxl:Plan Id="0" SpaceSize="351">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.001789" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.001407" Rows="3.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="11" Alias="s2">
@@ -216,7 +216,7 @@ select * from t full join s on t1 = s1;
<dxl:SortingColumnList/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.001573" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.001299" Rows="3.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="11" Alias="s2">
@@ -230,7 +230,7 @@ select * from t full join s on t1 = s1;
<dxl:OneTimeFilter/>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.001573" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.001299" Rows="3.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="2" Alias="t3">
@@ -324,7 +324,7 @@ select * from t full join s on t1 = s1;
</dxl:CTEProducer>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2155.001498" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2155.001236" Rows="3.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="2" Alias="t3">
@@ -418,7 +418,7 @@ select * from t full join s on t1 = s1;
</dxl:CTEProducer>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1724.001423" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="1724.001173" Rows="3.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="2" Alias="t3">
@@ -431,7 +431,7 @@ select * from t full join s on t1 = s1;
<dxl:Filter/>
<dxl:HashJoin JoinType="Left">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000836" Rows="2.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000639" Rows="2.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="2" Alias="t3">
@@ -451,7 +451,7 @@ select * from t full join s on t1 = s1;
</dxl:HashCondList>
<dxl:CTEConsumer CTEId="0" Columns="0,2,3,4,5,6,7,8,9">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000039" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000029" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="t1">
@@ -485,7 +485,7 @@ select * from t full join s on t1 = s1;
</dxl:CTEConsumer>
<dxl:CTEConsumer CTEId="1" Columns="10,11,13,14,15,16,17,18,19">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000039" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000029" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="s1">
@@ -520,7 +520,7 @@ select * from t full join s on t1 = s1;
</dxl:HashJoin>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000563" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000522" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="61" Alias="t3">
@@ -534,7 +534,7 @@ select * from t full join s on t1 = s1;
<dxl:OneTimeFilter/>
<dxl:HashJoin JoinType="LeftAntiSemiJoin">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000551" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000518" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="50" Alias="s2">
@@ -551,7 +551,7 @@ select * from t full join s on t1 = s1;
</dxl:HashCondList>
<dxl:CTEConsumer CTEId="1" Columns="49,50,51,52,53,54,55,56,57">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000039" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000029" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="49" Alias="s1">
diff --git a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp
index 570c131d54..c1afb0af79 100644
--- a/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp
+++ b/src/backend/gporca/data/dxl/minidump/ExpandFullOuterJoin2.mdp
@@ -197,7 +197,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
<dxl:Plan Id="0" SpaceSize="196">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.001577" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.001427" Rows="3.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -211,7 +211,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
<dxl:SortingColumnList/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.001361" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.001265" Rows="3.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -229,7 +229,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
<dxl:OneTimeFilter/>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.001312" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.001216" Rows="3.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -316,7 +316,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
</dxl:CTEProducer>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2155.001243" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2155.001153" Rows="3.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -403,7 +403,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
</dxl:CTEProducer>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1724.001174" Rows="3.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="1724.001090" Rows="3.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -416,7 +416,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
<dxl:Filter/>
<dxl:HashJoin JoinType="Left">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000611" Rows="2.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000555" Rows="2.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -499,7 +499,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
</dxl:HashJoin>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000539" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000517" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="48" Alias="a">
@@ -513,7 +513,7 @@ select * from s full join s s1 on s.a = s1.a where s.a is null;
<dxl:OneTimeFilter/>
<dxl:HashJoin JoinType="LeftAntiSemiJoin">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000527" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000513" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="40" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/FOJ-Condition-False.mdp b/src/backend/gporca/data/dxl/minidump/FOJ-Condition-False.mdp
index c1ab3d2dfa..3e05f3fc0a 100644
--- a/src/backend/gporca/data/dxl/minidump/FOJ-Condition-False.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FOJ-Condition-False.mdp
@@ -176,7 +176,7 @@ select * from foo a full join foo b on false;
<dxl:Plan Id="0" SpaceSize="84">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="3017.008465" Rows="80.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="3017.005429" Rows="80.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -190,7 +190,7 @@ select * from foo a full join foo b on false;
<dxl:SortingColumnList/>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="3017.003694" Rows="80.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="3017.003044" Rows="80.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -277,7 +277,7 @@ select * from foo a full join foo b on false;
</dxl:CTEProducer>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.003027" Rows="80.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.002589" Rows="80.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -364,7 +364,7 @@ select * from foo a full join foo b on false;
</dxl:CTEProducer>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2155.002359" Rows="80.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="2155.002135" Rows="80.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -460,7 +460,7 @@ select * from foo a full join foo b on false;
</dxl:NestedLoopJoin>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000345" Rows="8.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000335" Rows="8.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="48" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp
index f41323a8aa..e3b3d7f300 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-InnerNotOnDistributionColumn.mdp
@@ -262,7 +262,7 @@
<dxl:Plan Id="0" SpaceSize="14">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.001123" Rows="5.200000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.001021" Rows="5.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -282,7 +282,7 @@
<dxl:SortingColumnList/>
<dxl:MergeJoin JoinType="Full" UniqueOuter="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000735" Rows="5.200000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000711" Rows="5.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp
index d62023a9f2..5b7a4b4043 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-OnDistributionColumn.mdp
@@ -256,7 +256,7 @@
<dxl:Plan Id="0" SpaceSize="14">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.001200" Rows="5.200000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000996" Rows="5.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -276,7 +276,7 @@
<dxl:SortingColumnList/>
<dxl:MergeJoin JoinType="Full" UniqueOuter="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000735" Rows="5.200000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000686" Rows="5.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp
index b3551ae863..eef4d4d378 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-Replicated.mdp
@@ -239,7 +239,7 @@
<dxl:Plan Id="0" SpaceSize="14">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000981" Rows="3.000000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000863" Rows="3.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -259,7 +259,7 @@
<dxl:SortingColumnList/>
<dxl:MergeJoin JoinType="Full" UniqueOuter="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000712" Rows="3.000000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000684" Rows="3.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp b/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp
index e8d4c01e92..6a77628c3d 100644
--- a/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp
+++ b/src/backend/gporca/data/dxl/minidump/FullJoin-SwappedPredicates.mdp
@@ -256,7 +256,7 @@
<dxl:Plan Id="0" SpaceSize="14">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.001200" Rows="5.200000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000996" Rows="5.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -276,7 +276,7 @@
<dxl:SortingColumnList/>
<dxl:MergeJoin JoinType="Full" UniqueOuter="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000735" Rows="5.200000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000686" Rows="5.200000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp b/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp
index e7e48843a7..defedbdfcd 100644
--- a/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IndexNLJoin_Cast_NoMotion.mdp
@@ -373,10 +373,10 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
</dxl:LogicalJoin>
</dxl:UnionAll>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="96">
+ <dxl:Plan Id="0" SpaceSize="112">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1265.966969" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="1259.295736" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -390,7 +390,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1265.966909" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="1259.295676" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -403,7 +403,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
<dxl:Filter/>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="true" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="828.966488" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="822.295505" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -438,7 +438,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
</dxl:TableScan>
<dxl:BitmapTableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="397.966457" Rows="1.000000" Width="2"/>
+ <dxl:Cost StartupCost="0" TotalCost="391.295486" Rows="1.000000" Width="2"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -481,7 +481,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
</dxl:NestedLoopJoin>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="true" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="437.000416" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="437.000166" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="8" Alias="a">
@@ -520,7 +520,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
</dxl:TableScan>
<dxl:IndexScan IndexScanDirection="Forward">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000304" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000101" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="16" Alias="b">
@@ -538,7 +538,7 @@ explain select * from R1 inner join S1 on a = b union all select * from R2 inner
</dxl:Cast>
</dxl:Comparison>
</dxl:IndexCondList>
- <dxl:Partitions/>
+ <dxl:Partitions/>
<dxl:IndexDescriptor Mdid="0.130113.1.0" IndexName="s2_pkey"/>
<dxl:TableDescriptor Mdid="6.130094.1.0" TableName="s2">
<dxl:Columns>
diff --git a/src/backend/gporca/data/dxl/minidump/IsNullUnionAllIsNotNull.mdp b/src/backend/gporca/data/dxl/minidump/IsNullUnionAllIsNotNull.mdp
index b6c898d19e..068a265ebd 100644
--- a/src/backend/gporca/data/dxl/minidump/IsNullUnionAllIsNotNull.mdp
+++ b/src/backend/gporca/data/dxl/minidump/IsNullUnionAllIsNotNull.mdp
@@ -224,51 +224,8 @@
<dxl:Plan Id="0" SpaceSize="2">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.003801" Rows="50.000000" Width="4"/>
- <dxl:DerivedRelationStats Rows="50.000000" EmptyRelation="false">
- <dxl:DerivedColumnStats ColId="0" Width="4.000000" NullFreq="0.200000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- </dxl:StatsBucket>
- </dxl:DerivedColumnStats>
- </dxl:DerivedRelationStats>
+ <dxl:Cost StartupCost="0" TotalCost="862.003764" Rows="50.000000" Width="4"/>
+ <dxl:DerivedRelationStats Rows="50.000000" EmptyRelation="false"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -279,51 +236,8 @@
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.002903" Rows="50.000000" Width="4"/>
- <dxl:DerivedRelationStats Rows="50.000000" EmptyRelation="false">
- <dxl:DerivedColumnStats ColId="0" Width="4.000000" NullFreq="0.200000" NdvRemain="0.000000" FreqRemain="0.000000">
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="0"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="1"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="2"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="3"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="4"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="5"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="6"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="7"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="8"/>
- </dxl:StatsBucket>
- <dxl:StatsBucket Frequency="0.080000" DistinctValues="1.000000">
- <dxl:LowerBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- <dxl:UpperBound Closed="true" TypeMdid="0.23.1.0" Value="9"/>
- </dxl:StatsBucket>
- </dxl:DerivedColumnStats>
- </dxl:DerivedRelationStats>
+ <dxl:Cost StartupCost="0" TotalCost="862.002866" Rows="50.000000" Width="4"/>
+ <dxl:DerivedRelationStats Rows="50.000000" EmptyRelation="false"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -333,7 +247,7 @@
<dxl:Filter/>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.001364" Rows="10.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.001327" Rows="10.000000" Width="4"/>
<dxl:DerivedRelationStats Rows="10.000000" EmptyRelation="false">
<dxl:DerivedColumnStats ColId="0" Width="4.000000" NullFreq="1.000000" NdvRemain="0.000000" FreqRemain="0.000000"/>
</dxl:DerivedRelationStats>
diff --git a/src/backend/gporca/data/dxl/minidump/JoinBelowUnionAll.mdp b/src/backend/gporca/data/dxl/minidump/JoinBelowUnionAll.mdp
index 09ce852ca5..2ec169059f 100644
--- a/src/backend/gporca/data/dxl/minidump/JoinBelowUnionAll.mdp
+++ b/src/backend/gporca/data/dxl/minidump/JoinBelowUnionAll.mdp
@@ -1725,7 +1725,7 @@
<dxl:Plan Id="0" SpaceSize="192">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1327430.367112" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1327430.352231" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="c2">
@@ -1736,7 +1736,7 @@
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1327430.367097" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1327430.352217" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="c2">
@@ -1746,7 +1746,7 @@
<dxl:Filter/>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1326993.366386" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="1326993.351750" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="c2">
@@ -1859,7 +1859,7 @@
</dxl:NestedLoopJoin>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="true" OuterRefAsParam="true">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="437.000709" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="437.000465" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="c2">
@@ -1907,7 +1907,7 @@
</dxl:BroadcastMotion>
<dxl:IndexScan IndexScanDirection="Forward">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="6.000452" Rows="1.000000" Width="4"/>
+ <dxl:Cost StartupCost="0" TotalCost="6.000217" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="c1">
diff --git a/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-CoordinatorOnly-Table.mdp b/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-CoordinatorOnly-Table.mdp
index ed95dc031a..c45b94ea99 100644
--- a/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-CoordinatorOnly-Table.mdp
+++ b/src/backend/gporca/data/dxl/minidump/LOJ-IndexApply-CoordinatorOnly-Table.mdp
@@ -714,7 +714,7 @@ union all
<dxl:Plan Id="0" SpaceSize="4">
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="874.433340" Rows="1.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="874.433184" Rows="1.000000" Width="20"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -826,7 +826,7 @@ union all
</dxl:NestedLoopJoin>
<dxl:NestedLoopJoin JoinType="Left" IndexNestedLoopJoin="true" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="437.432057" Rows="1.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="437.431901" Rows="1.000000" Width="20"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="43" Alias="a">
@@ -845,7 +845,7 @@ union all
</dxl:JoinFilter>
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000234" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000078" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="43" Alias="a">
@@ -859,7 +859,7 @@ union all
<dxl:SortingColumnList/>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000025" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000008" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="43" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/LeftOuter2InnerUnionAllAntiSemiJoin.mdp b/src/backend/gporca/data/dxl/minidump/LeftOuter2InnerUnionAllAntiSemiJoin.mdp
index c7382d98c9..99d6e6c84c 100644
--- a/src/backend/gporca/data/dxl/minidump/LeftOuter2InnerUnionAllAntiSemiJoin.mdp
+++ b/src/backend/gporca/data/dxl/minidump/LeftOuter2InnerUnionAllAntiSemiJoin.mdp
@@ -280,10 +280,10 @@ and ei.entity_id = i.ad_id;
</dxl:And>
</dxl:LogicalJoin>
</dxl:Query>
- <dxl:Plan Id="0" SpaceSize="5422">
+ <dxl:Plan Id="0" SpaceSize="6334">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.003217" Rows="2.000000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.003186" Rows="2.000000" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="user_id">
@@ -300,7 +300,7 @@ and ei.entity_id = i.ad_id;
<dxl:SortingColumnList/>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2586.003002" Rows="2.000000" Width="24"/>
+ <dxl:Cost StartupCost="0" TotalCost="2586.002971" Rows="2.000000" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="user_id">
@@ -404,7 +404,7 @@ and ei.entity_id = i.ad_id;
</dxl:CTEProducer>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2155.002918" Rows="2.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="2155.002887" Rows="2.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="user_id">
@@ -419,7 +419,7 @@ and ei.entity_id = i.ad_id;
</dxl:ProjList>
<dxl:CTEProducer CTEId="1" Columns="29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.002018" Rows="1.000000" Width="1"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.002037" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="29" Alias="user_id">
@@ -482,7 +482,7 @@ and ei.entity_id = i.ad_id;
</dxl:ProjList>
<dxl:HashJoin JoinType="Inner">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.002017" Rows="1.000000" Width="96"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.002036" Rows="1.000000" Width="100"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="29" Alias="user_id">
@@ -557,7 +557,7 @@ and ei.entity_id = i.ad_id;
</dxl:HashCondList>
<dxl:CTEConsumer CTEId="0" Columns="29,30,31,32,33,34,35,36,37,38">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000120" Rows="1.000000" Width="50"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000130" Rows="1.000000" Width="54"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="29" Alias="user_id">
@@ -644,7 +644,7 @@ and ei.entity_id = i.ad_id;
</dxl:CTEProducer>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000881" Rows="2.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000834" Rows="2.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="user_id">
@@ -660,7 +660,7 @@ and ei.entity_id = i.ad_id;
<dxl:Filter/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000048" Rows="1.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000029" Rows="1.000000" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="user_id">
@@ -677,7 +677,7 @@ and ei.entity_id = i.ad_id;
<dxl:OneTimeFilter/>
<dxl:CTEConsumer CTEId="1" Columns="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000048" Rows="1.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000029" Rows="1.000000" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="user_id">
@@ -742,7 +742,7 @@ and ei.entity_id = i.ad_id;
</dxl:Result>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000812" Rows="1.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000789" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="48" Alias="user_id">
@@ -759,7 +759,7 @@ and ei.entity_id = i.ad_id;
<dxl:OneTimeFilter/>
<dxl:HashJoin JoinType="LeftAntiSemiJoin">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000792" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000781" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="48" Alias="user_id">
@@ -787,7 +787,7 @@ and ei.entity_id = i.ad_id;
</dxl:HashCondList>
<dxl:CTEConsumer CTEId="0" Columns="48,49,50,51,52,53,54,55,56,57">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000048" Rows="1.000000" Width="20"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000058" Rows="1.000000" Width="24"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="48" Alias="user_id">
@@ -824,7 +824,7 @@ and ei.entity_id = i.ad_id;
</dxl:CTEConsumer>
<dxl:Aggregate AggregationStrategy="Hashed" StreamSafe="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000138" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000142" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:GroupingColumns>
<dxl:GroupingColumn ColId="58"/>
@@ -841,7 +841,7 @@ and ei.entity_id = i.ad_id;
<dxl:Filter/>
<dxl:CTEConsumer CTEId="1" Columns="58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000014" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000019" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="58" Alias="user_id">
diff --git a/src/backend/gporca/data/dxl/minidump/PartForeignDifferentServer.mdp b/src/backend/gporca/data/dxl/minidump/PartForeignDifferentServer.mdp
index fb34b48c3b..cc340b463a 100644
--- a/src/backend/gporca/data/dxl/minidump/PartForeignDifferentServer.mdp
+++ b/src/backend/gporca/data/dxl/minidump/PartForeignDifferentServer.mdp
@@ -362,7 +362,7 @@ explain select a, word1 from part;
<dxl:Plan Id="0" SpaceSize="2">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000247" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000217" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="a">
@@ -376,7 +376,7 @@ explain select a, word1 from part;
<dxl:SortingColumnList/>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000203" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000172" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="a">
@@ -390,7 +390,7 @@ explain select a, word1 from part;
<dxl:OneTimeFilter/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000203" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000172" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="word1">
@@ -403,7 +403,7 @@ explain select a, word1 from part;
<dxl:Filter/>
<dxl:DynamicTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000023" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000008" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="word1">
diff --git a/src/backend/gporca/data/dxl/minidump/PartTbl-List-DPE-Int-Predicates.mdp b/src/backend/gporca/data/dxl/minidump/PartTbl-List-DPE-Int-Predicates.mdp
index 81ed7a0aaf..6e78d7e2f4 100644
--- a/src/backend/gporca/data/dxl/minidump/PartTbl-List-DPE-Int-Predicates.mdp
+++ b/src/backend/gporca/data/dxl/minidump/PartTbl-List-DPE-Int-Predicates.mdp
@@ -424,7 +424,7 @@ select * from foo where b is not null;
<dxl:Plan Id="0" SpaceSize="2">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1724.000307" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1724.000124" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -438,7 +438,7 @@ select * from foo where b is not null;
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1724.000277" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1724.000094" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -451,7 +451,7 @@ select * from foo where b is not null;
<dxl:Filter/>
<dxl:DynamicTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000069" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000023" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
@@ -487,7 +487,7 @@ select * from foo where b is not null;
</dxl:DynamicTableScan>
<dxl:DynamicTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000069" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000023" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="9" Alias="a">
@@ -523,7 +523,7 @@ select * from foo where b is not null;
</dxl:DynamicTableScan>
<dxl:DynamicTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000069" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000023" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="18" Alias="a">
@@ -562,7 +562,7 @@ select * from foo where b is not null;
</dxl:DynamicTableScan>
<dxl:DynamicTableScan SelectorIds="">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000069" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000023" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="27" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/Remove-Distinct-From-Subquery.mdp b/src/backend/gporca/data/dxl/minidump/Remove-Distinct-From-Subquery.mdp
index 50a22b03ec..a75a20deb8 100644
--- a/src/backend/gporca/data/dxl/minidump/Remove-Distinct-From-Subquery.mdp
+++ b/src/backend/gporca/data/dxl/minidump/Remove-Distinct-From-Subquery.mdp
@@ -504,7 +504,7 @@ select * from bar where c not in (select distinct a from foo);
<dxl:Plan Id="0" SpaceSize="2613306696">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="4310.001444" Rows="4.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="4310.001330" Rows="4.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="c">
@@ -518,7 +518,7 @@ select * from bar where c not in (select distinct a from foo);
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="4310.001324" Rows="4.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="4310.001211" Rows="4.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="c">
@@ -531,7 +531,7 @@ select * from bar where c not in (select distinct a from foo);
<dxl:Filter/>
<dxl:NestedLoopJoin JoinType="In" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000138" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000091" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="c">
@@ -547,7 +547,7 @@ select * from bar where c not in (select distinct a from foo);
</dxl:JoinFilter>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="c">
@@ -629,7 +629,7 @@ select * from bar where c not in (select distinct a from foo);
</dxl:NestedLoopJoin>
<dxl:HashJoin JoinType="In">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000462" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000443" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="18" Alias="c">
@@ -700,7 +700,7 @@ select * from bar where c not in (select distinct a from foo);
</dxl:HashJoin>
<dxl:NestedLoopJoin JoinType="LeftAntiSemiJoin" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000098" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000050" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="36" Alias="c">
@@ -716,7 +716,7 @@ select * from bar where c not in (select distinct a from foo);
</dxl:JoinFilter>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000021" Rows="1.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000007" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="36" Alias="c">
diff --git a/src/backend/gporca/data/dxl/minidump/UnionAllCompatibleDataType.mdp b/src/backend/gporca/data/dxl/minidump/UnionAllCompatibleDataType.mdp
index 336cad210c..30340fdd3e 100644
--- a/src/backend/gporca/data/dxl/minidump/UnionAllCompatibleDataType.mdp
+++ b/src/backend/gporca/data/dxl/minidump/UnionAllCompatibleDataType.mdp
@@ -332,7 +332,7 @@
<dxl:Plan Id="0" SpaceSize="12">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000396" Rows="3.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000348" Rows="3.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="11" Alias="a">
@@ -346,7 +346,7 @@
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000234" Rows="3.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000186" Rows="3.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="11" Alias="a">
@@ -405,7 +405,7 @@
</dxl:Result>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000078" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000039" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="13" Alias="a">
@@ -421,7 +421,7 @@
<dxl:OneTimeFilter/>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000036" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000018" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="13" Alias="a">
@@ -449,7 +449,7 @@
</dxl:Result>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000072" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000062" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="36" Alias="a">
@@ -465,7 +465,7 @@
<dxl:OneTimeFilter/>
<dxl:TableScan>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000034" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000034" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="25" Alias="a">
diff --git a/src/backend/gporca/data/dxl/minidump/UnionAllWithTruncatedOutput.mdp b/src/backend/gporca/data/dxl/minidump/UnionAllWithTruncatedOutput.mdp
index ce7df05928..c944228503 100644
--- a/src/backend/gporca/data/dxl/minidump/UnionAllWithTruncatedOutput.mdp
+++ b/src/backend/gporca/data/dxl/minidump/UnionAllWithTruncatedOutput.mdp
@@ -304,7 +304,7 @@
<dxl:Plan Id="0" SpaceSize="48">
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2155.001254" Rows="3.333333" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="2155.001214" Rows="3.333333" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="i1">
@@ -318,7 +318,7 @@
<dxl:SortingColumnList/>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="2155.001135" Rows="3.333333" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="2155.001095" Rows="3.333333" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="i2">
@@ -331,7 +331,7 @@
<dxl:Filter/>
<dxl:NestedLoopJoin JoinType="Inner" IndexNestedLoopJoin="false" OuterRefAsParam="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000632" Rows="1.333333" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000620" Rows="1.333333" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="i2">
@@ -425,7 +425,7 @@
</dxl:NestedLoopJoin>
<dxl:HashJoin JoinType="Inner">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000490" Rows="2.000000" Width="8"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000462" Rows="2.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="19" Alias="i2">
diff --git a/src/backend/gporca/data/dxl/minidump/UnionWithCTE.mdp b/src/backend/gporca/data/dxl/minidump/UnionWithCTE.mdp
index 22252dec58..00d625c3bb 100644
--- a/src/backend/gporca/data/dxl/minidump/UnionWithCTE.mdp
+++ b/src/backend/gporca/data/dxl/minidump/UnionWithCTE.mdp
@@ -273,7 +273,7 @@
<dxl:Plan Id="0" SpaceSize="200">
<dxl:GatherMotion InputSegments="0,1,2" OutputSegments="-1">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000457" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000427" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="id">
@@ -290,7 +290,7 @@
<dxl:SortingColumnList/>
<dxl:Sequence>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="1293.000397" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="1293.000367" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="id">
@@ -436,7 +436,7 @@
</dxl:CTEProducer>
<dxl:Append IsTarget="false" IsZapped="false">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="862.000161" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="862.000131" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="10" Alias="id">
@@ -506,7 +506,7 @@
</dxl:Result>
<dxl:Result>
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000045" Rows="1.000000" Width="16"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000015" Rows="1.000000" Width="16"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="id">
@@ -523,7 +523,7 @@
<dxl:OneTimeFilter/>
<dxl:CTEConsumer CTEId="0" Columns="21,22">
<dxl:Properties>
- <dxl:Cost StartupCost="0" TotalCost="431.000029" Rows="1.000000" Width="12"/>
+ <dxl:Cost StartupCost="0" TotalCost="431.000010" Rows="1.000000" Width="12"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="21" Alias="id">
diff --git a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalUnionAll.h b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalUnionAll.h
index 32091302ba..a4960aa209 100644
--- a/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalUnionAll.h
+++ b/src/backend/gporca/libgpopt/include/gpopt/operators/CLogicalUnionAll.h
@@ -96,6 +96,9 @@ public:
IStatistics *PstatsDerive(CMemoryPool *mp, CExpressionHandle &exprhdl,
IStatisticsArray *stats_ctxt) const override;
+ CColRefSet *PcrsStat(CMemoryPool *mp, CExpressionHandle &exprhdl,
+ CColRefSet *pcrsInput,
+ ULONG child_index) const override;
// conversion function
static CLogicalUnionAll *
@@ -109,7 +112,9 @@ public:
// derive statistics based on union all semantics
static IStatistics *PstatsDeriveUnionAll(CMemoryPool *mp,
- CExpressionHandle &exprhdl);
+ CExpressionHandle &exprhdl,
+ CColRefArray *pdrgpcrOutput,
+ CColRef2dArray *pdrgpdrgpcrInput);
}; // class CLogicalUnionAll
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalUnion.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalUnion.cpp
index 9483b740b2..178f4ad521 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalUnion.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalUnion.cpp
@@ -136,8 +136,12 @@ CLogicalUnion::PstatsDerive(CMemoryPool *mp, CExpressionHandle &exprhdl,
// union is transformed into a group by over an union all
// we follow the same route to compute statistics
- IStatistics *pstatsUnionAll =
- CLogicalUnionAll::PstatsDeriveUnionAll(mp, exprhdl);
+ CColRefArray *pdrgpcrOutput =
+ CLogicalSetOp::PopConvert(exprhdl.Pop())->PdrgpcrOutput();
+ CColRef2dArray *pdrgpdrgpcrInput =
+ CLogicalSetOp::PopConvert(exprhdl.Pop())->PdrgpdrgpcrInput();
+ IStatistics *pstatsUnionAll = CLogicalUnionAll::PstatsDeriveUnionAll(
+ mp, exprhdl, pdrgpcrOutput, pdrgpdrgpcrInput);
// computed columns
ULongPtrArray *pdrgpulComputedCols = GPOS_NEW(mp) ULongPtrArray(mp);
diff --git a/src/backend/gporca/libgpopt/src/operators/CLogicalUnionAll.cpp b/src/backend/gporca/libgpopt/src/operators/CLogicalUnionAll.cpp
index 04e606d088..8b30010f56 100644
--- a/src/backend/gporca/libgpopt/src/operators/CLogicalUnionAll.cpp
+++ b/src/backend/gporca/libgpopt/src/operators/CLogicalUnionAll.cpp
@@ -144,15 +144,13 @@ CLogicalUnionAll::PxfsCandidates(CMemoryPool *mp) const
//---------------------------------------------------------------------------
IStatistics *
CLogicalUnionAll::PstatsDeriveUnionAll(CMemoryPool *mp,
- CExpressionHandle &exprhdl)
+ CExpressionHandle &exprhdl,
+ CColRefArray *pdrgpcrOutput,
+ CColRef2dArray *pdrgpdrgpcrInput)
{
GPOS_ASSERT(COperator::EopLogicalUnionAll == exprhdl.Pop()->Eopid() ||
COperator::EopLogicalUnion == exprhdl.Pop()->Eopid());
- CColRefArray *pdrgpcrOutput =
- CLogicalSetOp::PopConvert(exprhdl.Pop())->PdrgpcrOutput();
- CColRef2dArray *pdrgpdrgpcrInput =
- CLogicalSetOp::PopConvert(exprhdl.Pop())->PdrgpdrgpcrInput();
GPOS_ASSERT(nullptr != pdrgpcrOutput);
GPOS_ASSERT(nullptr != pdrgpdrgpcrInput);
@@ -189,8 +187,85 @@ CLogicalUnionAll::PstatsDerive(CMemoryPool *mp, CExpressionHandle &exprhdl,
) const
{
GPOS_ASSERT(EspNone < Esp(exprhdl));
+ CColRefArray *pdrgpcrOutput =
+ CLogicalSetOp::PopConvert(exprhdl.Pop())->PdrgpcrOutput();
+ CColRef2dArray *pdrgpdrgpcrInput =
+ CLogicalSetOp::PopConvert(exprhdl.Pop())->PdrgpdrgpcrInput();
- return PstatsDeriveUnionAll(mp, exprhdl);
+ CReqdPropRelational *prprel =
+ CReqdPropRelational::GetReqdRelationalProps(exprhdl.Prp());
+ CColRefArray *pdrgpcrOutputStats = prprel->PcrsStat()->Pdrgpcr(mp);
+
+ CColRef2dArray *pdrgpdrgpcrInputStats = GPOS_NEW(mp) CColRef2dArray(mp);
+ /*
+ * In CLogicalUnionAll, output columns are the same as the input columns
+ * of the first union all child
+ */
+ pdrgpdrgpcrInputStats->Append(pdrgpcrOutputStats);
+ /*
+ * We iteratively remap the stats columns for the 2nd (index 1) union all
+ * child and subsequent ones. Each of the stat columns, which are a subset
+ * of output columns, is mapped to the corresponding input column. The
+ * first (index 0) union all child doesn't require remapping, because union
+ * all output columns align directly with the input columns of the first
+ * union all child.
+ */
+ const ULONG arity = exprhdl.Arity();
+ for (ULONG ul = 1; ul < arity; ul++)
+ {
+ UlongToColRefMap *mapping =
+ CUtils::PhmulcrMapping(mp, pdrgpcrOutput, (*pdrgpdrgpcrInput)[ul]);
+ CColRefArray *pdrgpcrInputStats =
+ CUtils::PdrgpcrRemap(mp, pdrgpcrOutputStats, mapping, true);
+ pdrgpdrgpcrInputStats->Append(pdrgpcrInputStats);
+ mapping->Release();
+ }
+
+ IStatistics *result = PstatsDeriveUnionAll(mp, exprhdl, pdrgpcrOutputStats,
+ pdrgpdrgpcrInputStats);
+ pdrgpdrgpcrInputStats->Release();
+
+ return result;
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// CLogicalUnionAll::PcrsStat
+//
+// @doc:
+// compute required stats columns of the n-th child
+//
+//---------------------------------------------------------------------------
+CColRefSet *
+CLogicalUnionAll::PcrsStat(CMemoryPool *mp,
+ CExpressionHandle &, // exprhdl
+ CColRefSet *pcrsInput, ULONG child_index) const
+{
+ /*
+ * We only need compute stats for columns required from parent of UnionAll
+ * operator. But the output columns of UnionAll are different from it`s
+ * children, so we need to remap the stats columns to the corresponding input.
+ */
+ if (0 == pcrsInput->Size())
+ {
+ pcrsInput->AddRef();
+ return pcrsInput;
+ }
+
+ CColRefSet *pcrsChildInput = (*m_pdrgpcrsInput)[child_index];
+ if (pcrsChildInput->ContainsAll(pcrsInput))
+ {
+ pcrsInput->AddRef();
+ return pcrsInput;
+ }
+ else
+ {
+ UlongToColRefMap *mapping = CUtils::PhmulcrMapping(
+ mp, m_pdrgpcrOutput, (*m_pdrgpdrgpcrInput)[child_index]);
+ CColRefSet *pcrs = CUtils::PcrsRemap(mp, pcrsInput, mapping, true);
+ mapping->Release();
+ return pcrs;
+ }
}
// EOF
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerStatsDerivedRelation.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerStatsDerivedRelation.cpp
index 535b1307e3..feb277dec8 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerStatsDerivedRelation.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerStatsDerivedRelation.cpp
@@ -154,9 +154,6 @@ CParseHandlerStatsDerivedRelation::EndElement(
str->GetBuffer());
}
- // must have at least one column stats
- GPOS_ASSERT(0 < this->Length());
-
// array of derived column statistics
CDXLStatsDerivedColumnArray *dxl_stats_derived_col_array =
GPOS_NEW(m_mp) CDXLStatsDerivedColumnArray(m_mp);
diff --git a/src/test/regress/expected/gporca_optimizer.out b/src/test/regress/expected/gporca_optimizer.out
index a8196c5ec6..8fb65283c5 100644
--- a/src/test/regress/expected/gporca_optimizer.out
+++ b/src/test/regress/expected/gporca_optimizer.out
@@ -10708,32 +10708,39 @@ set log_statement='none';
set log_min_duration_statement=-1;
set client_min_messages='log';
explain select count(*) from foo group by cube(a,b);
- QUERY PLAN
-----------------------------------------------------------------------------------------------
- Sequence (cost=0.00..2155.00 rows=1 width=8)
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=1)
- -> Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..431.00 rows=1 width=8)
+ QUERY PLAN
+----------------------------------------------------------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..2155.00 rows=1 width=8)
+ -> Sequence (cost=0.00..2155.00 rows=1 width=8)
+ -> Shared Scan (share slice:id 1:0) (cost=0.00..431.00 rows=1 width=1)
-> Seq Scan on foo (cost=0.00..431.00 rows=1 width=8)
- -> Append (cost=0.00..1724.00 rows=1 width=8)
- -> GroupAggregate (cost=0.00..431.00 rows=1 width=8)
- Group Key: share0_ref2.a, share0_ref2.b
- -> Sort (cost=0.00..431.00 rows=1 width=8)
- Sort Key: share0_ref2.a, share0_ref2.b
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=8)
- -> GroupAggregate (cost=0.00..431.00 rows=1 width=8)
- Group Key: share0_ref3.b
- -> Sort (cost=0.00..431.00 rows=1 width=4)
- Sort Key: share0_ref3.b
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=4)
- -> GroupAggregate (cost=0.00..431.00 rows=1 width=8)
- Group Key: share0_ref4.a
- -> Sort (cost=0.00..431.00 rows=1 width=4)
- Sort Key: share0_ref4.a
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=4)
- -> Aggregate (cost=0.00..431.00 rows=1 width=8)
- -> Shared Scan (share slice:id 0:0) (cost=0.00..431.00 rows=1 width=1)
- Optimizer: Pivotal Optimizer (GPORCA)
-(23 rows)
+ -> Append (cost=0.00..1724.00 rows=1 width=8)
+ -> GroupAggregate (cost=0.00..431.00 rows=1 width=8)
+ Group Key: share0_ref2.a, share0_ref2.b
+ -> Sort (cost=0.00..431.00 rows=1 width=8)
+ Sort Key: share0_ref2.a, share0_ref2.b
+ -> Shared Scan (share slice:id 1:0) (cost=0.00..431.00 rows=1 width=8)
+ -> GroupAggregate (cost=0.00..431.00 rows=1 width=8)
+ Group Key: share0_ref3.b
+ -> Sort (cost=0.00..431.00 rows=1 width=4)
+ Sort Key: share0_ref3.b
+ -> Redistribute Motion 3:3 (slice2; segments: 3) (cost=0.00..431.00 rows=1 width=4)
+ Hash Key: share0_ref3.b
+ -> Result (cost=0.00..431.00 rows=1 width=4)
+ -> Shared Scan (share slice:id 2:0) (cost=0.00..431.00 rows=1 width=4)
+ -> GroupAggregate (cost=0.00..431.00 rows=1 width=8)
+ Group Key: share0_ref4.a
+ -> Sort (cost=0.00..431.00 rows=1 width=4)
+ Sort Key: share0_ref4.a
+ -> Shared Scan (share slice:id 1:0) (cost=0.00..431.00 rows=1 width=4)
+ -> Result (cost=0.00..431.00 rows=1 width=8)
+ -> Redistribute Motion 1:3 (slice3) (cost=0.00..431.00 rows=1 width=8)
+ -> Aggregate (cost=0.00..431.00 rows=1 width=8)
+ -> Gather Motion 3:1 (slice4; segments: 3) (cost=0.00..431.00 rows=1 width=1)
+ -> Result (cost=0.00..431.00 rows=1 width=1)
+ -> Shared Scan (share slice:id 4:0) (cost=0.00..431.00 rows=1 width=1)
+ Optimizer: GPORCA
+(30 rows)
reset client_min_messages;
reset log_statement;
diff --git a/src/test/regress/expected/groupingsets_optimizer.out b/src/test/regress/expected/groupingsets_optimizer.out
index 3efc72105c..b7507e0ce4 100644
--- a/src/test/regress/expected/groupingsets_optimizer.out
+++ b/src/test/regress/expected/groupingsets_optimizer.out
@@ -1432,24 +1432,24 @@ select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),a)
explain (costs off)
select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),a);
- QUERY PLAN
-------------------------------------------------------------
- Sequence
- -> Shared Scan (share slice:id 0:0)
- -> Gather Motion 3:1 (slice1; segments: 3)
+ QUERY PLAN
+------------------------------------------------------------------
+ Gather Motion 3:1 (slice1; segments: 3)
+ -> Sequence
+ -> Shared Scan (share slice:id 1:0)
-> Seq Scan on gstest_empty
- -> Append
- -> GroupAggregate
- Group Key: share0_ref2.a
- -> Sort
- Sort Key: share0_ref2.a
- -> Shared Scan (share slice:id 0:0)
- -> GroupAggregate
- Group Key: share0_ref3.a, share0_ref3.b
- -> Sort
- Sort Key: share0_ref3.a, share0_ref3.b
- -> Shared Scan (share slice:id 0:0)
- Optimizer: Pivotal Optimizer (GPORCA)
+ -> Append
+ -> GroupAggregate
+ Group Key: share0_ref2.a
+ -> Sort
+ Sort Key: share0_ref2.a
+ -> Shared Scan (share slice:id 1:0)
+ -> GroupAggregate
+ Group Key: share0_ref3.a, share0_ref3.b
+ -> Sort
+ Sort Key: share0_ref3.a, share0_ref3.b
+ -> Shared Scan (share slice:id 1:0)
+ Optimizer: GPORCA
(16 rows)
select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),());
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 27/30: Properly set function column count for table value functions in Orca
Posted by ma...@apache.org.
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 78fa230700d7cbb74672bbf7abab92fb764e42f4
Author: Chris Hajas <ch...@vmware.com>
AuthorDate: Wed Feb 14 16:20:22 2024 -0800
Properly set function column count for table value functions in Orca
The funccolcount value wasn't being set by Orca when populating the plan
to execute, which caused running explain <qry> for such queries to fail
with "invalid attnum 2 for relation". Interestingly, the queries I
tested would execute fine--only explain would fail.
---
src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
index 62c516bf03..b6abedc7cd 100644
--- a/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
+++ b/src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
@@ -1694,6 +1694,7 @@ CTranslatorDXLToPlStmt::TranslateDXLTvf(
rtfunc->funccoltypes = NIL;
rtfunc->funccoltypmods = NIL;
rtfunc->funccolcollations = NIL;
+ rtfunc->funccolcount = gpdb::ListLength(target_list);
ForEach(lc_target_entry, target_list)
{
TargetEntry *target_entry = (TargetEntry *) lfirst(lc_target_entry);
@@ -1796,7 +1797,6 @@ CTranslatorDXLToPlStmt::TranslateDXLTvfToRangeTblEntry(
const_expr->constvalue = gpdb::DatumFromPointer(str);
rtfunc->funcexpr = (Node *) const_expr;
- rtfunc->funccolcount = (int) num_of_cols;
}
else
{
@@ -1843,6 +1843,7 @@ CTranslatorDXLToPlStmt::TranslateDXLTvfToRangeTblEntry(
rtfunc->funcexpr = (Node *) func_expr;
}
+ rtfunc->funccolcount = (int) num_of_cols;
rtfunc->funcparams = funcparams;
// GPDB_91_MERGE_FIXME: collation
// set rtfunc->funccoltypemods & rtfunc->funccolcollations?
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 20/30: Fix memorys leak caught via ICW w/memory check
Posted by ma...@apache.org.
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 d09a32972fa94afe4b9134614c6a9743a7a2f02f
Author: David Kimura <dk...@vmware.com>
AuthorDate: Thu Jan 25 13:44:06 2024 -0800
Fix memorys leak caught via ICW w/memory check
Regress test planhints passes with "optimizer_use_gpdb_allocators=off"
---
src/backend/gpopt/utils/COptTasks.cpp | 17 +++++++++--------
src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp | 2 +-
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/backend/gpopt/utils/COptTasks.cpp b/src/backend/gpopt/utils/COptTasks.cpp
index 8d99f5f93e..232fb6e5fe 100644
--- a/src/backend/gpopt/utils/COptTasks.cpp
+++ b/src/backend/gpopt/utils/COptTasks.cpp
@@ -498,7 +498,6 @@ COptTasks::GetPlanHints(CMemoryPool *mp, Query *query)
continue;
}
- StringPtrArray *indexnames = GPOS_NEW(mp) StringPtrArray(mp);
CScanHint::EType type = CScanHint::Sentinal;
switch (scan_hint->base.hint_keyword)
{
@@ -555,16 +554,18 @@ COptTasks::GetPlanHints(CMemoryPool *mp, Query *query)
}
}
- ListCell *l;
- foreach (l, scan_hint->indexnames)
- {
- char *indexname = (char *) lfirst(l);
- indexnames->Append(GPOS_NEW(mp) CWStringConst(mp, indexname));
- }
-
CScanHint *hint = plan_hints->GetScanHint(scan_hint->relname);
if (nullptr == hint)
{
+ StringPtrArray *indexnames = GPOS_NEW(mp) StringPtrArray(mp);
+
+ ListCell *l;
+ foreach (l, scan_hint->indexnames)
+ {
+ char *indexname = (char *) lfirst(l);
+ indexnames->Append(GPOS_NEW(mp) CWStringConst(mp, indexname));
+ }
+
hint = GPOS_NEW(mp) CScanHint(
mp, GPOS_NEW(mp) CWStringConst(mp, scan_hint->relname),
indexnames);
diff --git a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
index d13b5d1c5c..1c24fcc223 100644
--- a/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
+++ b/src/backend/gporca/libgpopt/src/xforms/CXformUtils.cpp
@@ -3103,7 +3103,7 @@ CXformUtils::PexprBitmapSelectBestIndex(
{
pop->Release();
pexprIndexFinal->Release();
- (*ppexprResidual) = pexprPred;
+ (*ppexprRecheck)->Release();
return nullptr;
}
return GPOS_NEW(mp) CExpression(mp, pop, pexprIndexFinal);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org
(cloudberry) 23/30: Fix typo of statistics under gporca.
Posted by ma...@apache.org.
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 590d18180cdc8ca35bb592a1d70a76f8787f6304
Author: Zhang Mingli <av...@gmail.com>
AuthorDate: Tue Feb 6 12:55:37 2024 +0800
Fix typo of statistics under gporca.
A misspell search by mistake find these
typos, fix them by the way.
Authored-by: Zhang Mingli avamingli@gmail.com
---
.../gporca/libnaucrates/src/parser/CParseHandlerDynamicForeignScan.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerDynamicForeignScan.cpp b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerDynamicForeignScan.cpp
index 167a7122e0..647835d1c5 100644
--- a/src/backend/gporca/libnaucrates/src/parser/CParseHandlerDynamicForeignScan.cpp
+++ b/src/backend/gporca/libnaucrates/src/parser/CParseHandlerDynamicForeignScan.cpp
@@ -171,7 +171,7 @@ CParseHandlerDynamicForeignScan::EndElement(
m_selector_ids, m_foreign_server_oid);
m_dxl_node = GPOS_NEW(m_mp) CDXLNode(m_mp, dxl_op);
- // set statictics and physical properties
+ // set statistics and physical properties
CParseHandlerUtils::SetProperties(m_dxl_node, prop_parse_handler);
// add constructed children
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org