Don't create "holes" in BufFiles, in the new logtape code.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 1 Feb 2017 10:17:38 +0000 (12:17 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 1 Feb 2017 10:17:38 +0000 (12:17 +0200)
commit7ac4a389a7dbddaa8b19deb228f0a988e79c5795
tree0dab2a409a30add40cb3b3e527b91c8ff54b0be6
parentbc1686f3f653d30847736f2b71d694b98ba5c31d
Don't create "holes" in BufFiles, in the new logtape code.

The "Simplify tape block format" commit ignored the rule that blocks
returned by ltsGetFreeBlock() must be written out in the same order, at
least in the first write pass. To fix, relax that requirement, by making
ltsWriteBlock() to detect if it's about to create a "hole" in the
underlying BufFile, and fill it with zeros instead.

Reported, analysed, and reviewed by Peter Geoghegan.

Discussion: https://www.postgresql.org/message-id/CAM3SWZRWdNtkhiG0GyiX_1mUAypiK3dV6-6542pYe2iEL-foTA@mail.gmail.com
src/backend/utils/sort/logtape.c