mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Replace XLogRecPtr struct with a 64-bit integer.
This simplifies code that needs to do arithmetic on XLogRecPtrs. To avoid changing on-disk format of data pages, the LSN on data pages is still stored in the old format. That should keep pg_upgrade happy. However, we have XLogRecPtrs embedded in the control file, and in the structs that are sent over the replication protocol, so this changes breaks compatibility of pg_basebackup and server. I didn't do anything about this in this patch, per discussion on -hackers, the right thing to do would to be to change the replication protocol to be architecture-independent, so that you could use a newer version of pg_receivexlog, for example, against an older server version.
This commit is contained in:
@@ -145,7 +145,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
|
||||
new_status = (char *) palloc(len + 32 + 1);
|
||||
memcpy(new_status, old_status, len);
|
||||
sprintf(new_status + len, " waiting for %X/%X",
|
||||
XactCommitLSN.xlogid, XactCommitLSN.xrecoff);
|
||||
(uint32) (XactCommitLSN >> 32), (uint32) XactCommitLSN);
|
||||
set_ps_display(new_status, false);
|
||||
new_status[len] = '\0'; /* truncate off " waiting ..." */
|
||||
}
|
||||
@@ -255,8 +255,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
|
||||
*/
|
||||
Assert(SHMQueueIsDetached(&(MyProc->syncRepLinks)));
|
||||
MyProc->syncRepState = SYNC_REP_NOT_WAITING;
|
||||
MyProc->waitLSN.xlogid = 0;
|
||||
MyProc->waitLSN.xrecoff = 0;
|
||||
MyProc->waitLSN = 0;
|
||||
|
||||
if (new_status)
|
||||
{
|
||||
@@ -440,12 +439,8 @@ SyncRepReleaseWaiters(void)
|
||||
LWLockRelease(SyncRepLock);
|
||||
|
||||
elog(DEBUG3, "released %d procs up to write %X/%X, %d procs up to flush %X/%X",
|
||||
numwrite,
|
||||
MyWalSnd->write.xlogid,
|
||||
MyWalSnd->write.xrecoff,
|
||||
numflush,
|
||||
MyWalSnd->flush.xlogid,
|
||||
MyWalSnd->flush.xrecoff);
|
||||
numwrite, (uint32) (MyWalSnd->write >> 32), (uint32) MyWalSnd->write,
|
||||
numflush, (uint32) (MyWalSnd->flush >> 32), (uint32) MyWalSnd->flush);
|
||||
|
||||
/*
|
||||
* If we are managing the highest priority standby, though we weren't
|
||||
@@ -630,8 +625,7 @@ SyncRepQueueIsOrderedByLSN(int mode)
|
||||
|
||||
Assert(mode >= 0 && mode < NUM_SYNC_REP_WAIT_MODE);
|
||||
|
||||
lastLSN.xlogid = 0;
|
||||
lastLSN.xrecoff = 0;
|
||||
lastLSN = 0;
|
||||
|
||||
proc = (PGPROC *) SHMQueueNext(&(WalSndCtl->SyncRepQueue[mode]),
|
||||
&(WalSndCtl->SyncRepQueue[mode]),
|
||||
|
||||
Reference in New Issue
Block a user