resetxlog_bugfix_v1.patch
application/octet-stream
Filename: resetxlog_bugfix_v1.patch
Type: application/octet-stream
Part: 0
Message:
Re: WAL format changes
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
Series: patch v1
| File | + | − |
|---|---|---|
| src/bin/pg_resetxlog/pg_resetxlog.c | 22 | 0 |
*** a/src/bin/pg_resetxlog/pg_resetxlog.c
--- b/src/bin/pg_resetxlog/pg_resetxlog.c
***************
*** 86,94 **** main(int argc, char *argv[])
Oid set_oid = 0;
MultiXactId set_mxid = 0;
MultiXactOffset set_mxoff = (MultiXactOffset) -1;
! uint32 minXlogTli = 0;
XLogSegNo minXlogSegNo = 0;
char *endptr;
char *DataDir;
int fd;
char path[MAXPGPATH];
--- 86,98 ----
Oid set_oid = 0;
MultiXactId set_mxid = 0;
MultiXactOffset set_mxoff = (MultiXactOffset) -1;
! uint32 minXlogTli = 0,
! minXlogId = 0,
! minXlogSeg = 0;
XLogSegNo minXlogSegNo = 0;
char *endptr;
+ char *endptr2;
+ char *endptr3;
char *DataDir;
int fd;
char path[MAXPGPATH];
***************
*** 200,212 **** main(int argc, char *argv[])
break;
case 'l':
! if (strspn(optarg, "01234567890ABCDEFabcdef") != 24)
{
fprintf(stderr, _("%s: invalid argument for option -l\n"), progname);
fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(1);
}
! XLogFromFileName(optarg, &minXlogTli, &minXlogSegNo);
break;
default:
--- 204,231 ----
break;
case 'l':
! minXlogTli = strtoul(optarg, &endptr, 0);
! if (endptr == optarg || *endptr != ',')
{
fprintf(stderr, _("%s: invalid argument for option -l\n"), progname);
fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(1);
}
! minXlogId = strtoul(endptr + 1, &endptr2, 0);
! if (endptr2 == endptr + 1 || *endptr2 != ',')
! {
! fprintf(stderr, _("%s: invalid argument for option -l\n"), progname);
! fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
! exit(1);
! }
! minXlogSeg = strtoul(endptr2 + 1, &endptr3, 0);
! if (endptr3 == endptr2 + 1 || *endptr3 != '\0')
! {
! fprintf(stderr, _("%s: invalid argument for option -l\n"), progname);
! fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
! exit(1);
! }
! minXlogSegNo = (uint64) minXlogId * XLogSegmentsPerXLogId + minXlogSeg;
break;
default: