mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +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:
@@ -72,8 +72,11 @@ START_REPLICATION { return K_START_REPLICATION; }
|
||||
" " ;
|
||||
|
||||
{hexdigit}+\/{hexdigit}+ {
|
||||
if (sscanf(yytext, "%X/%X", &yylval.recptr.xlogid, &yylval.recptr.xrecoff) != 2)
|
||||
uint32 hi,
|
||||
lo;
|
||||
if (sscanf(yytext, "%X/%X", &hi, &lo) != 2)
|
||||
yyerror("invalid streaming start location");
|
||||
yylval.recptr = ((uint64) hi) << 32 | lo;
|
||||
return RECPTR;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user