Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/backend/gpopt/translate/CTranslatorDXLToPlStmt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3608,6 +3608,13 @@ CTranslatorDXLToPlStmt::TranslateDXLCTEProducerToSharedScan(
child_plan = materialize_plan;
}

// Targetlist mismatch leads to different tuple bindings, see #12796.
// We assume targetlist's equivalence. In case of inequality one list
// is a subset of another, so it safe to compare only length.
if (list_length(child_plan->targetlist) != list_length(plan->targetlist))
GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXL2PlStmtConversion,
GPOS_WSZ_LIT("Shared Scan and child plan targetlist mismatch."));

InitializeSpoolingInfo(child_plan, cte_id);

plan->lefttree = child_plan;
Expand Down
9 changes: 1 addition & 8 deletions src/backend/gporca/data/dxl/minidump/BitmapIndexScan.mdp
Original file line number Diff line number Diff line change
Expand Up @@ -556,14 +556,7 @@ see sql/BitmapIndexScan.sql
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="388.116355" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="flex_value_set_id">
<dxl:Ident ColId="0" ColName="flex_value_set_id" TypeMdid="0.1700.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="1" Alias="flex_value_id">
<dxl:Ident ColId="1" ColName="flex_value_id" TypeMdid="0.1700.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:ProjList/>
<dxl:Filter>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.1752.1.0">
<dxl:Ident ColId="23" ColName="fid" TypeMdid="0.1700.1.0"/>
Expand Down
92 changes: 37 additions & 55 deletions src/backend/gporca/data/dxl/minidump/BitmapTableScan-Basic.mdp
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@
</dxl:LogicalSelect>
</dxl:Query>
<dxl:Plan Id="0" SpaceSize="2">
<dxl:Result>
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="392.963445" Rows="1.000000" Width="8"/>
</dxl:Properties>
Expand All @@ -252,71 +252,53 @@
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
<dxl:OneTimeFilter/>
<dxl:GatherMotion InputSegments="0,1" OutputSegments="-1">
<dxl:SortingColumnList/>
<dxl:BitmapTableScan>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="392.963445" Rows="1.000000" Width="8"/>
<dxl:Cost StartupCost="0" TotalCost="392.963409" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="x2">
<dxl:Ident ColId="1" ColName="x2" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="2" Alias="x3">
<dxl:Ident ColId="2" ColName="x3" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
<dxl:SortingColumnList/>
<dxl:BitmapTableScan>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="392.963409" Rows="1.000000" Width="8"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="1" Alias="x2">
<dxl:Ident ColId="1" ColName="x2" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="2" Alias="x3">
<dxl:Ident ColId="2" ColName="x3" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
<dxl:Ident ColId="2" ColName="x3" TypeMdid="0.23.1.0"/>
<dxl:ConstValue TypeMdid="0.23.1.0" Value="54"/>
</dxl:Comparison>
</dxl:Filter>
<dxl:RecheckCond>
<dxl:Filter>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
<dxl:Ident ColId="2" ColName="x3" TypeMdid="0.23.1.0"/>
<dxl:ConstValue TypeMdid="0.23.1.0" Value="54"/>
</dxl:Comparison>
</dxl:Filter>
<dxl:RecheckCond>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
<dxl:Ident ColId="1" ColName="x2" TypeMdid="0.23.1.0"/>
<dxl:ConstValue TypeMdid="0.23.1.0" Value="10"/>
</dxl:Comparison>
</dxl:RecheckCond>
<dxl:BitmapIndexProbe>
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
<dxl:Ident ColId="1" ColName="x2" TypeMdid="0.23.1.0"/>
<dxl:ConstValue TypeMdid="0.23.1.0" Value="10"/>
</dxl:Comparison>
</dxl:RecheckCond>
<dxl:BitmapIndexProbe>
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="=" OperatorMdid="0.96.1.0">
<dxl:Ident ColId="1" ColName="x2" TypeMdid="0.23.1.0"/>
<dxl:ConstValue TypeMdid="0.23.1.0" Value="10"/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:IndexDescriptor Mdid="0.9459845.1.0" IndexName="x2_idx"/>
</dxl:BitmapIndexProbe>
<dxl:TableDescriptor Mdid="0.9459819.1.1" TableName="foobar">
<dxl:Columns>
<dxl:Column ColId="0" Attno="1" ColName="x1" TypeMdid="0.23.1.0"/>
<dxl:Column ColId="1" Attno="2" ColName="x2" TypeMdid="0.23.1.0"/>
<dxl:Column ColId="2" Attno="3" ColName="x3" TypeMdid="0.23.1.0"/>
<dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0"/>
<dxl:Column ColId="4" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0"/>
<dxl:Column ColId="5" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0"/>
<dxl:Column ColId="6" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0"/>
<dxl:Column ColId="7" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0"/>
<dxl:Column ColId="8" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0"/>
<dxl:Column ColId="9" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0"/>
</dxl:Columns>
</dxl:TableDescriptor>
</dxl:BitmapTableScan>
</dxl:GatherMotion>
</dxl:Result>
</dxl:IndexCondList>
<dxl:IndexDescriptor Mdid="0.9459845.1.0" IndexName="x2_idx"/>
</dxl:BitmapIndexProbe>
<dxl:TableDescriptor Mdid="0.9459819.1.1" TableName="foobar">
<dxl:Columns>
<dxl:Column ColId="0" Attno="1" ColName="x1" TypeMdid="0.23.1.0"/>
<dxl:Column ColId="1" Attno="2" ColName="x2" TypeMdid="0.23.1.0"/>
<dxl:Column ColId="2" Attno="3" ColName="x3" TypeMdid="0.23.1.0"/>
<dxl:Column ColId="3" Attno="-1" ColName="ctid" TypeMdid="0.27.1.0"/>
<dxl:Column ColId="4" Attno="-3" ColName="xmin" TypeMdid="0.28.1.0"/>
<dxl:Column ColId="5" Attno="-4" ColName="cmin" TypeMdid="0.29.1.0"/>
<dxl:Column ColId="6" Attno="-5" ColName="xmax" TypeMdid="0.28.1.0"/>
<dxl:Column ColId="7" Attno="-6" ColName="cmax" TypeMdid="0.29.1.0"/>
<dxl:Column ColId="8" Attno="-7" ColName="tableoid" TypeMdid="0.26.1.0"/>
<dxl:Column ColId="9" Attno="-8" ColName="gp_segment_id" TypeMdid="0.23.1.0"/>
</dxl:Columns>
</dxl:TableDescriptor>
</dxl:BitmapTableScan>
</dxl:GatherMotion>
</dxl:Plan>
</dxl:Thread>
</dxl:DXLMessage>
6 changes: 1 addition & 5 deletions src/backend/gporca/data/dxl/minidump/GinIndex.mdp
Original file line number Diff line number Diff line change
Expand Up @@ -283,11 +283,7 @@
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="391.295478" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
<dxl:Ident ColId="0" ColName="a" TypeMdid="0.3802.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:ProjList/>
<dxl:Filter/>
<dxl:RecheckCond>
<dxl:Comparison ComparisonOperator="@&gt;" OperatorMdid="0.3246.1.0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,11 +283,7 @@
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="391.295478" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
<dxl:Ident ColId="0" ColName="a" TypeMdid="0.3802.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:ProjList/>
<dxl:Filter/>
<dxl:RecheckCond>
<dxl:Comparison ComparisonOperator="@&gt;" OperatorMdid="0.3246.1.0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,11 +283,7 @@
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="391.295478" Rows="1.000000" Width="1"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="a">
<dxl:Ident ColId="0" ColName="a" TypeMdid="0.3802.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:ProjList/>
<dxl:Filter/>
<dxl:RecheckCond>
<dxl:Comparison ComparisonOperator="@&gt;" OperatorMdid="0.3246.1.0">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,17 @@ EXPLAIN SELECT id FROM aoco_gist_tbl
WHERE b ~= '( (1,2), (3,4) )'
ORDER BY id;

QUERY PLAN
Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..0.00 rows=1 width=4)
QUERY PLAN
Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..391.30 rows=1 width=4)
Merge Key: id
-> Result (cost=0.00..0.00 rows=1 width=4)
-> Sort (cost=0.00..0.00 rows=1 width=4)
Sort Key: id
-> Bitmap Table Scan on aoco_gist_tbl (cost=0.00..0.00 rows=1 width=4)
Recheck Cond: b ~= '(3,4),(1,2)'::box
-> Bitmap Index Scan on boxindex (cost=0.00..0.00 rows=0 width=0)
Index Cond: b ~= '(3,4),(1,2)'::box
Optimizer status: PQO version 2.65.1
(10 rows)
-> Sort (cost=0.00..391.30 rows=1 width=4)
Sort Key: id
-> Bitmap Heap Scan on aoco_gist_tbl (cost=0.00..391.30 rows=1 width=4)
Recheck Cond: (b ~= '(3,4),(1,2)'::box)
-> Bitmap Index Scan on boxindex (cost=0.00..0.00 rows=0 width=0)
Index Cond: (b ~= '(3,4),(1,2)'::box)
Optimizer: Pivotal Optimizer (GPORCA)
(9 rows)
-->
<dxl:DXLMessage xmlns:dxl="http://greenplum.com/dxl/2010/12/">
<dxl:Thread Id="0">
Expand Down Expand Up @@ -272,7 +271,7 @@ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..0.00 rows=1 width=4)
<dxl:SortingColumnList>
<dxl:SortingColumn ColId="0" SortOperatorMdid="0.97.1.0" SortOperatorName="&lt;" SortNullsFirst="false"/>
</dxl:SortingColumnList>
<dxl:Result>
<dxl:Sort SortDiscardDuplicates="false">
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="391.295502" Rows="1.000000" Width="4"/>
</dxl:Properties>
Expand All @@ -282,65 +281,47 @@ Gather Motion 3:1 (slice1; segments: 3) (cost=0.00..0.00 rows=1 width=4)
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
<dxl:OneTimeFilter/>
<dxl:Sort SortDiscardDuplicates="false">
<dxl:SortingColumnList>
<dxl:SortingColumn ColId="0" SortOperatorMdid="0.97.1.0" SortOperatorName="&lt;" SortNullsFirst="false"/>
</dxl:SortingColumnList>
<dxl:LimitCount/>
<dxl:LimitOffset/>
<dxl:BitmapTableScan>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="391.295502" Rows="1.000000" Width="4"/>
<dxl:Cost StartupCost="0" TotalCost="391.295500" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="id">
<dxl:Ident ColId="0" ColName="id" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="1" Alias="b">
<dxl:Ident ColId="1" ColName="b" TypeMdid="0.603.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
<dxl:SortingColumnList>
<dxl:SortingColumn ColId="0" SortOperatorMdid="0.97.1.0" SortOperatorName="&lt;" SortNullsFirst="false"/>
</dxl:SortingColumnList>
<dxl:LimitCount/>
<dxl:LimitOffset/>
<dxl:BitmapTableScan>
<dxl:Properties>
<dxl:Cost StartupCost="0" TotalCost="391.295500" Rows="1.000000" Width="4"/>
</dxl:Properties>
<dxl:ProjList>
<dxl:ProjElem ColId="0" Alias="id">
<dxl:Ident ColId="0" ColName="id" TypeMdid="0.23.1.0"/>
</dxl:ProjElem>
<dxl:ProjElem ColId="1" Alias="b">
<dxl:Ident ColId="1" ColName="b" TypeMdid="0.603.1.0"/>
</dxl:ProjElem>
</dxl:ProjList>
<dxl:Filter/>
<dxl:RecheckCond>
<dxl:RecheckCond>
<dxl:Comparison ComparisonOperator="~=" OperatorMdid="0.499.1.0">
<dxl:Ident ColId="1" ColName="b" TypeMdid="0.603.1.0"/>
<dxl:ConstValue TypeMdid="0.603.1.0" Value="AAAAAAAACEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAAEA="/>
</dxl:Comparison>
</dxl:RecheckCond>
<dxl:BitmapIndexProbe>
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="~=" OperatorMdid="0.499.1.0">
<dxl:Ident ColId="1" ColName="b" TypeMdid="0.603.1.0"/>
<dxl:ConstValue TypeMdid="0.603.1.0" Value="AAAAAAAACEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAAEA="/>
</dxl:Comparison>
</dxl:RecheckCond>
<dxl:BitmapIndexProbe>
<dxl:IndexCondList>
<dxl:Comparison ComparisonOperator="~=" OperatorMdid="0.499.1.0">
<dxl:Ident ColId="1" ColName="b" TypeMdid="0.603.1.0"/>
<dxl:ConstValue TypeMdid="0.603.1.0" Value="AAAAAAAACEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAAEA="/>
</dxl:Comparison>
</dxl:IndexCondList>
<dxl:IndexDescriptor Mdid="0.566300.1.0" IndexName="boxindex"/>
</dxl:BitmapIndexProbe>
<dxl:TableDescriptor Mdid="0.566277.1.0" TableName="aoco_gist_tbl">
<dxl:Columns>
<dxl:Column ColId="0" Attno="1" ColName="id" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.603.1.0" ColWidth="32"/>
<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:BitmapTableScan>
</dxl:Sort>
</dxl:Result>
</dxl:IndexCondList>
<dxl:IndexDescriptor Mdid="0.566300.1.0" IndexName="boxindex"/>
</dxl:BitmapIndexProbe>
<dxl:TableDescriptor Mdid="0.566277.1.0" TableName="aoco_gist_tbl">
<dxl:Columns>
<dxl:Column ColId="0" Attno="1" ColName="id" TypeMdid="0.23.1.0" ColWidth="4"/>
<dxl:Column ColId="1" Attno="2" ColName="b" TypeMdid="0.603.1.0" ColWidth="32"/>
<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:BitmapTableScan>
</dxl:Sort>
</dxl:GatherMotion>
</dxl:Plan>
</dxl:Thread>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -785,14 +785,6 @@ class CTranslatorExprToDXL
// helper to find subplan type from a correlated join expression
static EdxlSubPlanType Edxlsubplantype(CExpression *pexprCorrelatedNLJoin);

// add used columns in the bitmap re-check and the remaining scalar filter condition to the
// required output column
static void AddBitmapFilterColumns(
CMemoryPool *mp, CPhysicalScan *pop, CExpression *pexprRecheckCond,
CExpression *pexprScalar,
CColRefSet *pcrsReqdOutput // append the required column reference
);

public:
// ctor
CTranslatorExprToDXL(CMemoryPool *mp, CMDAccessor *md_accessor,
Expand Down
Loading