Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.21.0
Description
In the following query, the ITEM expression above the Left Outer Join does not get pushed to the right input (null-preserving input) of the join whereas it should since ITEM does not change the nullability.
explain plan without implementation for select tt7.columns[0], tt8.columns[0] as x from tt7 left outer join tt8 on tt7.columns[0] = tt8.columns[0]; DrillScreenRel DrillProjectRel(EXPR$0=[$1], x=[ITEM($2, 0)]) DrillJoinRel(condition=[=($0, $3)], joinType=[left]) DrillProjectRel($f2=[ITEM($0, 0)], ITEM=[ITEM($0, 0)]) DrillScanRel(table=[[dfs, tmp, tt7]], groupscan=[EasyGroupScan [selectionRoot=file:/tmp/tt7, numFiles=1, columns=[`columns`[0]], files=[file:/tmp/tt7/0_0_0.csv]]]) DrillProjectRel(columns=[$0], $f2=[ITEM($0, 0)]) DrillScanRel(table=[[dfs, tmp, tt8]], groupscan=[EasyGroupScan [selectionRoot=file:/tmp/tt8, numFiles=1, columns=[`columns`, `columns`[0]], files=[file:/tmp/tt8/0_0_0.csv]]])
From what I can tell, the change in behavior occurred with CALCITE-1753; before that the ITEM was pushed on both sides of the Left Outer Join.
Attachments
Issue Links
- is depended upon by
-
DRILL-7391 Wrong result when doing left outer join on CSV table
- Resolved
- links to