remove unread data limit from PeekableReadBuffer

This commit is contained in:
Alexander Tokmakov 2021-01-12 21:55:12 +03:00
parent 163be41718
commit 111f4d49e3
2 changed files with 3 additions and 13 deletions

View File

@ -8,9 +8,8 @@ namespace ErrorCodes
extern const int LOGICAL_ERROR; extern const int LOGICAL_ERROR;
} }
PeekableReadBuffer::PeekableReadBuffer(ReadBuffer & sub_buf_, size_t start_size_ /*= DBMS_DEFAULT_BUFFER_SIZE*/, PeekableReadBuffer::PeekableReadBuffer(ReadBuffer & sub_buf_, size_t start_size_ /*= DBMS_DEFAULT_BUFFER_SIZE*/)
size_t unread_limit_ /* = default_limit*/) : BufferWithOwnMemory(start_size_), sub_buf(sub_buf_)
: BufferWithOwnMemory(start_size_), sub_buf(sub_buf_), unread_limit(unread_limit_)
{ {
padded &= sub_buf.isPadded(); padded &= sub_buf.isPadded();
/// Read from sub-buffer /// Read from sub-buffer
@ -191,8 +190,6 @@ void PeekableReadBuffer::checkStateCorrect() const
} }
if (currentlyReadFromOwnMemory() && !peeked_size) if (currentlyReadFromOwnMemory() && !peeked_size)
throw DB::Exception("Pos in empty own buffer", ErrorCodes::LOGICAL_ERROR); throw DB::Exception("Pos in empty own buffer", ErrorCodes::LOGICAL_ERROR);
if (unread_limit < memory.size())
throw DB::Exception("Size limit exceed", ErrorCodes::LOGICAL_ERROR);
} }
void PeekableReadBuffer::resizeOwnMemoryIfNecessary(size_t bytes_to_append) void PeekableReadBuffer::resizeOwnMemoryIfNecessary(size_t bytes_to_append)
@ -222,16 +219,11 @@ void PeekableReadBuffer::resizeOwnMemoryIfNecessary(size_t bytes_to_append)
} }
else else
{ {
if (unread_limit < new_size)
throw DB::Exception("PeekableReadBuffer: Memory limit exceed", ErrorCodes::MEMORY_LIMIT_EXCEEDED);
size_t pos_offset = pos - memory.data(); size_t pos_offset = pos - memory.data();
size_t new_size_amortized = memory.size() * 2; size_t new_size_amortized = memory.size() * 2;
if (new_size_amortized < new_size) if (new_size_amortized < new_size)
new_size_amortized = new_size; new_size_amortized = new_size;
else if (unread_limit < new_size_amortized)
new_size_amortized = unread_limit;
memory.resize(new_size_amortized); memory.resize(new_size_amortized);
if (need_update_checkpoint) if (need_update_checkpoint)

View File

@ -20,8 +20,7 @@ class PeekableReadBuffer : public BufferWithOwnMemory<ReadBuffer>
{ {
friend class PeekableReadBufferCheckpoint; friend class PeekableReadBufferCheckpoint;
public: public:
explicit PeekableReadBuffer(ReadBuffer & sub_buf_, size_t start_size_ = DBMS_DEFAULT_BUFFER_SIZE, explicit PeekableReadBuffer(ReadBuffer & sub_buf_, size_t start_size_ = DBMS_DEFAULT_BUFFER_SIZE);
size_t unread_limit_ = 16 * DBMS_DEFAULT_BUFFER_SIZE);
~PeekableReadBuffer() override; ~PeekableReadBuffer() override;
@ -95,7 +94,6 @@ private:
ReadBuffer & sub_buf; ReadBuffer & sub_buf;
const size_t unread_limit;
size_t peeked_size = 0; size_t peeked_size = 0;
Position checkpoint = nullptr; Position checkpoint = nullptr;
bool checkpoint_in_own_memory = false; bool checkpoint_in_own_memory = false;