0001-pg_ctl-and-miscinit-change-type-of-MyStartTime.patch
text/x-patch
Filename: 0001-pg_ctl-and-miscinit-change-type-of-MyStartTime.patch
Type: text/x-patch
Part: 0
Patch
Format: format-patch
Series: patch 0001
Subject: pg_ctl and miscinit: change type of MyStartTime
| File | + | − |
|---|---|---|
| src/backend/utils/init/miscinit.c | 2 | 2 |
| src/bin/pg_ctl/pg_ctl.c | 1 | 1 |
From 70ec929f971577e3a78ab32d15b631954286aaf7 Mon Sep 17 00:00:00 2001 From: Max Johnson <max.johnson@novatechautomation.com> Date: Mon, 23 Sep 2024 13:41:43 -0500 Subject: [PATCH] pg_ctl and miscinit: change type of MyStartTime The start time variable needs to be 64 bits wide on all platforms in order to support dates past 01/19/2038. This patch fixes an overflow error on the start time in "postmaster.pid", which can cause pg_ctl to hang. Change the value of "MyStartTime" to long long. Signed-off-by: Max Johnson <max.johnson@novatechautomation.com> --- src/backend/utils/init/miscinit.c | 4 ++-- src/bin/pg_ctl/pg_ctl.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index 1f0b3175ae..8669e95817 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -1205,10 +1205,10 @@ CreateLockFile(const char *filename, bool amPostmaster, * both datadir and socket lockfiles; although more stuff may get added to * the datadir lockfile later. */ - snprintf(buffer, sizeof(buffer), "%d\n%s\n%ld\n%d\n%s\n", + snprintf(buffer, sizeof(buffer), "%d\n%s\n%lld\n%d\n%s\n", amPostmaster ? (int) my_pid : -((int) my_pid), DataDir, - (long) MyStartTime, + (long long) MyStartTime, PostPortNumber, socketDir); diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index f9e0ee4eee..e138c5b236 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -624,7 +624,7 @@ wait_for_postmaster_start(pgpid_t pm_pid, bool do_checkpoint) * Allow 2 seconds slop for possible cross-process clock skew. */ pmpid = atol(optlines[LOCK_FILE_LINE_PID - 1]); - pmstart = atol(optlines[LOCK_FILE_LINE_START_TIME - 1]); + pmstart = atoll(optlines[LOCK_FILE_LINE_START_TIME - 1]); if (pmstart >= start_time - 2 && #ifndef WIN32 pmpid == pm_pid -- 2.34.1