mirror of
https://github.com/postgres/postgres.git
synced 2025-05-05 09:19:17 +03:00
Fix logical decoding bug leading to inefficient reopening of files.
When spilling transaction data to disk a simple typo caused the output file to be closed and reopened for every serialized change. That happens to not have a huge impact on linux, which is why it probably wasn't noticed so far, but on windows that appears to trigger actual disk writes after every change. Not fun. The bug fortunately does not have any impact besides speed. A change could end up being in the wrong segment (last instead of next), but since we read all files to the end, that's just ugly, not really problematic. It's not a problem to upgrade, since transaction spill files do not persist across restarts. Bug: #13484 Reported-By: Olivier Gosseaume Discussion: 20150703090217.1190.63940@wrigleys.postgresql.org Backpatch to 9.4, where logical decoding was added.
This commit is contained in:
parent
8022b0a35f
commit
cf051c4f9d
@ -2009,7 +2009,7 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
|||||||
* store in segment in which it belongs by start lsn, don't split over
|
* store in segment in which it belongs by start lsn, don't split over
|
||||||
* multiple segments tho
|
* multiple segments tho
|
||||||
*/
|
*/
|
||||||
if (fd == -1 || XLByteInSeg(change->lsn, curOpenSegNo))
|
if (fd == -1 || !XLByteInSeg(change->lsn, curOpenSegNo))
|
||||||
{
|
{
|
||||||
XLogRecPtr recptr;
|
XLogRecPtr recptr;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user