Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
6.5.0, Cheshire-Cat, 6.6.1
-
1
Description
CREATE INDEX cx1 ON default(type, a1 ); |
|
UPSERT INTO default VALUES ("c001", {"type": "doc", "a1":[{"name":"a1"}, {"name":"a2"}]}), |
VALUES ("c002", {"type": "doc", "a1":[{"name":"b1"}, {"name":"a2"}]}), |
VALUES ("c003", {"type": "doc", "a1":[{"name":"b1"}, {"name":"a2"}]}); |
|
SELECT COUNT(1) FROM default AS d |
WHERE d.type = "doc" AND (EVERY v IN a1 SATISFIES v.name != "b1" END OR d.a1 IS MISSING); |
|
SELECT * FROM default AS d |
WHERE d.type = "doc" AND (EVERY v IN a1 SATISFIES v.name != "b1" END OR d.a1 IS MISSING); |
count query returns 3, non-count query returns 1
Index is not array Index. array field is Scalar value. count query can cover. But the EVERY predicate is not pushed to indexer. It should not push index aggregation.
Also note EVERY query can't push any index pushdowns.
Workaround:
SELECT COUNT(1) FROM default AS d WHERE d.type = "doc" AND (EVERY v IN IFMISSING(a1,[]) SATISFIES v.name != "b1" END);
EVERY is true for empty ARRAY.
Attachments
For Gerrit Dashboard: MB-42474 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
139496,4 | MB-42474. Set exact to false if predicate depends on non-sargable index keys. | master | query | Status: ABANDONED | 0 | 0 |
139700,2 | MB-42474 Set exact spans properly in case of multiple spans for the same index | master | query | Status: MERGED | +2 | +1 |
139745,2 | MB-42474 Set exact spans properly in case of multiple spans for the same index | mad-hatter | query | Status: MERGED | +2 | +1 |
140278,2 | MB-42474 Set exact spans properly in case of multiple spans for the same index | 6.5.1 | query | Status: MERGED | +2 | +1 |
verified in 7.0.0-3646 using the steps in the description count is now returning 1 as well as 1 doc being returned