Increase size of bgw_library_name.
authorNathan Bossart <nathan@postgresql.org>
Mon, 3 Jul 2023 22:02:16 +0000 (15:02 -0700)
committerNathan Bossart <nathan@postgresql.org>
Mon, 3 Jul 2023 22:02:16 +0000 (15:02 -0700)
This commit increases the size of the bgw_library_name member of
the BackgroundWorker struct from BGW_MAXLEN (96) bytes to MAXPGPATH
(default of 1024) bytes so that it can store longer file names
(e.g., absolute paths).

Author: Yurii Rashkovskii
Reviewed-by: Daniel Gustafsson, Aleksander Alekseev
Discussion: https://postgr.es/m/CA%2BRLCQyjFV5Y8tG5QgUb6gjteL4S3p%2B1gcyqWTqigyM93WZ9Pg%40mail.gmail.com

doc/src/sgml/bgworker.sgml
src/backend/postmaster/bgworker.c
src/backend/replication/logical/launcher.c
src/include/postmaster/bgworker.h

index 7ba5da27e50a4c561d4d1d31f87a030af18fbf0b..9ad1146ba02609309b56b41008e7e3f6961fe469 100644 (file)
@@ -59,7 +59,7 @@ typedef struct BackgroundWorker
     int         bgw_flags;
     BgWorkerStartTime bgw_start_time;
     int         bgw_restart_time;       /* in seconds, or BGW_NEVER_RESTART */
-    char        bgw_library_name[BGW_MAXLEN];
+    char        bgw_library_name[MAXPGPATH];
     char        bgw_function_name[BGW_MAXLEN];
     Datum       bgw_main_arg;
     char        bgw_extra[BGW_EXTRALEN];
index 0dd22b23511a1fa13ac4e6bfeb80f21a18f7189f..5b4bd71694bffa9ef8ed6af287204c9486024559 100644 (file)
@@ -362,7 +362,7 @@ BackgroundWorkerStateChange(bool allow_new_workers)
                ascii_safe_strlcpy(rw->rw_worker.bgw_type,
                                                   slot->worker.bgw_type, BGW_MAXLEN);
                ascii_safe_strlcpy(rw->rw_worker.bgw_library_name,
-                                                  slot->worker.bgw_library_name, BGW_MAXLEN);
+                                                  slot->worker.bgw_library_name, MAXPGPATH);
                ascii_safe_strlcpy(rw->rw_worker.bgw_function_name,
                                                   slot->worker.bgw_function_name, BGW_MAXLEN);
 
index 8395ae7b23ce3df2181cbcf8ecb4033a9979aa43..542af7d863de14749f384331fbd7479b806b634f 100644 (file)
@@ -456,7 +456,7 @@ retry:
        bgw.bgw_flags = BGWORKER_SHMEM_ACCESS |
                BGWORKER_BACKEND_DATABASE_CONNECTION;
        bgw.bgw_start_time = BgWorkerStart_RecoveryFinished;
-       snprintf(bgw.bgw_library_name, BGW_MAXLEN, "postgres");
+       snprintf(bgw.bgw_library_name, MAXPGPATH, "postgres");
 
        if (is_parallel_apply_worker)
                snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ParallelApplyWorkerMain");
@@ -910,7 +910,7 @@ ApplyLauncherRegister(void)
        bgw.bgw_flags = BGWORKER_SHMEM_ACCESS |
                BGWORKER_BACKEND_DATABASE_CONNECTION;
        bgw.bgw_start_time = BgWorkerStart_RecoveryFinished;
-       snprintf(bgw.bgw_library_name, BGW_MAXLEN, "postgres");
+       snprintf(bgw.bgw_library_name, MAXPGPATH, "postgres");
        snprintf(bgw.bgw_function_name, BGW_MAXLEN, "ApplyLauncherMain");
        snprintf(bgw.bgw_name, BGW_MAXLEN,
                         "logical replication launcher");
index 845d4498e65dd33c1e911aa1e1d1b39e0fef3f67..7815507e3dc96996d83f745ec8752759592961fd 100644 (file)
@@ -93,7 +93,7 @@ typedef struct BackgroundWorker
        int                     bgw_flags;
        BgWorkerStartTime bgw_start_time;
        int                     bgw_restart_time;       /* in seconds, or BGW_NEVER_RESTART */
-       char            bgw_library_name[BGW_MAXLEN];
+       char            bgw_library_name[MAXPGPATH];
        char            bgw_function_name[BGW_MAXLEN];
        Datum           bgw_main_arg;
        char            bgw_extra[BGW_EXTRALEN];