-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: LINQ3
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Earlier (see CSHARP-3445) we decided to use $expr to translate filter expressions that use the string StartsWith/Contains/EndsWith methods.
That decision made sense in one way because we already had support for those methods in the aggregation language.
But we have since realized that it would be better to use regular expressions after all because they can use indexes. In some cases the server can scan only a range of the index, but even when it can't use a range, it can still scan the index instead of the collection to evaluate the filter.
Additionally, the StartsWith/Contains/EndsWith methods may be preceded by some combination of ToLower/ToUpper/Trim/TrimStart/TrimEnd and those modifiers will affect the final regular expression.
- is depended on by
-
CSHARP-3404 LINQ3: Get LegacyPredicateTranslatorTests to pass
-
- Closed
-
- related to
-
CSHARP-3445 LINQ3: Refactor support for StartsWith/Contains/EndsWith to use $expr instead of regular expressions
-
- Closed
-