Skip to content
/ git Public
forked from git/git

Commit b648bd6

Browse files
pks-tgitster
authored andcommitted
reftable/reader: rename data structure to "table"
The `struct reftable_reader` subsystem encapsulates a table that has been read from the disk. As such, the current name of that structure is somewhat hard to understand as it only talks about the fact that we read something from disk, without really giving an indicator _what_ that is. Furthermore, this naming schema doesn't really fit well into how the other structures are named: `reftable_merged_table`, `reftable_stack`, `reftable_block` and `reftable_record` are all named after what they encapsulate. Rename the subsystem to `reftable_table`, which directly gives a hint that the data structure is about handling the individual tables part of the stack. While this change results in a lot of churn, it prepares for us exposing the APIs to third-party callers now that the reftable library is a standalone library that can be linked against by other projects. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 6dcc05f commit b648bd6

19 files changed

+467
-467
lines changed

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1374,10 +1374,10 @@ UNIT_TEST_PROGRAMS += t-reftable-basics
13741374
UNIT_TEST_PROGRAMS += t-reftable-block
13751375
UNIT_TEST_PROGRAMS += t-reftable-merged
13761376
UNIT_TEST_PROGRAMS += t-reftable-pq
1377-
UNIT_TEST_PROGRAMS += t-reftable-reader
13781377
UNIT_TEST_PROGRAMS += t-reftable-readwrite
13791378
UNIT_TEST_PROGRAMS += t-reftable-record
13801379
UNIT_TEST_PROGRAMS += t-reftable-stack
1380+
UNIT_TEST_PROGRAMS += t-reftable-table
13811381
UNIT_TEST_PROGRAMS += t-trailer
13821382
UNIT_TEST_PROGRAMS += t-urlmatch-normalization
13831383
UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
@@ -2729,10 +2729,10 @@ REFTABLE_OBJS += reftable/blocksource.o
27292729
REFTABLE_OBJS += reftable/iter.o
27302730
REFTABLE_OBJS += reftable/merged.o
27312731
REFTABLE_OBJS += reftable/pq.o
2732-
REFTABLE_OBJS += reftable/reader.o
27332732
REFTABLE_OBJS += reftable/record.o
27342733
REFTABLE_OBJS += reftable/stack.o
27352734
REFTABLE_OBJS += reftable/system.o
2735+
REFTABLE_OBJS += reftable/table.o
27362736
REFTABLE_OBJS += reftable/tree.o
27372737
REFTABLE_OBJS += reftable/writer.o
27382738

meson.build

+1-1
Original file line numberDiff line numberDiff line change
@@ -410,10 +410,10 @@ libgit_sources = [
410410
'reftable/iter.c',
411411
'reftable/merged.c',
412412
'reftable/pq.c',
413-
'reftable/reader.c',
414413
'reftable/record.c',
415414
'reftable/stack.c',
416415
'reftable/system.c',
416+
'reftable/table.c',
417417
'reftable/tree.c',
418418
'reftable/writer.c',
419419
'remote.c',

reftable/iter.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
#include "block.h"
1414
#include "constants.h"
15-
#include "reader.h"
1615
#include "reftable-error.h"
16+
#include "table.h"
1717

1818
int iterator_seek(struct reftable_iterator *it, struct reftable_record *want)
1919
{
@@ -130,8 +130,8 @@ static int indexed_table_ref_iter_next_block(struct indexed_table_ref_iter *it)
130130
reftable_block_done(&it->block_reader.block);
131131

132132
off = it->offsets[it->offset_idx++];
133-
err = reader_init_block_reader(it->r, &it->block_reader, off,
134-
BLOCK_TYPE_REF);
133+
err = table_init_block_reader(it->table, &it->block_reader, off,
134+
BLOCK_TYPE_REF);
135135
if (err < 0) {
136136
return err;
137137
}
@@ -181,7 +181,7 @@ static int indexed_table_ref_iter_next(void *p, struct reftable_record *rec)
181181
}
182182

183183
int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
184-
struct reftable_reader *r, uint8_t *oid,
184+
struct reftable_table *t, uint8_t *oid,
185185
int oid_len, uint64_t *offsets, int offset_len)
186186
{
187187
struct indexed_table_ref_iter empty = INDEXED_TABLE_REF_ITER_INIT;
@@ -195,7 +195,7 @@ int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
195195
}
196196

197197
*itr = empty;
198-
itr->r = r;
198+
itr->table = t;
199199

200200
err = reftable_buf_add(&itr->oid, oid, oid_len);
201201
if (err < 0)

reftable/iter.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void iterator_from_filtering_ref_iterator(struct reftable_iterator *,
5959
* but using the object index.
6060
*/
6161
struct indexed_table_ref_iter {
62-
struct reftable_reader *r;
62+
struct reftable_table *table;
6363
struct reftable_buf oid;
6464

6565
/* mutable */
@@ -83,7 +83,7 @@ void iterator_from_indexed_table_ref_iter(struct reftable_iterator *it,
8383

8484
/* Takes ownership of `offsets` */
8585
int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
86-
struct reftable_reader *r, uint8_t *oid,
86+
struct reftable_table *t, uint8_t *oid,
8787
int oid_len, uint64_t *offsets, int offset_len);
8888

8989
#endif

reftable/merged.c

+13-13
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
#include "constants.h"
1212
#include "iter.h"
1313
#include "pq.h"
14-
#include "reader.h"
1514
#include "record.h"
1615
#include "reftable-merged.h"
1716
#include "reftable-error.h"
1817
#include "system.h"
18+
#include "table.h"
1919

2020
struct merged_subiter {
2121
struct reftable_iterator iter;
@@ -192,18 +192,18 @@ static void iterator_from_merged_iter(struct reftable_iterator *it,
192192
}
193193

194194
int reftable_merged_table_new(struct reftable_merged_table **dest,
195-
struct reftable_reader **readers, size_t n,
195+
struct reftable_table **tables, size_t n,
196196
enum reftable_hash hash_id)
197197
{
198198
struct reftable_merged_table *m = NULL;
199199
uint64_t last_max = 0;
200200
uint64_t first_min = 0;
201201

202202
for (size_t i = 0; i < n; i++) {
203-
uint64_t min = reftable_reader_min_update_index(readers[i]);
204-
uint64_t max = reftable_reader_max_update_index(readers[i]);
203+
uint64_t min = reftable_table_min_update_index(tables[i]);
204+
uint64_t max = reftable_table_max_update_index(tables[i]);
205205

206-
if (reftable_reader_hash_id(readers[i]) != hash_id) {
206+
if (reftable_table_hash_id(tables[i]) != hash_id) {
207207
return REFTABLE_FORMAT_ERROR;
208208
}
209209
if (i == 0 || min < first_min) {
@@ -218,8 +218,8 @@ int reftable_merged_table_new(struct reftable_merged_table **dest,
218218
if (!m)
219219
return REFTABLE_OUT_OF_MEMORY_ERROR;
220220

221-
m->readers = readers;
222-
m->readers_len = n;
221+
m->tables = tables;
222+
m->tables_len = n;
223223
m->min = first_min;
224224
m->max = last_max;
225225
m->hash_id = hash_id;
@@ -254,20 +254,20 @@ int merged_table_init_iter(struct reftable_merged_table *mt,
254254
struct merged_iter *mi = NULL;
255255
int ret;
256256

257-
if (mt->readers_len) {
258-
REFTABLE_CALLOC_ARRAY(subiters, mt->readers_len);
257+
if (mt->tables_len) {
258+
REFTABLE_CALLOC_ARRAY(subiters, mt->tables_len);
259259
if (!subiters) {
260260
ret = REFTABLE_OUT_OF_MEMORY_ERROR;
261261
goto out;
262262
}
263263
}
264264

265-
for (size_t i = 0; i < mt->readers_len; i++) {
265+
for (size_t i = 0; i < mt->tables_len; i++) {
266266
ret = reftable_record_init(&subiters[i].rec, typ);
267267
if (ret < 0)
268268
goto out;
269269

270-
ret = reader_init_iter(mt->readers[i], &subiters[i].iter, typ);
270+
ret = table_init_iter(mt->tables[i], &subiters[i].iter, typ);
271271
if (ret < 0)
272272
goto out;
273273
}
@@ -280,14 +280,14 @@ int merged_table_init_iter(struct reftable_merged_table *mt,
280280
mi->advance_index = -1;
281281
mi->suppress_deletions = mt->suppress_deletions;
282282
mi->subiters = subiters;
283-
mi->subiters_len = mt->readers_len;
283+
mi->subiters_len = mt->tables_len;
284284

285285
iterator_from_merged_iter(it, mi);
286286
ret = 0;
287287

288288
out:
289289
if (ret < 0) {
290-
for (size_t i = 0; subiters && i < mt->readers_len; i++) {
290+
for (size_t i = 0; subiters && i < mt->tables_len; i++) {
291291
reftable_iterator_destroy(&subiters[i].iter);
292292
reftable_record_release(&subiters[i].rec);
293293
}

reftable/merged.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#include "reftable-basics.h"
1414

1515
struct reftable_merged_table {
16-
struct reftable_reader **readers;
17-
size_t readers_len;
16+
struct reftable_table **tables;
17+
size_t tables_len;
1818
enum reftable_hash hash_id;
1919

2020
/* If unset, produce deletions. This is useful for compaction. For the

reftable/reftable-merged.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@
2626
/* A merged table is implements seeking/iterating over a stack of tables. */
2727
struct reftable_merged_table;
2828

29-
struct reftable_reader;
29+
struct reftable_table;
3030

3131
/*
32-
* reftable_merged_table_new creates a new merged table. The readers must be
32+
* reftable_merged_table_new creates a new merged table. The tables must be
3333
* kept alive as long as the merged table is still in use.
3434
*/
3535
int reftable_merged_table_new(struct reftable_merged_table **dest,
36-
struct reftable_reader **readers, size_t n,
36+
struct reftable_table **tables, size_t n,
3737
enum reftable_hash hash_id);
3838

3939
/* Initialize a merged table iterator for reading refs. */

reftable/reftable-reader.h

-72
This file was deleted.

reftable/reftable-table.h

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/*
2+
* Copyright 2020 Google LLC
3+
*
4+
* Use of this source code is governed by a BSD-style
5+
* license that can be found in the LICENSE file or at
6+
* https://developers.google.com/open-source/licenses/bsd
7+
*/
8+
9+
#ifndef REFTABLE_TABLE_H
10+
#define REFTABLE_TABLE_H
11+
12+
#include "reftable-iterator.h"
13+
#include "reftable-blocksource.h"
14+
15+
/*
16+
* Reading single tables
17+
*
18+
* The follow routines are for reading single files. For an
19+
* application-level interface, skip ahead to struct
20+
* reftable_merged_table and struct reftable_stack.
21+
*/
22+
23+
/* The table struct is a handle to an open reftable file. */
24+
struct reftable_table;
25+
26+
/* reftable_table_new opens a reftable for reading. If successful,
27+
* returns 0 code and sets pp. The name is used for creating a
28+
* stack. Typically, it is the basename of the file. The block source
29+
* `src` is owned by the table, and is closed on calling
30+
* reftable_table_destroy(). On error, the block source `src` is
31+
* closed as well.
32+
*/
33+
int reftable_table_new(struct reftable_table **out,
34+
struct reftable_block_source *src, const char *name);
35+
36+
/*
37+
* Manage the reference count of the reftable table. A newly initialized
38+
* table starts with a refcount of 1 and will be deleted once the refcount has
39+
* reached 0.
40+
*
41+
* This is required because tables may have longer lifetimes than the stack
42+
* they belong to. The stack may for example be reloaded while the old tables
43+
* are still being accessed by an iterator.
44+
*/
45+
void reftable_table_incref(struct reftable_table *table);
46+
void reftable_table_decref(struct reftable_table *table);
47+
48+
/* Initialize a reftable iterator for reading refs. */
49+
int reftable_table_init_ref_iterator(struct reftable_table *t,
50+
struct reftable_iterator *it);
51+
52+
/* Initialize a reftable iterator for reading logs. */
53+
int reftable_table_init_log_iterator(struct reftable_table *t,
54+
struct reftable_iterator *it);
55+
56+
/* returns the hash ID used in this table. */
57+
enum reftable_hash reftable_table_hash_id(struct reftable_table *t);
58+
59+
/* return an iterator for the refs pointing to `oid`. */
60+
int reftable_table_refs_for(struct reftable_table *t,
61+
struct reftable_iterator *it, uint8_t *oid);
62+
63+
/* return the max_update_index for a table */
64+
uint64_t reftable_table_max_update_index(struct reftable_table *t);
65+
66+
/* return the min_update_index for a table */
67+
uint64_t reftable_table_min_update_index(struct reftable_table *t);
68+
69+
/* print blocks onto stdout for debugging. */
70+
int reftable_table_print_blocks(const char *tablename);
71+
72+
#endif

0 commit comments

Comments
 (0)