Conversation
Equivalent queries could return different generations of an overwritten point because buffered duplicates had no total recency order. Snapshotting could then persist the stale winner instead of the latest write. Refs: influxdata#27548 Signed-off-by: 1fanwang <1fannnw@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #27548
After a point was overwritten, equivalent SQL queries could disagree about which generation was current. In the reported workload, component-tag and
INreads returned all 12 corrected rows while a plant-wide read returned 6. A snapshot could then persist the stale half.Buffered generations shared one
__chunk_order, leaving equal sort keys with no recency tie-breaker. Buffer chunks now expose their append order as a row range. Deduplication sees a total order, so the latest fields win across query plans, WAL replay, snapshots, and mixed buffered/parquet reads.Testing
cargo test --locked -p influxdb3_query_executor overwrite_returns_latest_values_for_all_query_shapes -- --nocaptureRegression output
Checks
cargo test --locked -p iox_querycargo test --locked -p influxdb3_writecargo clippy --locked --all-targets -p iox_query -p influxdb3_write -p influxdb3_query_executor -- -D warningscargo fmt --all --checkI've read the contributing section of the project README.
Signed CLA (if not already signed).