Thomas Hütter created ASTERIXDB-2806:
----------------------------------------
Summary: AND Operands swapped
Key: ASTERIXDB-2806
URL: https://issues.apache.org/jira/browse/ASTERIXDB-2806
Project: Apache AsterixDB
Issue Type: Bug
Reporter: Thomas Hütter
Query:
{code:java}
USE FaceDetection;
SELECT count(f) FROM
(SELECT VALUE [i1, i2]
FROM Im i1 LEFT OUTER JOIN Im i2
ON i1.content != i2.content AND deep_equal(i1, i2)) AS f
WHERE f[1] IS NOT UNKNOWN AND object_merge(f[0], f[1]);
{code}
Plan:
{code:java}
distribute result [$$71]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
project ([$$71])
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$71] <- [{"$1": $$75}]
-- ASSIGN |UNPARTITIONED|
aggregate [$$75] <- [agg-sql-sum($$85)]
-- AGGREGATE |UNPARTITIONED|
exchange
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
aggregate [$$85] <- [agg-sql-count(1)]
-- AGGREGATE |PARTITIONED|
select (and(object-merge(get-item($$86, 0), get-item($$86, 1)),
not(is-unknown(get-item($$86, 1)))))
-- STREAM_SELECT |PARTITIONED|
project ([$$86])
-- STREAM_PROJECT |PARTITIONED|
assign [$$86] <- [ordered-list-constructor(cast($$i1),
cast($$i2))]
-- ASSIGN |PARTITIONED|
project ([$$i1, $$i2])
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left outer join (and(neq($$73, $$74), deep-equal($$i1,
$$i2)))
-- NESTED_LOOP |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
data-scan []<-[$$73, $$i1] <- FaceDetection.Im
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
-- BROADCAST_EXCHANGE |PARTITIONED|
data-scan []<-[$$74, $$i2] <- FaceDetection.Im
-- DATASOURCE_SCAN |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
empty-tuple-source
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
{code}
We see that the order of the AND operands in the plan does not match the one in
the query.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)