Alexey Makhmutov created CALCITE-1037:
-----------------------------------------
Summary: Column uniqueness is calculated incorrectly for
'Correlate' expression
Key: CALCITE-1037
URL: https://issues.apache.org/jira/browse/CALCITE-1037
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.5.0
Reporter: Alexey Makhmutov
Assignee: Julian Hyde
Column uniqueness is calculated incorrectly for 'Correlate' expression -- and
in some cases this leads to java.lang.IndexOutOfBoundsException. Example of
such code:
{code}select
x.v
from
(
select
v
from
(values (1)) as t(v)
) as x(v),
lateral
(
select
x.v
from
(values (1),(x.v)) as t(v)
) y
group by x.v,y.v{code}
The problems seems to be related to the
org.apache.calcite.rel.metadata.RelMdColumnUniqueness.areColumnsUnique(Correlate
rel, ImmutableBitSet columns, boolean ignoreNulls) method -- it just delegates
uniqueness check to left input without changing columns list, which leads to
Exception if this list references columns from right input.
It seems, that right behavior should be following:
* For Anti/Semi join type keep the current behavior (as resulting rows contains
fields only from left input).
* For Left/Inner join type columns set for correlate is unique only if it
includes unique sets from both sides.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)