Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sxtEO-00D299-1J for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Oct 2024 19:17:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sxtEL-00F2jo-Qc for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Oct 2024 19:17:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sxtEL-00F2ha-7l for pgsql-hackers@lists.postgresql.org; Mon, 07 Oct 2024 19:17:17 +0000 Received: from mail-qk1-x732.google.com ([2607:f8b0:4864:20::732]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sxtEE-00305e-Ni for pgsql-hackers@postgresql.org; Mon, 07 Oct 2024 19:17:16 +0000 Received: by mail-qk1-x732.google.com with SMTP id af79cd13be357-7ae6f89502bso392038785a.3 for ; Mon, 07 Oct 2024 12:17:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728328629; x=1728933429; darn=postgresql.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=tKhLcPQuPQgajL1w2Y8DKipWqlalWLMFE1/Mo2ovcds=; b=APhSoW3tNRZgCTKY5wFMoK8qndB2WenvxZikfpMzJD3jwZ+LYSXf/3V1+rnAmUICcD 3sbNcoZ+ILrZAb9bMh1XlfY2TA88QgFaW6vvbRmn259pDjEgAekytBKmDeb9smlAYD7A CacZEw4w7X+jJEIlFitn4yQyu2lBrfn96M89A9N2qX0WNUbv3jyDj7plU5+5UTirc1y7 j6HG/ZrQsOc52/aCllVbKt1WsnCV7Q2YcdKT1VF/8EXh0B759/a87mbP8tVIAS+XuIlX fa0Y/cEfJso10Fb9eTSUhtxdmJDpkOGjbhuTIdcIpO6PtLU5AFba5f01HjxcMP9jNdBp LlgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728328629; x=1728933429; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=tKhLcPQuPQgajL1w2Y8DKipWqlalWLMFE1/Mo2ovcds=; b=MSU3uTAtTfzh5p/zgmOh0gaqfE8PQvS8EE2/6Qb8CCY7enKmX8Mncz33xMW5cqGHTS V5XaK8MkRvKw/149pEDW59HBWFTv/dJU4fz+aFyaagAOrcoez9cPuQzyMr7SPYHZL3t0 dEYJop+6Q06RCjHg0/UCPcWSYasKEQ9azWJIV56i/0Sc9gmm1hPMBCIKEnLtIXQ8DBBw xkt/r3PekxJTaNn6nGZlbiG3tc5uCJV1BeSK7YuDe2WdYzRmYrqoTtiyNMT95rNBLdNx fN3fnh6m/OkFOQQV/iKJ2RibKUP0tXZdl1OQMRu/Ix+MUoAdp/ca96xYOgykRNpizRue dBAw== X-Forwarded-Encrypted: i=1; AJvYcCWA+1nWM9FJNRfnOvSpIWNcpNx8B99x5CItM+NC1hl6XaHDuoFi1M1VCQMmnLLnokFcOaeEd/rh2S0tILqD@postgresql.org X-Gm-Message-State: AOJu0Yz/A0FD6dMGX5GA0276jbtN/riRB5WP8faMYpLe++Fq4fCtq7ap FxLv8rIop+N5l1oTNkt3hcFjtmAVJVvD9G1ctIAUjsxPgAMsinpV X-Google-Smtp-Source: AGHT+IHdgAoemqCBnVWwsAM8GzUNj4XPA5hpT+htJIc/ftiWqlJRerZ4TLAKk8OFuaXQAGdm3Olsnw== X-Received: by 2002:a05:620a:1794:b0:7a9:bf33:c174 with SMTP id af79cd13be357-7ae6f444b0fmr1782674285a.16.1728328629042; Mon, 07 Oct 2024 12:17:09 -0700 (PDT) Received: from nathan (162-195-168-172.lightspeed.stlsmo.sbcglobal.net. [162.195.168.172]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7ae75615905sm284416085a.11.2024.10.07.12.17.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2024 12:17:08 -0700 (PDT) Date: Mon, 7 Oct 2024 14:17:06 -0500 From: Nathan Bossart To: Max Johnson Cc: Tom Lane , "pgsql-hackers@postgresql.org" Subject: Re: pg_ctl/miscinit: print "MyStartTime" as a long long instead of long to avoid 2038 problem. Message-ID: References: <3486094.1727210681@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="cDH9UBp3lcFOgiue" Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --cDH9UBp3lcFOgiue Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Oct 07, 2024 at 02:00:05PM -0500, Nathan Bossart wrote: > I refrained from introducing INT64_HEX_FORMAT/UINT64_HEX_FORMAT in c.h > because I felt there was a nonzero chance of that causing problems with > third-party code on the back-branches. We could probably add them for v18, > though. Like so... -- nathan --cDH9UBp3lcFOgiue Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-add-INT64_HEX_FORMAT-and-UINT64_HEX_FORMAT.patch" From 03f7536acd06b91e6891ccfc86470a5a51b45736 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Mon, 7 Oct 2024 14:16:07 -0500 Subject: [PATCH 1/1] add INT64_HEX_FORMAT and UINT64_HEX_FORMAT --- contrib/postgres_fdw/option.c | 2 +- src/backend/utils/error/csvlog.c | 2 +- src/backend/utils/error/elog.c | 4 ++-- src/backend/utils/error/jsonlog.c | 2 +- src/include/c.h | 2 ++ src/test/modules/test_radixtree/test_radixtree.c | 2 -- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contrib/postgres_fdw/option.c b/contrib/postgres_fdw/option.c index d740893918..9a6785720d 100644 --- a/contrib/postgres_fdw/option.c +++ b/contrib/postgres_fdw/option.c @@ -522,7 +522,7 @@ process_pgfdw_appname(const char *appname) appendStringInfoString(&buf, application_name); break; case 'c': - appendStringInfo(&buf, "%" INT64_MODIFIER "x.%x", MyStartTime, MyProcPid); + appendStringInfo(&buf, INT64_HEX_FORMAT ".%x", MyStartTime, MyProcPid); break; case 'C': appendStringInfoString(&buf, cluster_name); diff --git a/src/backend/utils/error/csvlog.c b/src/backend/utils/error/csvlog.c index eab8df3fcc..acdffb6d06 100644 --- a/src/backend/utils/error/csvlog.c +++ b/src/backend/utils/error/csvlog.c @@ -120,7 +120,7 @@ write_csvlog(ErrorData *edata) appendStringInfoChar(&buf, ','); /* session id */ - appendStringInfo(&buf, "%" INT64_MODIFIER "x.%x", MyStartTime, MyProcPid); + appendStringInfo(&buf, INT64_HEX_FORMAT ".%x", MyStartTime, MyProcPid); appendStringInfoChar(&buf, ','); /* Line number */ diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 987ff98067..c71508c923 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -2944,12 +2944,12 @@ log_status_format(StringInfo buf, const char *format, ErrorData *edata) { char strfbuf[128]; - snprintf(strfbuf, sizeof(strfbuf) - 1, "%" INT64_MODIFIER "x.%x", + snprintf(strfbuf, sizeof(strfbuf) - 1, INT64_HEX_FORMAT ".%x", MyStartTime, MyProcPid); appendStringInfo(buf, "%*s", padding, strfbuf); } else - appendStringInfo(buf, "%" INT64_MODIFIER "x.%x", MyStartTime, MyProcPid); + appendStringInfo(buf, INT64_HEX_FORMAT ".%x", MyStartTime, MyProcPid); break; case 'p': if (padding != 0) diff --git a/src/backend/utils/error/jsonlog.c b/src/backend/utils/error/jsonlog.c index 2c7b14cacb..492383a89e 100644 --- a/src/backend/utils/error/jsonlog.c +++ b/src/backend/utils/error/jsonlog.c @@ -168,7 +168,7 @@ write_jsonlog(ErrorData *edata) } /* Session id */ - appendJSONKeyValueFmt(&buf, "session_id", true, "%" INT64_MODIFIER "x.%x", + appendJSONKeyValueFmt(&buf, "session_id", true, INT64_HEX_FORMAT ".%x", MyStartTime, MyProcPid); /* Line number */ diff --git a/src/include/c.h b/src/include/c.h index 3297d89ff0..9520b89b00 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -550,6 +550,8 @@ typedef unsigned long long int uint64; /* snprintf format strings to use for 64-bit integers */ #define INT64_FORMAT "%" INT64_MODIFIER "d" #define UINT64_FORMAT "%" INT64_MODIFIER "u" +#define INT64_HEX_FORMAT "%" INT64_MODIFIER "x" +#define UINT64_HEX_FORMAT "%" INT64_MODIFIER "x" /* * 128-bit signed and unsigned integers diff --git a/src/test/modules/test_radixtree/test_radixtree.c b/src/test/modules/test_radixtree/test_radixtree.c index 1d9165a3a2..3e6863f660 100644 --- a/src/test/modules/test_radixtree/test_radixtree.c +++ b/src/test/modules/test_radixtree/test_radixtree.c @@ -23,8 +23,6 @@ /* uncomment to use shared memory for the tree */ /* #define TEST_SHARED_RT */ -#define UINT64_HEX_FORMAT "%" INT64_MODIFIER "X" - /* Convenient macros to test results */ #define EXPECT_TRUE(expr) \ do { \ -- 2.39.5 (Apple Git-154) --cDH9UBp3lcFOgiue--