[SERVER-60405] Support clustered collection querying in SBE Created: 01/Oct/21 Updated: 06/Dec/22 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Haley Connelly | 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 |
|
SBE currently assumes recordIds are of type long which is not always true for clustered collections - and will trip an invariant.
It can also trigger this invariant. |
| Comments |
| Comment by Rushan Chen [ 28/Mar/22 ] |
|
Changing Epic link as this would need to be completed prior to supporting columnnar index over clustered collections. The reason is that the ability to fall back during runtime to scan clustered collection instead of columnar index is needed. |
| Comment by Ian Boros [ 15/Oct/21 ] |
|
Was just talking to Martin about this, and we'll probably leave the SBE RecordId type meaning "64 bit record ID" and use the KeyString type for clustered collections. |
| Comment by Ian Boros [ 15/Oct/21 ] |
|
We'll also have to deal with the fact that RecordId may be larger than 64 bits. Right now RecordIds are always "shallow" types in SBE, and are just copies between values. We may want to treat RecordIds as "deep" types unconditionally, or perhaps have an optimization for the case where they are still 64 bit integers and fit into a raw Value. |