mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 09:10:48 +00:00
dbms: fixed counting in ReadBuffer [#CONV-2944].
This commit is contained in:
parent
55f686b861
commit
8997be7209
@ -25,17 +25,17 @@ namespace DB
|
||||
class ReadBuffer : public BufferBase
|
||||
{
|
||||
public:
|
||||
/** Создаёт буфер и устанавливает курсор на его конец,
|
||||
/** Создаёт буфер и устанавливает кусок доступных данных для чтения нулевого размера,
|
||||
* чтобы при первой попытке чтения вызвалась функция next() для загрузки в буфер новой порции данных.
|
||||
*/
|
||||
ReadBuffer(Position ptr, size_t size) : BufferBase(ptr, size, size) {}
|
||||
ReadBuffer(Position ptr, size_t size) : BufferBase(ptr, size, 0) { working_buffer.resize(0); }
|
||||
|
||||
/** Используется, если буфер уже заполнен данными, которые можно читать.
|
||||
* (в этом случае, передайте 0 в качестве offset)
|
||||
*/
|
||||
ReadBuffer(Position ptr, size_t size, size_t offset) : BufferBase(ptr, size, offset) {}
|
||||
|
||||
void set(Position ptr, size_t size) { BufferBase::set(ptr, size, size); }
|
||||
void set(Position ptr, size_t size) { BufferBase::set(ptr, size, 0); working_buffer.resize(0); }
|
||||
|
||||
/** прочитать следующие данные и заполнить ими буфер; переместить позицию в начало;
|
||||
* вернуть false в случае конца, true иначе; кинуть исключение, если что-то не так
|
||||
|
@ -19,7 +19,7 @@ private:
|
||||
|
||||
bool nextImpl()
|
||||
{
|
||||
istr.read(working_buffer.begin(), working_buffer.size());
|
||||
istr.read(internal_buffer.begin(), internal_buffer.size());
|
||||
size_t gcount = istr.gcount();
|
||||
|
||||
if (!gcount)
|
||||
|
@ -26,8 +26,8 @@ int main(int argc, char ** argv)
|
||||
Poco::Stopwatch stopwatch;
|
||||
|
||||
{
|
||||
DB::WriteBufferFromFile buf("test1");
|
||||
DB::CompressedWriteBuffer compressed_buf(buf, DB::CompressionMethod::LZ4);
|
||||
DB::WriteBufferFromFile buf("test1", DBMS_DEFAULT_BUFFER_SIZE, O_WRONLY | O_CREAT | O_TRUNC);
|
||||
DB::CompressedWriteBuffer compressed_buf(buf);
|
||||
|
||||
stopwatch.restart();
|
||||
for (size_t i = 0; i < n; ++i)
|
||||
|
@ -32,6 +32,7 @@ int main(int argc, char ** argv)
|
||||
DB::readQuotedString(d, in);
|
||||
|
||||
std::cout << a << ' ' << b << ' ' << c << '\t' << '\'' << d << '\'' << std::endl;
|
||||
std::cout << in.count() << std::endl;
|
||||
}
|
||||
catch (const DB::Exception & e)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user