Hi, this is the second version of my patch series that contains additional fixes and optimizations for the reftable library. Changes compared to v1: - Added a patch to not auto-compact twice in `reftable_stack_add()`, reported by Han-Wen. - Fixed an issue I've previously introduced while rebasing the patch series. - Fixed a missing header, as reported by Junio. Due to the added patch that avoids double auto-compaction this patch series now depends on 637e34a783 (Merge branch 'ps/reftable-fixes', 2023-12-27). Patrick Patrick Steinhardt (8): reftable/stack: do not overwrite errors when compacting reftable/stack: do not auto-compact twice in `reftable_stack_add()` reftable/writer: fix index corruption when writing multiple indices reftable/record: constify some parts of the interface reftable/record: store "val1" hashes as static arrays reftable/record: store "val2" hashes as static arrays reftable/merged: really reuse buffers to compute record keys reftable/merged: transfer ownership of records when iterating reftable/block_test.c | 4 +- reftable/merged.c | 8 +-- reftable/merged_test.c | 16 +++--- reftable/readwrite_test.c | 102 +++++++++++++++++++++++++++++++------ reftable/record.c | 17 ++----- reftable/record_test.c | 5 -- reftable/reftable-record.h | 11 ++-- reftable/stack.c | 23 +++------ reftable/stack_test.c | 2 - reftable/writer.c | 4 +- 10 files changed, 117 insertions(+), 75 deletions(-) Range-diff against v1: 1: 573fb2c4fb = 1: 22a57020c6 reftable/stack: do not overwrite errors when compacting -: ---------- > 2: a08f7efc99 reftable/stack: do not auto-compact twice in `reftable_stack_add()` 2: 86ee79c48d = 3: c00e08d97f reftable/writer: fix index corruption when writing multiple indices 3: 3ad4a0e5b9 = 4: 3416268087 reftable/record: constify some parts of the interface 4: 06c9eab678 ! 5: 46ca3a37f8 reftable/record: store "val1" hashes as static arrays @@ reftable/readwrite_test.c: static void test_write_object_id_length(void) }; int err; int i; +@@ reftable/readwrite_test.c: static void test_write_multiple_indices(void) + writer = reftable_new_writer(&strbuf_add_void, &writer_buf, &opts); + reftable_writer_set_limits(writer, 1, 1); + for (i = 0; i < 100; i++) { +- unsigned char hash[GIT_SHA1_RAWSZ] = {i}; + struct reftable_ref_record ref = { + .update_index = 1, + .value_type = REFTABLE_REF_VAL1, +- .value.val1 = hash, ++ .value.val1 = {i}, + }; + + strbuf_reset(&buf); ## reftable/record.c ## @@ reftable/record.c: static void reftable_ref_record_copy_from(void *rec, const void *src_rec, @@ reftable/record_test.c: static void test_reftable_ref_record_roundtrip(void) case REFTABLE_REF_VAL2: ## reftable/reftable-record.h ## +@@ reftable/reftable-record.h: license that can be found in the LICENSE file or at + #ifndef REFTABLE_RECORD_H + #define REFTABLE_RECORD_H + ++#include "hash-ll.h" + #include <stdint.h> + + /* @@ reftable/reftable-record.h: struct reftable_ref_record { #define REFTABLE_NR_REF_VALUETYPES 4 } value_type; 5: 49f13c123f = 6: c8a36917b1 reftable/record: store "val2" hashes as static arrays 6: 32b7ddee28 = 7: 6313f8affd reftable/merged: really reuse buffers to compute record keys 7: 3dbabea22a = 8: 25a3919e58 reftable/merged: transfer ownership of records when iterating -- 2.43.GIT
Attachment:
signature.asc
Description: PGP signature