git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 03/10] reftable/merged: stop using generic tables in the merged table

From
karthik nayak <karthik.188@gmail.com>
Date
Aug 13, 2024, 09:58 UTC
Message-ID
<CAOLa=ZSe75TW88omzYXc1t2iUxLDiY4haBGigA7VP2=ARsDObA@mail.gmail.com>
In-Reply-To
<86e2f9f5dc64eee97510e597820791287032ba29.1723528765.git.ps@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
[snip]
Show 17 quoted lines
> diff --git a/reftable/stack.c b/reftable/stack.c
> index 64c7fdf8c4..7f4e267ea9 100644
> --- a/reftable/stack.c
> +++ b/reftable/stack.c
> @@ -225,13 +225,11 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
>  				      const char **names,
>  				      int reuse_open)
>  {
> -	size_t cur_len = !st->merged ? 0 : st->merged->stack_len;
> +	size_t cur_len = !st->merged ? 0 : st->merged->readers_len;
>  	struct reftable_reader **cur = stack_copy_readers(st, cur_len);
>  	size_t names_len = names_length(names);
>  	struct reftable_reader **new_readers =
>  		reftable_calloc(names_len, sizeof(*new_readers));
> -	struct reftable_table *new_tables =
> -		reftable_calloc(names_len, sizeof(*new_tables));
>

Before we had both `reftable_reader` and `reftable_table` here and we used to set `reftable_table` from the reader and use it to create a merged table. Now we will simply use the readers directly.

Show 8 quoted lines
>  	size_t new_readers_len = 0;
>  	struct reftable_merged_table *new_merged = NULL;
>  	struct strbuf table_path = STRBUF_INIT;
> @@ -267,17 +265,15 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
>  		}
>
>  		new_readers[new_readers_len] = rd;
> -		reftable_table_from_reader(&new_tables[new_readers_len], rd);

This being the part where we convert `reftable_reader` array to `reftable_table` array.

Show 8 quoted lines
>  		new_readers_len++;
>  	}
>
>  	/* success! */
> -	err = reftable_merged_table_new(&new_merged, new_tables,
> +	err = reftable_merged_table_new(&new_merged, new_readers,
>  					new_readers_len, st->opts.hash_id);
>
And this being the part where we create the merged table.
Show 8 quoted lines
>  	if (err < 0)
>  		goto done;
>
> -	new_tables = NULL;
>  	st->readers_len = new_readers_len;
>  	if (st->merged)
>  		reftable_merged_table_free(st->merged);
> @@ -309,7 +305,6 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
[snip]

The entire patch is along the lines of what I explained above, so looks good!

Previous: Patrick SteinhardtNext: Justin Tobler
Message 9 of 25 in “reftable: drop generic `reftable_table` interface”
  1. 00/10 reftable: drop generic `reftable_table` interfacePatrick Steinhardt, Aug 13, 2024
  2. 01/10 reftable/merged: expose functions to initialize iteratorsPatrick Steinhardt, Aug 13, 2024
  3. karthik nayakAug 13, 2024
  4. Patrick SteinhardtAug 14, 2024
  5. Justin ToblerAug 19, 2024
  6. Patrick SteinhardtAug 20, 2024
  7. 02/10 reftable/merged: rename `reftable_new_merged_table()`Patrick Steinhardt, Aug 13, 2024
  8. 03/10 reftable/merged: stop using generic tables in the merged tablePatrick Steinhardt, Aug 13, 2024
  9. karthik nayakAug 13, 2024
  10. Justin ToblerAug 19, 2024
  11. 04/10 reftable/stack: open-code reading refsPatrick Steinhardt, Aug 13, 2024
  12. 05/10 reftable/iter: drop double-checking logicPatrick Steinhardt, Aug 13, 2024
  13. Eric SunshineAug 13, 2024
  14. 06/10 reftable/generic: move generic iterator code into iterator interfacePatrick Steinhardt, Aug 13, 2024
  15. karthik nayakAug 13, 2024
  16. Patrick SteinhardtAug 14, 2024
  17. Junio C HamanoAug 14, 2024
  18. karthik nayakAug 15, 2024
  19. 07/10 reftable/dump: drop unused `compact_stack()`Patrick Steinhardt, Aug 13, 2024
  20. 08/10 reftable/dump: drop unused printing functionalityPatrick Steinhardt, Aug 13, 2024
  21. karthik nayakAug 13, 2024
  22. Patrick SteinhardtAug 14, 2024
  23. 09/10 reftable/dump: move code into "t/helper/test-reftable.c"Patrick Steinhardt, Aug 13, 2024
  24. 10/10 reftable/generic: drop interfacePatrick Steinhardt, Aug 13, 2024
  25. karthik nayakAug 13, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.