]> git.ipfire.org Git - thirdparty/git.git/commitdiff
reftable/iter: drop double-checking logic
authorPatrick Steinhardt <ps@pks.im>
Thu, 22 Aug 2024 06:34:54 +0000 (08:34 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 22 Aug 2024 14:59:46 +0000 (07:59 -0700)
The filtering ref iterator can be used to only yield refs which are not
in a specific skip list. This iterator has an option to double-check the
results it returns, which causes us to seek the reference we are about
to yield via a separate table such that we detect whether the reference
that the first iterator has yielded actually exists.

The value of this is somewhat dubious, and I cannot think of any usecase
where this functionality should be required. Furthermore, this option is
never set in our codebase, which means that it is essentially untested.
And last but not least, the `struct reftable_table` that is used to
implement it is about to go away.

So while we could refactor the code to not use a `reftable_table`, it
very much feels like a wasted effort. Let's just drop this code.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
reftable/iter.c
reftable/iter.h
reftable/reader.c

index fddea31e517d13a33fcdfa1be6a5bd7bbe560beb..a7484aba60d8a32a912b484978d980bc64a40aaa 100644 (file)
@@ -42,26 +42,6 @@ static int filtering_ref_iterator_next(void *iter_arg,
                        break;
                }
 
-               if (fri->double_check) {
-                       struct reftable_iterator it = { NULL };
-
-                       reftable_table_init_ref_iter(&fri->tab, &it);
-
-                       err = reftable_iterator_seek_ref(&it, ref->refname);
-                       if (err == 0)
-                               err = reftable_iterator_next_ref(&it, ref);
-
-                       reftable_iterator_destroy(&it);
-
-                       if (err < 0) {
-                               break;
-                       }
-
-                       if (err > 0) {
-                               continue;
-                       }
-               }
-
                if (ref->value_type == REFTABLE_REF_VAL2 &&
                    (!memcmp(fri->oid.buf, ref->value.val2.target_value,
                             fri->oid.len) ||
index 537431baba075ad72614b1c68eff1fd28fa51288..b75d7ac2ac0389d91a49113d321362e05fec62fc 100644 (file)
@@ -18,8 +18,6 @@ https://developers.google.com/open-source/licenses/bsd
 
 /* iterator that produces only ref records that point to `oid` */
 struct filtering_ref_iterator {
-       int double_check;
-       struct reftable_table tab;
        struct strbuf oid;
        struct reftable_iterator it;
 };
index f7ae35da728c4ed8ce56543d58d6949d48ba07fb..e3f58542297d1a1473c707f17f305c3b72dc7843 100644 (file)
@@ -735,8 +735,6 @@ static int reftable_reader_refs_for_unindexed(struct reftable_reader *r,
        *filter = empty;
 
        strbuf_add(&filter->oid, oid, oid_len);
-       reftable_table_from_reader(&filter->tab, r);
-       filter->double_check = 0;
        iterator_from_table_iter(&filter->it, ti);
 
        iterator_from_filtering_ref_iterator(it, filter);