[ https://issues.apache.org/jira/browse/CALCITE-1037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16812633#comment-16812633 ]
Vladimir Sitnikov commented on CALCITE-1037: -------------------------------------------- Just in case, the commit was https://github.com/apache/calcite/commit/1ca15524992927eb88b41951a8a6ff3f45dfd4f7 PS [~julianhyde]: the funny thing is GitHub links are much more stable than *.a.o ones. Could we ask Infra to redirect "old" links to new ones? > 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 > Priority: Major > Fix For: 1.11.0 > > > 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 > t1.v > from > (values (1,1),(1,2)) as t1(k,v) > join (values (1)) as t2(k) on t1.k=t2.k > ) x, > lateral > ( > select > t.v > from > unnest(multiset[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 (v7.6.3#76005)