Repository navigation
Conversation
aca3c1e to
aa42a70
Compare
dd6e846 to
3bbee5e
Compare
aa42a70 to
cb0591b
Compare
3bbee5e to
91610c5
Compare
cb0591b to
ee3adca
Compare
91610c5 to
450de94
Compare
ee3adca to
33b6f30
Compare
450de94 to
f8f86e2
Compare
Merging this PR will regress 3 benchmarks4 warnings, 1 note
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
f8f86e2 to
dbd6e96
Compare
33b6f30 to
876676e
Compare
dbd6e96 to
074c7b8
Compare
ce57a1c to
aad6a9d
Compare
dce049b to
2dc62e4
Compare
|
@claude review |
|
Claude finished @danking's task in 1m 31s —— View job Review: optional logical-page boundaries in PCO metadata
Overall the change is sound. The wire format is additive (tag 3, optional, versioned), so older readers that ignore the field still decode correctly. 1. Hot-path cost (likely behind the CodSpeed regressions)a. Every full decode now checks validity counts for every page (
b. The index is built eagerly when an array is opened.
c. 2. Serializing a sliced array is now a hard error (
|
2dc62e4 to
ac6a40d
Compare
aad6a9d to
25d2b80
Compare
af66be3 to
de989ed
Compare
c69fd1c to
41a0e9e
Compare
de989ed to
b31ed89
Compare
|
@claude review |
|
Claude finished @danking's task in 1m 8s —— View job Review: optional logical-row ends in PCO metadata (head
|
…e counts Signed-off-by: Daniel King <dan@spiraldb.com>
Signed-off-by: Daniel King <dan@spiraldb.com>
b31ed89 to
326178f
Compare
…tadata Signed-off-by: Daniel King <dan@spiraldb.com>
Store an optional logical_row_prefix message containing cumulative logical_row_ends alongside existing PCO per-page stored-value counts. There is no wire version or wire enum; older readers ignore the additive protobuf field. Compressed value payloads and the pre-existing full decompressor remain unchanged.
Immutable metadata/buffer owners are shared across views. Reader page lookup is introduced by #10828; this PR neither constructs reader page descriptors eagerly nor validates logical-prefix content consistency. All semantic tests originate in #10825. The independent sliced-serialization guard is #10834 and is not bundled here.
Third replacement for #10771, after #10825. All 63 PCO library tests and all-target/all-feature Clippy pass; fresh current-head public file compatibility passed in both directions against unchanged base33675. Current GitHub CI and human review remain separate gates.
Existing CI and CodSpeed are reused; no new workflow. AI-assisted development with OpenAI Codex. Normal CI and the required human reviews remain necessary before merge; this PR remains draft.
Measured on an AMD EPYC 7B13 cloud VM: three OS-timer samples within one process per version, fixed workloads, resident buffers, no IO measurement. These are point estimates, not ABBA or confidence intervals; whole-process CPU/RSS includes fixtures and oracles. Final-stack comparisons do not isolate individual commits.
Explicit tradeoff in the final stack: 256 metadata-open/drop operations rose from 45.61 to 60.75 ms dense (+33.2%) and 39.82 to 52.41 ms nullable (+31.6%), about 59 and 49 additional microseconds per operation. Writer medians were approximately flat. This is not a universal performance win or a CI waiver.
CI correction: the existing compact stock-ticker expected size was updated 55,344→55,396 (+52 bytes with optional metadata), preserving its semantic roundtrip and default cases. The indexed-slice brace received pinned formatting. Fresh standard CI runs passed the source, platform, formatting and TSAN checks for these minimal corrections; no unrelated decoder fix is bundled.
Final CI audit: source/platform/formatting/TSAN checks have passed; remaining performance gates are CodSpeed and required human review. All PRs remain draft; no performance waiver or merge approval is claimed.