Skip to content

Commit f9b622e

Browse files
author
Maksim Milyutin
committed
Fix xid format for 32-bit systems
1 parent 7618b10 commit f9b622e

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

src/backend/bootstrap/bootstrap.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,14 +250,14 @@ AuxiliaryProcessMain(int argc, char *argv[])
250250
bootstrap_data_checksum_version = PG_DATA_CHECKSUM_VERSION;
251251
break;
252252
case 'm':
253-
if (sscanf(optarg, "%lx", &start_mx_id) != 1)
253+
if (sscanf(optarg, HEX_XID_FMT, &start_mx_id) != 1)
254254
{
255255
fprintf(stderr, "%s: invalid hex value of multixact-id\n", progname);
256256
exit(1);
257257
}
258258
break;
259259
case 'o':
260-
if (sscanf(optarg, "%ld", &start_mx_offset) != 1)
260+
if (sscanf(optarg, XID_FMT, &start_mx_offset) != 1)
261261
{
262262
fprintf(stderr, "%s: invalid decimal value of multixact-offset\n", progname);
263263
exit(1);
@@ -267,7 +267,7 @@ AuxiliaryProcessMain(int argc, char *argv[])
267267
strlcpy(OutputFileName, optarg, MAXPGPATH);
268268
break;
269269
case 'X':
270-
if (sscanf(optarg, "%lx", &start_xid) != 1)
270+
if (sscanf(optarg, HEX_XID_FMT, &start_xid) != 1)
271271
{
272272
fprintf(stderr, "%s: invalid hex value of xid\n", progname);
273273
exit(1);

src/bin/initdb/initdb.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1538,7 +1538,7 @@ bootstrap_template1(void)
15381538
unsetenv("PGCLIENTENCODING");
15391539

15401540
snprintf(cmd, sizeof(cmd),
1541-
"\"%s\" --boot -x1 %s %s %lx %s %lx %s %ld %s %s",
1541+
"\"%s\" --boot -x1 %s %s " HEX_XID_FMT " %s " HEX_XID_FMT " %s " XID_FMT " %s %s",
15421542
backend_exec,
15431543
data_checksums ? "-k" : "",
15441544
"-X", start_xid,
@@ -3469,7 +3469,7 @@ main(int argc, char *argv[])
34693469
printf(_("Running in debug mode.\n"));
34703470
break;
34713471
case 'm':
3472-
if (sscanf(optarg, "%lx", &start_mx_id) != 1)
3472+
if (sscanf(optarg, HEX_XID_FMT, &start_mx_id) != 1)
34733473
{
34743474
fprintf(stderr, "%s: invalid hex value of multixact-id\n", progname);
34753475
exit(1);
@@ -3483,7 +3483,7 @@ main(int argc, char *argv[])
34833483
do_sync = false;
34843484
break;
34853485
case 'o':
3486-
if (sscanf(optarg, "%ld", &start_mx_offset) != 1)
3486+
if (sscanf(optarg, XID_FMT, &start_mx_offset) != 1)
34873487
{
34883488
fprintf(stderr, "%s: invalid decimal value of multixact-offset\n", progname);
34893489
exit(1);
@@ -3535,7 +3535,7 @@ main(int argc, char *argv[])
35353535
xlog_dir = pg_strdup(optarg);
35363536
break;
35373537
case 'x':
3538-
if (sscanf(optarg, "%lx", &start_xid) != 1)
3538+
if (sscanf(optarg, HEX_XID_FMT, &start_xid) != 1)
35393539
{
35403540
fprintf(stderr, "%s: invalid hex value of xid\n", progname);
35413541
exit(1);

src/include/c.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ typedef uint64 SubTransactionId;
407407
#define TopSubTransactionId ((SubTransactionId) 1)
408408

409409
#define XID_FMT UINT64_FORMAT
410+
#define HEX_XID_FMT "%" INT64_MODIFIER "x"
410411

411412
/* MultiXactId must be equivalent to TransactionId, to fit in t_xmax */
412413
typedef TransactionId MultiXactId;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy