Commit Graph

14 Commits

Author SHA1 Message Date
Milena Ivanova
21aba5b624 SERVER-71989 Implement CE accuracy testing framework based on JS testing 2022-12-12 11:28:43 +00:00
Svilen Mihaylov
c48ece36af SERVER-69027 [CQF] Support for Recursive Index Navigation 2022-12-08 15:02:29 +00:00
Alya Berciu
d957cecce1 SERVER-71513 Support array histograms in statistics 2022-11-30 12:48:17 +00:00
Alexander Ignatyev
8d9e3c1ba0 SERVER-69456 Set new cost model as default 2022-11-29 12:05:17 +00:00
David Percy
e125b7eece SERVER-70224 [CQF] Pushdown Not through EvalFilter
Before converting a Filter to Sargable node, try to push down UnaryOp
Not through PathGet. Ideally we can push it all the way down and
incorporate it into a leaf PathCompare: for example Not ... Lt -> Gte.
2022-11-22 03:32:02 +00:00
Svilen Mihaylov
5d5670daae SERVER-70028 [CQF] Sort unioned intervals in sargable node 2022-11-08 14:25:32 +00:00
David Percy
136d831a28 SERVER-68596 [CQF] Convert dotted $elemMatch to SargableNode
The main change is to allow paths like Traverse (ComposeM ...) to
be Sargable. We add a Traverse to each conjunct as if the original
path were ComposeM (Traverse ...) (Traverse ...). This is an over-
approximation so we mark it perf-only and keep the original predicate.

A separate but related improvement: we now make use of more precise
index metadata to remove Traverse nodes. An index on a dotted path
such as {'a.b': 1} may have metadata telling us that 'b' is never
an array, even if 'a' is multikey.

Also, slightly improve lowerPartialSchemaRequirement's ability to
turn ranges back into PathArr / PathObj. This rewrite belongs in the
PartialSchemaReqLowerTransport so that we recognize these intervals
no matter where they occur in the BoolExpr.
2022-10-26 19:48:19 +00:00
Naama Bareket
246747af9c SERVER-13703: Presence of extraneous $project causes a less efficient plan to be used 2022-10-03 20:47:58 +00:00
Svilen Mihaylov
b75ccc2e80 SERVER-69023 [CQF] Convert PathArr to Interval 2022-09-09 21:11:50 +00:00
Svilen Mihaylov
f5f8acab2e SERVER-68965 Improvements to indexing in the presence of nested subfelds 2022-08-27 00:19:25 +00:00
Ben Shteinfeld
7936a08758 SERVER-62407 Translate find queries directly to ABT 2022-08-25 22:29:05 +00:00
David Percy
b902366ad2 SERVER-67415 Create golden-data JS suites
Adds two new suites: query_golden_classic and query_golden_cqf, which
use the golden-data test framework (docs/golden_data_test_framework.md).
These suites diff the expected and actual output instead of using
assert.eq and similar functions.

This change includes some refactoring of the golden-test classes to avoid
pulling the unittest library into the mongo shell.
2022-08-17 15:37:04 +00:00
Nicholas Zolnierz
43cf2cd5f8 SERVER-62025 Only use CQF path for eligible queries and fallback to classic optimizer otherwise 2022-06-16 23:40:52 +00:00
Svilen Mihaylov
50db8e9573 SERVER-62434 Implement query optimizer based on Path algebra and Cascades 2022-01-31 21:48:46 +00:00