pgsql: Refactor code for reading and writing relation map files.

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Refactor code for reading and writing relation map files.
Date: 2022-03-17 17:45:05
Message-ID: E1nUuBM-0009WP-Jh@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Refactor code for reading and writing relation map files.

Restructure things so that the functions which update the global
variables shared_map and local_map are separate from the functions
which just read and write relation map files without touching any
global variables.

In the new structure of things, write_relmap_file() writes a relmap
file but no longer performs global variable updates. A symmetric
function read_relmap_file() that just reads a file without changing
any global variables is added, and load_relmap_file(), which does
change the global variables, uses it as a subroutine.

Because write_relmap_file() no longer updates shared_map and
local_map, that logic is moved to perform_relmap_update(). However,
no similar logic is added to relmap_redo() even though it also calls
write_relmap_file(). That's because recovery must not rely on the
contents of the relation map, and therefore there is no need to
initialize it. In fact, doing so seems like a mistake, because we
might then manage to rely on the in-memory map where we shouldn't.

Patch by me, based on earlier work by Dilip Kumar. Reviewed by
Ashutosh Sharma.

Discussion: http://postgr.es/m/CA+TgmobQLgrt4AXsc0ru7aFFkzv=9fS-Q_yO69=k9WY67RCctg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/39f0c4bd670c3482f4def87a31108c175da0a8d3

Modified Files
--------------
src/backend/utils/cache/relmapper.c | 121 ++++++++++++++++++------------------
1 file changed, 60 insertions(+), 61 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tomas Vondra 2022-03-17 19:15:13 Re: pgsql: Fix row filters with multiple publications
Previous Message Tomas Vondra 2022-03-17 16:05:12 pgsql: Fix row filters with multiple publications