[ https://issues.apache.org/jira/browse/CALCITE-2986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16818396#comment-16818396 ]
Vineet Garg commented on CALCITE-2986: -------------------------------------- bq. I think the <> ANY must be taken into the join condition, and the physical join must be a NestedLoopJoin, each time the join left side take a loop look up for the eight side, if left side found there is any right join keys <> the left keys for the whole right table, it should returns early. Or the whole right side must be probed. This physical implementation will also have to keep track of the presence of NULLs, if there is no match and there existed a NULL it has to return NULL from left side. BUT if there was no NULL it has to return FALSE. I suppose there you could add/tweak physical implementation to support <>ANY but the problem at hand is how to transform it at logical level which is still unclear to me. > Wrong results with =ANY subquery > -------------------------------- > > Key: CALCITE-2986 > URL: https://issues.apache.org/jira/browse/CALCITE-2986 > Project: Calcite > Issue Type: Bug > Components: core > Reporter: Vineet Garg > Assignee: Vineet Garg > Priority: Major > Labels: pull-request-available, sub-query > Time Spent: 1h 10m > Remaining Estimate: 0h > > ANY/SOME subqueries are rewritten using MAX/MIN and cross-join. This is wrong > transformation for {{=ANY}} and {{<>ANY}} (and therefore {{=ALL}} and > {{<>ALL}}). > Query > {code:sql} > select * from "scott".emp where empno = any (select empno from "scott".emp); > {code} > Expected output for above query is all rows from {{scott.emp}} but actual is > only one row > Test case: e.g. > https://github.com/apache/calcite/compare/master...vineetgarg02:CALCITE-2986 -- This message was sent by Atlassian JIRA (v7.6.3#76005)