Repository navigation
feat(buffer): add NullBufferBuilder::append_word - #11867
Conversation
Append packed validity words while preserving lazy allocation for all-valid data. Include focused correctness tests and per-bit comparison benchmarks.
|
run benchmark null_buffer_builder |
|
🤖 Benchmark starting (GKE) | trigger Target: null_buffer_builder Sharding factor: 1 (1 workers). Comparing rich-T-kid/null-buffer-append-word (ea34379) to df4dc3e (merge-base) diff Run configurationrun benchmark null_buffer_builder
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: null_buffer_builder Comparing rich-T-kid/null-buffer-append-word (ea34379) to df4dc3e (merge-base) diff Run configurationrun benchmark null_buffer_builder
shards: 1
Baseline build unavailable for shard(s) 1; changed-only measurements for those workers. DetailsPer-runner informationnull_buffer_builder — shard 1/1Node: gk3-benchmark-cluster-nap-ra81rov6-4c2cf172-qb9h Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench null_buffer_builderCPU Details (lscpu)Resource Usagebranch
File an issue against this benchmark runner |
NullBufferBuilder::append_word
|
run benchmark null_buffer_builder |
|
🤖 Benchmark starting (GKE) | trigger Target: null_buffer_builder Sharding factor: 1 (1 workers). Comparing rich-T-kid/null-buffer-append-word (2ae1e95) to df4dc3e (merge-base) diff Run configurationrun benchmark null_buffer_builder
shards: 1
Results will be posted when all workers finish. File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Target: null_buffer_builder Comparing rich-T-kid/null-buffer-append-word (2ae1e95) to df4dc3e (merge-base) diff Run configurationrun benchmark null_buffer_builder
shards: 1
Baseline build unavailable for shard(s) 1; changed-only measurements for those workers. DetailsPer-runner informationnull_buffer_builder — shard 1/1Node: gk3-benchmark-cluster-nap-1v24fx0a-1e5965c3-6r4x Instance: c4a-highmem-16 (12 vCPU / 65 GiB) uname: BENCH_COMMAND: cargo bench --features=arrow,async,test_common,experimental,object_store --bench null_buffer_builderCPU Details (lscpu)Resource Usagebranch
File an issue against this benchmark runner |
Reject counts above 64 in optimized builds as well as debug builds. Document the public contract and cover the invalid input with a regression test.
Which issue does this PR close?
N/A. Follow-up to #11732.
Rationale for this change
Callers with packed validity bits currently need to append them one bit at a time or first build a
NullBuffer.What changes are included in this PR?
This adds
NullBufferBuilder::append_word, matchingBooleanBufferBuilder::append_wordwhile preserving lazy allocation for all-valid words. It also adds focused unit tests and benchmarks for different validity patterns.Are these changes tested?
The tests cover full and partial all-valid words without materialization, plus a mixed partial word at an unaligned offset and an all-valid append after materialization. The benchmark covers all-valid, very sparse, sparse, densely packed, and alternating validity words.
Are there any significant user-facing changes?
Adds
NullBufferBuilder::append_word.