Whenever we store sets of field paths strings (eg., ["a.b", "a", "c.d"]) use a custom string comparator that treats "." as the first character.
This is to protect us against future bugs like SERVER-66418. It also makes the solution to that issue more efficient (because it avoids a set copy) and would allow O(n log n) solutions to many field path comparison functions that currently are O(n^2). For example `isIndependentOf` and `isOnlyDependentOn` in https://github.com/mongodb/mongo/blob/master/src/mongo/db/matcher/expression_algo.cpp#L802
- is depended on by
-
SERVER-72651 $match filter is erroneously pushed past $project into COLLSCAN
- Closed
- is related to
-
SERVER-66418 Bad projection created during dependency analysis due to string order assumption
- Closed