Rafael Acevedo created CALCITE-6786: ---------------------------------------
Summary: ANY/SOME operator yields multiple rows in correlated queries Key: CALCITE-6786 URL: https://issues.apache.org/jira/browse/CALCITE-6786 Project: Calcite Issue Type: Bug Components: core Affects Versions: 1.38.0 Reporter: Rafael Acevedo Currently, the following query yields 2 output rows: {code:sql} WITH tb as (select array(SELECT * FROM (VALUES (TRUE), (NULL)) as x(a)) as a) SELECT TRUE = ANY (SELECT b FROM UNNEST(a) AS x1(b)) AS test FROM tb; {code} Result: {code} +------+ | TEST | +------+ | | | true | +------+ 2 rows selected {code} According to any's syntax, the result should be: {code} +------+ | TEST | +------+ | true | +------+ 1 row selected {code} As a reference, DuckDB returns the correct value. The following query returns the correct value though (note that it's not correlated): {code:sql} SELECT TRUE = ANY (SELECT * FROM (VALUES (TRUE), (NULL)) as x(a)) AS test; {code} I'm currently working on a fix, but it seems that [this order by/limit|https://github.com/apache/calcite/blob/575fc1a583b3f5b5febdee40da4c5cb46c9022b1/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java#L700-L705] clause should also be applied to correlated queries. Thoughts? -- This message was sent by Atlassian Jira (v8.20.10#820010)