diff --git a/dbms/include/DB/IO/ReadHelpers.h b/dbms/include/DB/IO/ReadHelpers.h index 12302a33436..a04ebb0dc3f 100644 --- a/dbms/include/DB/IO/ReadHelpers.h +++ b/dbms/include/DB/IO/ReadHelpers.h @@ -315,6 +315,8 @@ void readDoubleQuotedString(String & s, ReadBuffer & buf); void readBackQuotedString(String & s, ReadBuffer & buf); +void readStringUntilEOF(String & s, ReadBuffer & buf); + /// в формате YYYY-MM-DD inline void readDateText(DayNum_t & date, ReadBuffer & buf) diff --git a/dbms/src/IO/ReadHelpers.cpp b/dbms/src/IO/ReadHelpers.cpp index c16d547ca9f..cea5030b422 100644 --- a/dbms/src/IO/ReadHelpers.cpp +++ b/dbms/src/IO/ReadHelpers.cpp @@ -70,6 +70,20 @@ void readString(String & s, ReadBuffer & buf) } } +void readStringUntilEOF(String & s, ReadBuffer & buf) +{ + s = ""; + while (!buf.eof()) + { + size_t bytes = buf.buffer().end() - buf.position(); + + s.append(buf.position(), bytes); + buf.position() += bytes; + + if (buf.hasPendingData()) + return; + } +} /** Позволяет найти в куске памяти следующий символ \t, \n или \\. * Функция похожа на strpbrk, но со следующими отличиями: