mirror of
https://github.com/postgres/postgres.git
synced 2025-06-18 00:02:37 -04:00
pg_upgrade: preserve the timestamp epoch
This is useful for replication tools like Slony and Skytools. This is a backpatch of a74a4aa23bb95b590ff01ee564219d2eacea3706. Report by Sergey Konoplev Backpatch through 9.3
This commit is contained in:
parent
bca91236a7
commit
5724f491d2
@ -234,16 +234,20 @@ get_control_data(ClusterInfo *cluster, bool live_check)
|
||||
}
|
||||
else if ((p = strstr(bufin, "Latest checkpoint's NextXID:")) != NULL)
|
||||
{
|
||||
char *op = strchr(p, '/');
|
||||
p = strchr(p, ':');
|
||||
|
||||
if (op == NULL)
|
||||
op = strchr(p, ':');
|
||||
|
||||
if (op == NULL || strlen(op) <= 1)
|
||||
if (p == NULL || strlen(p) <= 1)
|
||||
pg_log(PG_FATAL, "%d: controldata retrieval problem\n", __LINE__);
|
||||
|
||||
op++; /* removing ':' char */
|
||||
cluster->controldata.chkpnt_nxtxid = str2uint(op);
|
||||
p++; /* removing ':' char */
|
||||
cluster->controldata.chkpnt_nxtepoch = str2uint(p);
|
||||
|
||||
p = strchr(p, '/');
|
||||
if (p == NULL || strlen(p) <= 1)
|
||||
pg_log(PG_FATAL, "%d: controldata retrieval problem\n", __LINE__);
|
||||
|
||||
p++; /* removing '/' char */
|
||||
cluster->controldata.chkpnt_nxtxid = str2uint(p);
|
||||
got_xid = true;
|
||||
}
|
||||
else if ((p = strstr(bufin, "Latest checkpoint's NextOID:")) != NULL)
|
||||
|
@ -423,12 +423,16 @@ copy_clog_xlog_xid(void)
|
||||
/* copy old commit logs to new data dir */
|
||||
copy_subdir_files("pg_clog");
|
||||
|
||||
/* set the next transaction id of the new cluster */
|
||||
prep_status("Setting next transaction ID for new cluster");
|
||||
/* set the next transaction id and epoch of the new cluster */
|
||||
prep_status("Setting next transaction ID and epoch for new cluster");
|
||||
exec_prog(UTILITY_LOG_FILE, NULL, true,
|
||||
"\"%s/pg_resetxlog\" -f -x %u \"%s\"",
|
||||
new_cluster.bindir, old_cluster.controldata.chkpnt_nxtxid,
|
||||
new_cluster.pgdata);
|
||||
exec_prog(UTILITY_LOG_FILE, NULL, true,
|
||||
"\"%s/pg_resetxlog\" -f -e %u \"%s\"",
|
||||
new_cluster.bindir, old_cluster.controldata.chkpnt_nxtepoch,
|
||||
new_cluster.pgdata);
|
||||
check_ok();
|
||||
|
||||
/*
|
||||
|
@ -188,6 +188,7 @@ typedef struct
|
||||
char nextxlogfile[25];
|
||||
uint32 chkpnt_tli;
|
||||
uint32 chkpnt_nxtxid;
|
||||
uint32 chkpnt_nxtepoch;
|
||||
uint32 chkpnt_nxtoid;
|
||||
uint32 chkpnt_nxtmulti;
|
||||
uint32 chkpnt_nxtmxoff;
|
||||
|
Loading…
x
Reference in New Issue
Block a user