mirror of
https://github.com/postgres/postgres.git
synced 2025-04-29 13:56:47 +03:00
Fix LZ4 tests for remaining buffer space.
We should flush the buffer when the remaining space is less than the maximum amount that we might need, not when it is less than or equal to the maximum amount we might need. Jeevan Ladhe, per an observation from me. Discussion: http://postgr.es/m/CANm22CgVMa85O1akgs+DOPE8NSrT1zbz5_vYfS83_r+6nCivLQ@mail.gmail.com
This commit is contained in:
parent
7cf085f077
commit
1d4be6be65
@ -193,7 +193,7 @@ bbsink_lz4_archive_contents(bbsink *sink, size_t avail_in)
|
|||||||
* LZ4F_compressBound(), ask the next sink to process the data so that we
|
* LZ4F_compressBound(), ask the next sink to process the data so that we
|
||||||
* can empty the buffer.
|
* can empty the buffer.
|
||||||
*/
|
*/
|
||||||
if ((mysink->base.bbs_next->bbs_buffer_length - mysink->bytes_written) <=
|
if ((mysink->base.bbs_next->bbs_buffer_length - mysink->bytes_written) <
|
||||||
avail_in_bound)
|
avail_in_bound)
|
||||||
{
|
{
|
||||||
bbsink_archive_contents(sink->bbs_next, mysink->bytes_written);
|
bbsink_archive_contents(sink->bbs_next, mysink->bytes_written);
|
||||||
@ -238,7 +238,7 @@ bbsink_lz4_end_archive(bbsink *sink)
|
|||||||
|
|
||||||
Assert(mysink->base.bbs_next->bbs_buffer_length >= lz4_footer_bound);
|
Assert(mysink->base.bbs_next->bbs_buffer_length >= lz4_footer_bound);
|
||||||
|
|
||||||
if ((mysink->base.bbs_next->bbs_buffer_length - mysink->bytes_written) <=
|
if ((mysink->base.bbs_next->bbs_buffer_length - mysink->bytes_written) <
|
||||||
lz4_footer_bound)
|
lz4_footer_bound)
|
||||||
{
|
{
|
||||||
bbsink_archive_contents(sink->bbs_next, mysink->bytes_written);
|
bbsink_archive_contents(sink->bbs_next, mysink->bytes_written);
|
||||||
|
@ -99,7 +99,7 @@ bbstreamer_lz4_compressor_new(bbstreamer *next, int compresslevel)
|
|||||||
compressed_bound = LZ4F_compressBound(streamer->base.bbs_buffer.maxlen, prefs);
|
compressed_bound = LZ4F_compressBound(streamer->base.bbs_buffer.maxlen, prefs);
|
||||||
|
|
||||||
/* Enlarge buffer if it falls short of compression bound. */
|
/* Enlarge buffer if it falls short of compression bound. */
|
||||||
if (streamer->base.bbs_buffer.maxlen <= compressed_bound)
|
if (streamer->base.bbs_buffer.maxlen < compressed_bound)
|
||||||
enlargeStringInfo(&streamer->base.bbs_buffer, compressed_bound);
|
enlargeStringInfo(&streamer->base.bbs_buffer, compressed_bound);
|
||||||
|
|
||||||
ctxError = LZ4F_createCompressionContext(&streamer->cctx, LZ4F_VERSION);
|
ctxError = LZ4F_createCompressionContext(&streamer->cctx, LZ4F_VERSION);
|
||||||
@ -170,7 +170,7 @@ bbstreamer_lz4_compressor_content(bbstreamer *streamer,
|
|||||||
*/
|
*/
|
||||||
out_bound = LZ4F_compressBound(len, &mystreamer->prefs);
|
out_bound = LZ4F_compressBound(len, &mystreamer->prefs);
|
||||||
Assert(mystreamer->base.bbs_buffer.maxlen >= out_bound);
|
Assert(mystreamer->base.bbs_buffer.maxlen >= out_bound);
|
||||||
if (avail_out <= out_bound)
|
if (avail_out < out_bound)
|
||||||
{
|
{
|
||||||
bbstreamer_content(mystreamer->base.bbs_next, member,
|
bbstreamer_content(mystreamer->base.bbs_next, member,
|
||||||
mystreamer->base.bbs_buffer.data,
|
mystreamer->base.bbs_buffer.data,
|
||||||
@ -218,7 +218,7 @@ bbstreamer_lz4_compressor_finalize(bbstreamer *streamer)
|
|||||||
/* Find out the footer bound and update the output buffer. */
|
/* Find out the footer bound and update the output buffer. */
|
||||||
footer_bound = LZ4F_compressBound(0, &mystreamer->prefs);
|
footer_bound = LZ4F_compressBound(0, &mystreamer->prefs);
|
||||||
Assert(mystreamer->base.bbs_buffer.maxlen >= footer_bound);
|
Assert(mystreamer->base.bbs_buffer.maxlen >= footer_bound);
|
||||||
if ((mystreamer->base.bbs_buffer.maxlen - mystreamer->bytes_written) <=
|
if ((mystreamer->base.bbs_buffer.maxlen - mystreamer->bytes_written) <
|
||||||
footer_bound)
|
footer_bound)
|
||||||
{
|
{
|
||||||
bbstreamer_content(mystreamer->base.bbs_next, NULL,
|
bbstreamer_content(mystreamer->base.bbs_next, NULL,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user