Jesus Camacho Rodriguez created CALCITE-2189:
------------------------------------------------
Summary: RelMdAllPredicates fast bail out creates mismatch with
RelMdTableReferences
Key: CALCITE-2189
URL: https://issues.apache.org/jira/browse/CALCITE-2189
Project: Calcite
Issue Type: Bug
Components: core
Reporter: Jesus Camacho Rodriguez
Assignee: Jesus Camacho Rodriguez
Fix For: 1.16.0
The idea behind the metadata providers introduced in CALCITE-1682 is that we
can identify the lineage of the expressions. If we bypass assigning a unique
identifier for the table in RelMdAllPredicates because there are no predicates
on those tables, then we will end up referencing wrong tables.
E.g.
{code}
select x.sal from
(select a.deptno, c.sal from (select * from emp limit 7) as a
cross join (select * from dept limit 1) as b
cross join (select * from emp where empno = 5 limit 2) as c) as x;
{code}
Table refs: {{[[CATALOG, SALES, DEPT].#0, [CATALOG, SALES, EMP].#0, [CATALOG,
SALES, EMP].#1]}}
Extracted predicate without fix (wrong): {{=([CATALOG, SALES, EMP].#0.$0, 5)}}
Extracted predicate with fix (correct): {{=([CATALOG, SALES, EMP].#1.$0, 5)}}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)