aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-04-08 16:26:52 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-04-08 16:29:56 +0300
commit594041311c8263832258d35632aa3eebf9371fd1 (patch)
treecb31038427ccf566be838e17285ee01ef0e0a099 /src
parent5787c6730e7a848ef95d5c4194e27614ea8e6e41 (diff)
downloadpostgresql-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.c8
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)