-
Notifications
You must be signed in to change notification settings - Fork 331
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Primary cache: don't denormalize defaulted component values #4891
Conversation
Size changes
|
dd80167
to
5b4e1d4
Compare
5bf921d
to
bf89c30
Compare
@@ -770,6 +770,7 @@ impl CacheBucket { | |||
Ok(added_size_bytes) | |||
} | |||
|
|||
/// This will insert an empty slice for a missing component (instead of N `None` values). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need to insert/store anything? Can't we just return an empty container from the cache if the component-entry is missing when we try to access it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to keep track of the empty rows so all the component caches can share the same top-level offsets (similar to what we do in the store where we use a Option::<DataCell>::None
value for that).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ahh, for the case of range-queries where only some of the rows are empty?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep!
The cache will now keep track of missing optional components, and store an empty slice instead of a bunch of
None
values.When queried, an empty shows up as a
None
option to the end-user, who can act appropriately.SFM before:
SFM after:
What
Checklist
main
build: app.rerun.ionightly
build: app.rerun.io