logtape.c: allocate read buffer even for an empty tape.
authorJeff Davis <jdavis@postgresql.org>
Tue, 18 Feb 2020 20:31:24 +0000 (12:31 -0800)
committerJeff Davis <jdavis@postgresql.org>
Wed, 19 Feb 2020 18:04:17 +0000 (10:04 -0800)
commit8021985d791902a9eeda51acdede759fbc67ae01
tree07b22b50547a244639d0309b515f637bd72c2545
parent007491979461ff10d487e1da9bcc87f2fd834f26
logtape.c: allocate read buffer even for an empty tape.

Prior to this commit, the read buffer was allocated at the time the tape
was rewound; but as an optimization, would not be allocated at all if
the tape was empty.

That optimization meant that it was valid to have a rewound tape with
the buffer set to NULL, but only if a number of conditions were met
and only if the API was used properly. After 7fdd919a refactored the
code to support lazily-allocating the buffer, Coverity started
complaining.

The optimization for empty tapes doesn't seem important, so just
allocate the buffer whether the tape has any data or not.

Discussion: https://postgr.es/m/20351.1581868306%40sss.pgh.pa.us
src/backend/utils/sort/logtape.c