mirror of
https://github.com/postgres/postgres.git
synced 2025-11-24 00:23:06 +03:00
modify segno. for pg_walfile_name() and pg_walfile_name_offset()
Previously these functions returned the previous segment number if the LSN was on a segment boundary. We now always return the current segment number for an LSN. Docs updated to reflect this change. Regression tests added, author Andres Freund. Also mentioned in thread https://postgr.es/m/flat/20220204225057.GA1535307%40nathanxps13#d964275c9540d8395e138efc0a75f7e8 BACKWARD INCOMPATIBILITY Reported-by: Kyotaro Horiguchi Discussion: https://postgr.es/m/20190726.172120.101752680.horikyota.ntt@gmail.com Co-authored-by: Kyotaro Horiguchi Backpatch-through: master
This commit is contained in:
@@ -374,10 +374,6 @@ pg_last_wal_replay_lsn(PG_FUNCTION_ARGS)
|
||||
/*
|
||||
* Compute an xlog file name and decimal byte offset given a WAL location,
|
||||
* such as is returned by pg_backup_stop() or pg_switch_wal().
|
||||
*
|
||||
* Note that a location exactly at a segment boundary is taken to be in
|
||||
* the previous segment. This is usually the right thing, since the
|
||||
* expected usage is to determine which xlog file(s) are ready to archive.
|
||||
*/
|
||||
Datum
|
||||
pg_walfile_name_offset(PG_FUNCTION_ARGS)
|
||||
@@ -414,7 +410,7 @@ pg_walfile_name_offset(PG_FUNCTION_ARGS)
|
||||
/*
|
||||
* xlogfilename
|
||||
*/
|
||||
XLByteToPrevSeg(locationpoint, xlogsegno, wal_segment_size);
|
||||
XLByteToSeg(locationpoint, xlogsegno, wal_segment_size);
|
||||
XLogFileName(xlogfilename, GetWALInsertionTimeLine(), xlogsegno,
|
||||
wal_segment_size);
|
||||
|
||||
@@ -457,7 +453,7 @@ pg_walfile_name(PG_FUNCTION_ARGS)
|
||||
errhint("%s cannot be executed during recovery.",
|
||||
"pg_walfile_name()")));
|
||||
|
||||
XLByteToPrevSeg(locationpoint, xlogsegno, wal_segment_size);
|
||||
XLByteToSeg(locationpoint, xlogsegno, wal_segment_size);
|
||||
XLogFileName(xlogfilename, GetWALInsertionTimeLine(), xlogsegno,
|
||||
wal_segment_size);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user