Commit Graph

21 Commits

Author SHA1 Message Date
David Percy
187851fdfd SERVER-74539 Enable disjunction in PSR conversion 2023-03-30 21:53:55 +00:00
Svilen Mihaylov
ce8c7105fa SERVER-73724 [CQF] Support for optional v1 and v2 explain for js tests 2023-02-24 23:10:36 +00:00
Svilen Mihaylov
dd107e8f21 SERVER-72784 [CQF] Update representation of compound index bounds 2023-02-03 21:15:53 +00:00
David Percy
7987f7ee0c SERVER-71550 Simplify uses of PartialSchemaRequirements 2023-01-13 02:12:27 +00:00
auto-revert-processor
e2df7e4a84 Revert "SERVER-71550 Simplify uses of PartialSchemaRequirements"
This reverts commit b11ac43194.
2023-01-12 09:57:08 +00:00
Milena Ivanova
1790567099 SERVER-71990 Implement query generation for CE accuracy testing 2023-01-12 08:03:23 +00:00
David Percy
b11ac43194 SERVER-71550 Simplify uses of PartialSchemaRequirements 2023-01-11 23:17:15 +00:00
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