diff options
author | Nathan Bossart <nathan@postgresql.org> | 2024-07-24 11:30:33 -0500 |
---|---|---|
committer | Nathan Bossart <nathan@postgresql.org> | 2024-07-24 11:30:33 -0500 |
commit | 73de50e13e397da8e98ed59b0fe63a00051a7128 (patch) | |
tree | ef34c122c984b734c87976235b2e1715ee46d65e /src/backend/utils/adt/xml.c | |
parent | 0cc57dca298c86403b6d6bb647f99d542f9d3dca (diff) | |
download | postgresql-73de50e13e397da8e98ed59b0fe63a00051a7128.tar.gz postgresql-73de50e13e397da8e98ed59b0fe63a00051a7128.zip |
pg_upgrade: Retrieve subscription count more efficiently.
Presently, pg_upgrade obtains the number of subscriptions in the
to-be-upgraded cluster by first querying pg_subscription in every
database for the number of subscriptions in only that database.
Then, in count_old_cluster_subscriptions(), it adds all the values
collected in the first step. This is expensive, especially when
there are many databases.
Fortunately, there is a better way to retrieve the subscription
count. Since pg_subscription is a shared catalog, we only need to
connect to a single database and query it once. This commit
modifies pg_upgrade to use that approach, which also allows us to
trim several lines of code. In passing, move the call to
get_db_subscription_count(), which has been renamed to
get_subscription_count(), from get_db_rel_and_slot_infos() to the
dedicated >= v17 section in check_and_dump_old_cluster().
We may be able to make similar improvements to
get_old_cluster_logical_slot_infos(), but that is left as a future
exercise.
Reviewed-by: Michael Paquier, Amit Kapila
Discussion: https://postgr.es/m/ZprQJv_TxccN3tkr%40nathan
Backpatch-through: 17
Diffstat (limited to 'src/backend/utils/adt/xml.c')
0 files changed, 0 insertions, 0 deletions