You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (Jira)" <ji...@apache.org> on 2019/10/07 20:01:00 UTC
[jira] [Updated] (CALCITE-3390) ITEM expression does not get pushed
to the right input of left-outer-join
[ https://issues.apache.org/jira/browse/CALCITE-3390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Julian Hyde updated CALCITE-3390:
---------------------------------
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.
{noformat}
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]]])
{noformat}
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.
was:
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.
{noformat}
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]]])
{noformat}
From what I can tell, the change in behavior occurred with https://issues.apache.org/jira/browse/CALCITE-1753 ; before that the ITEM was pushed on both sides of the Left Outer Join.
> ITEM expression does not get pushed to the right input of left-outer-join
> -------------------------------------------------------------------------
>
> Key: CALCITE-3390
> URL: https://issues.apache.org/jira/browse/CALCITE-3390
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.21.0
> Reporter: Aman Sinha
> Assignee: Aman Sinha
> Priority: Major
>
> 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.
> {noformat}
> 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]]])
> {noformat}
> 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.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)