diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2014-05-05 16:14:41 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2014-05-05 16:15:25 +0300 |
commit | 1460b199e6e748712253fa130d1c3368ba6ac861 (patch) | |
tree | a06fb2d3e210b975a237392feca6b616a0156166 /src | |
parent | a692ee5870f0f442565b4c4bff367094599e9bdf (diff) | |
download | postgresql-1460b199e6e748712253fa130d1c3368ba6ac861.tar.gz postgresql-1460b199e6e748712253fa130d1c3368ba6ac861.zip |
Assert that pre/post-fix updated tuples are on the same page during replay.
If they were not 'oldtup.t_data' would be dereferenced while set to NULL
in case of a full page image for block 0.
Do so primarily to silence coverity; but also to make sure this prerequisite
isn't changed without adapting the replay routine as that would appear to
work in many cases.
Andres Freund
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/heap/heapam.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index a04763207f0..336fbb06dac 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8115,11 +8115,13 @@ newsame:; if (xlrec->flags & XLOG_HEAP_PREFIX_FROM_OLD) { + Assert(samepage); memcpy(&prefixlen, recdata, sizeof(uint16)); recdata += sizeof(uint16); } if (xlrec->flags & XLOG_HEAP_SUFFIX_FROM_OLD) { + Assert(samepage); memcpy(&suffixlen, recdata, sizeof(uint16)); recdata += sizeof(uint16); } |