[SERVER-60352] [SBE] Allow ^@ to be used as a $split delimiter with collation and runtime computing, and re-enable $split Created: 30/Sep/21 Updated: 12/Jun/23 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Jennifer Peshansky (Inactive) | Assignee: | Backlog - Query Execution |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Assigned Teams: |
Query Execution
|
||||||||
| Participants: | |||||||||
| Description |
|
In BF-22757, a fuzzer test failed when SBE was on, with the aggregation:
the collation:
in the AggregationOptionsList, and any document, such as:
The error it fails with is "$split delimiter must not be an empty string", but "^@" is not an empty string; it is the null character. This passes in the classic engine, and even passes with SBE without the collation or without runtime computing (it does not fail if "$b" is replaced with "c"; but it does fail if "^@" is replaced with $delimiter and computed to "^@" at runtime, so there just needs to be some runtime computing happening.) The error doesn't reproduce in the shell, so the easiest way to reproduce is to download the original failing fuzzer test from the BF and simplify the aggregation, aggregationOptionsList, and document list to just the simplified ones specified. We need to investigate why it fails in this specific edge case and ensure SBE allows "^@" as a delimiter in all cases. Additionally, as a temporary fix, I've marked $split as not SBE compatible in |