[PATCH] Use direct hash lookup in logicalrep_partmap_invalidate_cb() - Mailing list pgsql-hackers

From DaeMyung Kang
Subject [PATCH] Use direct hash lookup in logicalrep_partmap_invalidate_cb()
Date
Msg-id 20260417174450.4158878-1-charsyam@gmail.com
Whole thread
Responses Re: [PATCH] Use direct hash lookup in logicalrep_partmap_invalidate_cb()
List pgsql-hackers
LogicalRepPartMap is keyed by the partition's OID, which is assigned
to entry->relmapentry.localreloid when the entry is populated in
logicalrep_partition_open().  The invalidation callback therefore
does not need to iterate over every entry to find the one matching
the invalidated relation OID; a single hash_search(HASH_FIND) on
reloid suffices.

This replaces an O(N) hash_seq_search loop with an O(1) lookup and
removes the longstanding "TODO, use inverse lookup hashtable?"
comment.  An Assert in logicalrep_partition_open() documents the
partOid == entry->relmapentry.localreloid invariant that the new
path relies on.
---

Tested on an --enable-cassert build: the full src/test/subscription
TAP suite (39 files, 579 tests) passes, including 013_partition.pl
which exercises the partmap invalidation path via ADD COLUMN on a
partitioned root (cascades a relcache inval to every leaf partition).

 src/backend/replication/logical/relation.c | 23 +++++++++-------------
 1 file changed, 9 insertions(+), 14 deletions(-)


Attachment

pgsql-hackers by date:

Previous
From: SATYANARAYANA NARLAPURAM
Date:
Subject: Re: [PATCH] Compressed TOAST data corruption with REPACK CONCURRENTLY
Next
From: Robert Haas
Date:
Subject: Re: Heads Up: cirrus-ci is shutting down June 1st