On Mon, Mar 10, 2025 at 2:24 PM Mahendra Singh Thalor <mahi6...@gmail.com> wrote: > > Hi, > (refer file src/bin/pg_dump/pg_backup_utils.c) > > While doing some code changes with pg_dumpall and pg_rsetore[1], we noticed > that on_exit_nicely_list array has only fixed slots (MAX_ON_EXIT_NICELY=20) > but in some cases, we need more slots for pg_restore. > Ex: restore more than 20 databases by single pg_restore command. > > We are working on a patch[1] which dumps all the databases in non-text mode > by pg_dumpall and then we are restoring those dumps by pg_restore. So we need > more slots due to multiple databases. > > Apart from the attached patch solution, we thought of some more solutions. > Solution 1: reset array index with each database restore, but this might > break some other things. > Solution 2: for each database, we can keep the index of the > on_exit_nicely_list array and after restoring a particular database we can > reset the index to old value but this looks like a hack. > > Here, I am proposing a patch which will dynamically enlarge the > on_exit_nicely_list array by doubling the previous size. > > Thoughts?
This reply might belong in another thread, but since you raised the issue here, instead of registering multiple functions with exit_nicely, why not modify the argument of the exit function (archive_close_connection()) to handle multiple arguments? In short, you could change ShutdownInformation[1] so that, instead of holding a single "Archive," it holds a list, allowing you to append different Archive handles to the list. [1] typedef struct ShutdownInformation { ParallelState *pstate; Archive *AHX; -> change this to List of Archive* } ShutdownInformation; -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com