[SERVER-84438] Improve rewrites of filters on time-series as bucket-level predicates Created: 28/Dec/23  Updated: 05/Jan/24

Status: Backlog
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Irina Yatsenko (Inactive) Assignee: Backlog - Query Integration
Resolution: Unresolved Votes: 0
Labels: qi-tech-debt, qi-timeseries
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Assigned Teams:
Query Integration
Participants:

 Description   

For SERVER-84130 we had to remove the bucket-level filter with internal LT(E) comparisons. While required for query correctness, the check could be more narrow, for example, in a conjunction with GT(E) it would be still correct to use the LT(E) optimization as the GT(E) would cut off the problematic events with the missing field.

In general, the rewrites of predicates at bucket level might benefit from a more systemic review & refactor – we've seen a few post-release bugs immediately in the area: SERVER-79585, SERVER-84130, SERVER-84207, as well as in integration with other pipeline optimizations: SERVER-79692, SERVER-79637. The code is complex and the logic is spread across multiple helper functions with numerous arguments (~10) in multiple files. The entry point is around createPredicatesOnBucketLevelField().


Generated at Thu Feb 08 06:55:01 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.