mirror of
https://github.com/postgres/postgres.git
synced 2025-07-24 14:22:24 +03:00
Avoid invalidating all RelationSyncCache entries on publication rename.
On Publication rename, we need to only invalidate the RelationSyncCache entries corresponding to relations that are part of the publication being renamed. As part of this patch, we introduce a new invalidation message to invalidate the cache maintained by the logical decoding output plugin. We can't use existing relcache invalidation for this purpose, as that would unnecessarily cause relcache invalidations in other backends. This will improve performance by building fewer relation cache entries during logical replication. Author: Hayato Kuroda <kuroda.hayato@fujitsu.com> Author: Shlok Kyal <shlok.kyal.oss@gmail.com> Reviewed-by: Hou Zhijie <houzj.fnst@fujitsu.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Discussion: https://postgr.es/m/OSCPR01MB14966C09AA201EFFA706576A7F5C92@OSCPR01MB14966.jpnprd01.prod.outlook.com
This commit is contained in:
@ -531,6 +531,8 @@ pgoutput_startup(LogicalDecodingContext *ctx, OutputPluginOptions *opt,
|
||||
CacheRegisterSyscacheCallback(PUBLICATIONOID,
|
||||
publication_invalidation_cb,
|
||||
(Datum) 0);
|
||||
CacheRegisterRelSyncCallback(rel_sync_cache_relation_cb,
|
||||
(Datum) 0);
|
||||
publication_callback_registered = true;
|
||||
}
|
||||
|
||||
@ -1789,12 +1791,6 @@ static void
|
||||
publication_invalidation_cb(Datum arg, int cacheid, uint32 hashvalue)
|
||||
{
|
||||
publications_valid = false;
|
||||
|
||||
/*
|
||||
* Also invalidate per-relation cache so that next time the filtering info
|
||||
* is checked it will be updated with the new publication settings.
|
||||
*/
|
||||
rel_sync_cache_publication_cb(arg, cacheid, hashvalue);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user