diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-04-08 16:26:52 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-04-08 16:29:56 +0300 |
commit | 594041311c8263832258d35632aa3eebf9371fd1 (patch) | |
tree | cb31038427ccf566be838e17285ee01ef0e0a099 /src | |
parent | 5787c6730e7a848ef95d5c4194e27614ea8e6e41 (diff) | |
download | postgresql-594041311c8263832258d35632aa3eebf9371fd1.tar.gz postgresql-594041311c8263832258d35632aa3eebf9371fd1.zip |
Fix calculation of how many segments to retain for wal_keep_segments.
KeepLogSeg function was broken when we switched to use a 64-bit int for the
segment number.
Per report from Jeff Janes.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/transam/xlog.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 25b2ff9d03b..3cb866f5306 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7523,9 +7523,9 @@ CreateRestartPoint(int flags) } /* - * Calculate the last segment that we need to retain because of - * wal_keep_segments, by subtracting wal_keep_segments from - * the given xlog location, recptr. + * Retreat *logSegNo to the last segment that we need to retain because of + * wal_keep_segments. This is calculated by subtracting wal_keep_segments + * from the given xlog location, recptr. */ static void KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo) @@ -7541,7 +7541,7 @@ KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo) if (segno <= wal_keep_segments) segno = 1; else - segno = *logSegNo - wal_keep_segments; + segno = segno - wal_keep_segments; /* don't delete WAL segments newer than the calculated segment */ if (segno < *logSegNo) |