Increase size of bgw_library_name.
authorNathan Bossart <[email protected]>
Mon, 3 Jul 2023 22:02:16 +0000 (15:02 -0700)
committerNathan Bossart <[email protected]>
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];