mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-14 10:22:10 +00:00
Less nested includes
This commit is contained in:
parent
d585d2fe72
commit
e41a018a5f
@ -10,7 +10,6 @@
|
||||
#include <AggregateFunctions/IAggregateFunction.h>
|
||||
#include <AggregateFunctions/AggregateFunctionSum.h>
|
||||
#include <Core/DecimalFunctions.h>
|
||||
#include <Core/IResolvedFunction.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
@ -220,6 +219,7 @@ public:
|
||||
{
|
||||
if constexpr (canBeNativeType<Numerator>() && canBeNativeType<Denominator>())
|
||||
return compileGetResultImpl(builder, aggregate_data_ptr);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -82,7 +82,7 @@ void skipFieldByEscapingRule(ReadBuffer & buf, FormatSettings::EscapingRule esca
|
||||
readCSVStringInto(out, buf, format_settings.csv);
|
||||
break;
|
||||
case FormatSettings::EscapingRule::JSON:
|
||||
skipJSONField(buf, StringRef(field_name, field_name_len), format_settings.json);
|
||||
skipJSONField(buf, std::string_view(field_name, field_name_len), format_settings.json);
|
||||
break;
|
||||
case FormatSettings::EscapingRule::Raw:
|
||||
readStringInto(out, buf);
|
||||
|
@ -1585,14 +1585,14 @@ template bool readDateTimeTextFallback<bool, true>(time_t &, ReadBuffer &, const
|
||||
|
||||
|
||||
template <typename ReturnType>
|
||||
ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const FormatSettings::JSON & settings, size_t current_depth)
|
||||
ReturnType skipJSONFieldImpl(ReadBuffer & buf, std::string_view name_of_field, const FormatSettings::JSON & settings, size_t current_depth)
|
||||
{
|
||||
static constexpr bool throw_exception = std::is_same_v<ReturnType, void>;
|
||||
|
||||
if (unlikely(current_depth > settings.max_depth))
|
||||
{
|
||||
if constexpr (throw_exception)
|
||||
throw Exception(ErrorCodes::TOO_DEEP_RECURSION, "JSON is too deep for key '{}'", name_of_field.toString());
|
||||
throw Exception(ErrorCodes::TOO_DEEP_RECURSION, "JSON is too deep for key '{}'", name_of_field);
|
||||
return ReturnType(false);
|
||||
}
|
||||
|
||||
@ -1602,7 +1602,7 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
if (buf.eof())
|
||||
{
|
||||
if constexpr (throw_exception)
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected EOF for key '{}'", name_of_field.toString());
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected EOF for key '{}'", name_of_field);
|
||||
return ReturnType(false);
|
||||
}
|
||||
if (*buf.position() == '"') /// skip double-quoted string
|
||||
@ -1622,7 +1622,7 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
if (!tryReadFloatText(v, buf))
|
||||
{
|
||||
if constexpr (throw_exception)
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Expected a number field for key '{}'", name_of_field.toString());
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Expected a number field for key '{}'", name_of_field);
|
||||
return ReturnType(false);
|
||||
}
|
||||
}
|
||||
@ -1680,7 +1680,7 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
else
|
||||
{
|
||||
if constexpr (throw_exception)
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected symbol for key '{}'", name_of_field.toString());
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected symbol for key '{}'", name_of_field);
|
||||
return ReturnType(false);
|
||||
}
|
||||
}
|
||||
@ -1704,7 +1704,7 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
else
|
||||
{
|
||||
if constexpr (throw_exception)
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected symbol for key '{}'", name_of_field.toString());
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected symbol for key '{}'", name_of_field);
|
||||
return ReturnType(false);
|
||||
}
|
||||
|
||||
@ -1713,7 +1713,7 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
if (buf.eof() || !(*buf.position() == ':'))
|
||||
{
|
||||
if constexpr (throw_exception)
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected symbol for key '{}'", name_of_field.toString());
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected symbol for key '{}'", name_of_field);
|
||||
return ReturnType(false);
|
||||
}
|
||||
++buf.position();
|
||||
@ -1737,7 +1737,7 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
if (buf.eof())
|
||||
{
|
||||
if constexpr (throw_exception)
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected EOF for key '{}'", name_of_field.toString());
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unexpected EOF for key '{}'", name_of_field);
|
||||
return ReturnType(false);
|
||||
}
|
||||
++buf.position();
|
||||
@ -1750,7 +1750,7 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
"Cannot read JSON field here: '{}'. Unexpected symbol '{}'{}",
|
||||
String(buf.position(), std::min(buf.available(), size_t(10))),
|
||||
std::string(1, *buf.position()),
|
||||
name_of_field.empty() ? "" : " for key " + name_of_field.toString());
|
||||
name_of_field.empty() ? "" : " for key " + String{name_of_field});
|
||||
|
||||
return ReturnType(false);
|
||||
}
|
||||
@ -1758,12 +1758,12 @@ ReturnType skipJSONFieldImpl(ReadBuffer & buf, StringRef name_of_field, const Fo
|
||||
return ReturnType(true);
|
||||
}
|
||||
|
||||
void skipJSONField(ReadBuffer & buf, StringRef name_of_field, const FormatSettings::JSON & settings)
|
||||
void skipJSONField(ReadBuffer & buf, std::string_view name_of_field, const FormatSettings::JSON & settings)
|
||||
{
|
||||
skipJSONFieldImpl<void>(buf, name_of_field, settings, 0);
|
||||
}
|
||||
|
||||
bool trySkipJSONField(ReadBuffer & buf, StringRef name_of_field, const FormatSettings::JSON & settings)
|
||||
bool trySkipJSONField(ReadBuffer & buf, std::string_view name_of_field, const FormatSettings::JSON & settings)
|
||||
{
|
||||
return skipJSONFieldImpl<bool>(buf, name_of_field, settings, 0);
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include <Common/LocalDate.h>
|
||||
#include <Common/LocalDateTime.h>
|
||||
#include <Common/transformEndianness.h>
|
||||
#include <base/StringRef.h>
|
||||
#include <base/arithmeticOverflow.h>
|
||||
#include <base/unit.h>
|
||||
|
||||
@ -1709,8 +1708,8 @@ inline void skipWhitespaceIfAny(ReadBuffer & buf, bool one_line = false)
|
||||
}
|
||||
|
||||
/// Skips json value.
|
||||
void skipJSONField(ReadBuffer & buf, StringRef name_of_field, const FormatSettings::JSON & settings);
|
||||
bool trySkipJSONField(ReadBuffer & buf, StringRef name_of_field, const FormatSettings::JSON & settings);
|
||||
void skipJSONField(ReadBuffer & buf, std::string_view name_of_field, const FormatSettings::JSON & settings);
|
||||
bool trySkipJSONField(ReadBuffer & buf, std::string_view name_of_field, const FormatSettings::JSON & settings);
|
||||
|
||||
|
||||
/** Read serialized exception.
|
||||
|
@ -5,10 +5,6 @@
|
||||
#include <IO/ReadBuffer.h>
|
||||
#include <IO/WriteBuffer.h>
|
||||
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
|
||||
|
||||
namespace DB
|
||||
{
|
||||
|
||||
@ -37,20 +33,6 @@ inline void writeVarUInt(UInt64 x, WriteBuffer & ostr)
|
||||
++ostr.position();
|
||||
}
|
||||
|
||||
inline void writeVarUInt(UInt64 x, std::ostream & ostr)
|
||||
{
|
||||
while (x > 0x7F)
|
||||
{
|
||||
uint8_t byte = 0x80 | (x & 0x7F);
|
||||
ostr.put(byte);
|
||||
|
||||
x >>= 7;
|
||||
}
|
||||
|
||||
uint8_t final_byte = static_cast<uint8_t>(x);
|
||||
ostr.put(final_byte);
|
||||
}
|
||||
|
||||
inline char * writeVarUInt(UInt64 x, char * ostr)
|
||||
{
|
||||
while (x > 0x7F)
|
||||
@ -114,19 +96,6 @@ inline void readVarUInt(UInt64 & x, ReadBuffer & istr)
|
||||
varint_impl::readVarUInt<true>(x, istr);
|
||||
}
|
||||
|
||||
inline void readVarUInt(UInt64 & x, std::istream & istr)
|
||||
{
|
||||
x = 0;
|
||||
for (size_t i = 0; i < 10; ++i)
|
||||
{
|
||||
UInt64 byte = istr.get();
|
||||
x |= (byte & 0x7F) << (7 * i);
|
||||
|
||||
if (!(byte & 0x80))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
inline const char * readVarUInt(UInt64 & x, const char * istr, size_t size)
|
||||
{
|
||||
const char * end = istr + size;
|
||||
|
@ -19,9 +19,6 @@ target_link_libraries (valid_utf8_perf PRIVATE clickhouse_common_io clickhouse_c
|
||||
clickhouse_add_executable (valid_utf8 valid_utf8.cpp)
|
||||
target_link_libraries (valid_utf8 PRIVATE clickhouse_common_io clickhouse_common_config)
|
||||
|
||||
clickhouse_add_executable (var_uint var_uint.cpp)
|
||||
target_link_libraries (var_uint PRIVATE clickhouse_common_io clickhouse_common_config)
|
||||
|
||||
clickhouse_add_executable (read_escaped_string read_escaped_string.cpp)
|
||||
target_link_libraries (read_escaped_string PRIVATE clickhouse_common_io clickhouse_common_config)
|
||||
|
||||
|
@ -1,58 +0,0 @@
|
||||
#include <string>
|
||||
|
||||
#include <iostream>
|
||||
#include <IO/VarInt.h>
|
||||
#include <IO/WriteBufferFromString.h>
|
||||
#include <IO/ReadBufferFromString.h>
|
||||
#include <IO/ReadHelpers.h>
|
||||
#include <Poco/HexBinaryEncoder.h>
|
||||
|
||||
|
||||
int main(int argc, char ** argv)
|
||||
{
|
||||
if (argc != 2)
|
||||
{
|
||||
std::cerr << "Usage: " << std::endl
|
||||
<< argv[0] << " unsigned_number" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
UInt64 x = DB::parse<UInt64>(argv[1]);
|
||||
|
||||
std::cout << std::hex << std::showbase << "Input: " << x << std::endl;
|
||||
|
||||
Poco::HexBinaryEncoder hex(std::cout);
|
||||
std::cout << "writeVarUInt(std::ostream): 0x";
|
||||
DB::writeVarUInt(x, hex);
|
||||
std::cout << std::endl;
|
||||
|
||||
std::string s;
|
||||
|
||||
{
|
||||
DB::WriteBufferFromString wb(s);
|
||||
DB::writeVarUInt(x, wb);
|
||||
wb.next();
|
||||
}
|
||||
|
||||
std::cout << "writeVarUInt(WriteBuffer): 0x";
|
||||
hex << s;
|
||||
std::cout << std::endl;
|
||||
|
||||
s.clear();
|
||||
s.resize(9);
|
||||
|
||||
s.resize(DB::writeVarUInt(x, s.data()) - s.data());
|
||||
|
||||
std::cout << "writeVarUInt(char *): 0x";
|
||||
hex << s;
|
||||
std::cout << std::endl;
|
||||
|
||||
UInt64 y = 0;
|
||||
|
||||
DB::ReadBufferFromString rb(s);
|
||||
DB::readVarUInt(y, rb);
|
||||
|
||||
std::cerr << "Input: " << x << ", readVarUInt(writeVarUInt()): " << y << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
@ -121,7 +121,7 @@ void JSONEachRowRowInputFormat::skipUnknownField(StringRef name_ref)
|
||||
if (!format_settings.skip_unknown_fields)
|
||||
throw Exception(ErrorCodes::INCORRECT_DATA, "Unknown field found while parsing JSONEachRow format: {}", name_ref.toString());
|
||||
|
||||
skipJSONField(*in, name_ref, format_settings.json);
|
||||
skipJSONField(*in, std::string_view(name_ref.data, name_ref.size), format_settings.json);
|
||||
}
|
||||
|
||||
void JSONEachRowRowInputFormat::readField(size_t index, MutableColumns & columns)
|
||||
|
Loading…
Reference in New Issue
Block a user