mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 17:12:03 +00:00
Better [#CLICKHOUSE-2].
This commit is contained in:
parent
0ac2f5b479
commit
f5ecb2db5d
@ -18,6 +18,8 @@ get_property (BUILD_INCLUDE_DIRECTORIES DIRECTORY ${ClickHouse_SOURCE_DIR} PROPE
|
|||||||
string (TIMESTAMP BUILD_DATE "%Y-%m-%d" UTC)
|
string (TIMESTAMP BUILD_DATE "%Y-%m-%d" UTC)
|
||||||
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/src/Common/config_build.cpp.in ${CONFIG_BUILD})
|
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/src/Common/config_build.cpp.in ${CONFIG_BUILD})
|
||||||
|
|
||||||
|
#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra")
|
||||||
|
|
||||||
if (NOT NO_WERROR)
|
if (NOT NO_WERROR)
|
||||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
||||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||||
|
@ -99,7 +99,7 @@ public:
|
|||||||
|
|
||||||
void updateHashWithValue(size_t index, SipHash & hash) const override;
|
void updateHashWithValue(size_t index, SipHash & hash) const override;
|
||||||
|
|
||||||
int compareAt(size_t p1, size_t p2, const IColumn & rhs_, int nan_direction_hint) const override
|
int compareAt(size_t p1, size_t p2, const IColumn & rhs_, int /*nan_direction_hint*/) const override
|
||||||
{
|
{
|
||||||
const ColumnFixedString & rhs = static_cast<const ColumnFixedString &>(rhs_);
|
const ColumnFixedString & rhs = static_cast<const ColumnFixedString &>(rhs_);
|
||||||
return memcmp(&chars[p1 * n], &rhs.chars[p2 * n], n);
|
return memcmp(&chars[p1 * n], &rhs.chars[p2 * n], n);
|
||||||
|
@ -16,8 +16,8 @@ namespace DB
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
struct CompareHelper
|
struct CompareHelper
|
||||||
{
|
{
|
||||||
static bool less(T a, T b, int nan_direction_hint) { return a < b; }
|
static bool less(T a, T b, int /*nan_direction_hint*/) { return a < b; }
|
||||||
static bool greater(T a, T b, int nan_direction_hint) { return a > b; }
|
static bool greater(T a, T b, int /*nan_direction_hint*/) { return a > b; }
|
||||||
|
|
||||||
/** Compares two numbers. Returns a number less than zero, equal to zero, or greater than zero if a < b, a == b, a > b, respectively.
|
/** Compares two numbers. Returns a number less than zero, equal to zero, or greater than zero if a < b, a == b, a > b, respectively.
|
||||||
* If one of the values is NaN, then
|
* If one of the values is NaN, then
|
||||||
@ -25,7 +25,7 @@ struct CompareHelper
|
|||||||
* - if nan_direction_hint == 1 - NaN are considered to be larger than all numbers;
|
* - if nan_direction_hint == 1 - NaN are considered to be larger than all numbers;
|
||||||
* Essentially: nan_direction_hint == -1 says that the comparison is for sorting in descending order.
|
* Essentially: nan_direction_hint == -1 says that the comparison is for sorting in descending order.
|
||||||
*/
|
*/
|
||||||
static int compare(T a, T b, int nan_direction_hint)
|
static int compare(T a, T b, int /*nan_direction_hint*/)
|
||||||
{
|
{
|
||||||
return a > b ? 1 : (a < b ? -1 : 0);
|
return a > b ? 1 : (a < b ? -1 : 0);
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ public:
|
|||||||
data.push_back(static_cast<const Self &>(src).getData()[n]);
|
data.push_back(static_cast<const Self &>(src).getData()[n]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void insertData(const char * pos, size_t length) override
|
void insertData(const char * pos, size_t /*length*/) override
|
||||||
{
|
{
|
||||||
data.push_back(*reinterpret_cast<const T *>(pos));
|
data.push_back(*reinterpret_cast<const T *>(pos));
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ public:
|
|||||||
/// Creates column with the same type and specified size.
|
/// Creates column with the same type and specified size.
|
||||||
/// If size is less current size, then data is cut.
|
/// If size is less current size, then data is cut.
|
||||||
/// If size is greater, than default values are appended.
|
/// If size is greater, than default values are appended.
|
||||||
virtual ColumnPtr cloneResized(size_t size) const { throw Exception("Cannot cloneResized() column " + getName(), ErrorCodes::NOT_IMPLEMENTED); }
|
virtual ColumnPtr cloneResized(size_t /*size*/) const { throw Exception("Cannot cloneResized() column " + getName(), ErrorCodes::NOT_IMPLEMENTED); }
|
||||||
|
|
||||||
/// Returns number of values in column.
|
/// Returns number of values in column.
|
||||||
virtual size_t size() const = 0;
|
virtual size_t size() const = 0;
|
||||||
@ -106,7 +106,7 @@ public:
|
|||||||
/// If column stores integers, it returns n-th element transformed to UInt64 using static_cast.
|
/// If column stores integers, it returns n-th element transformed to UInt64 using static_cast.
|
||||||
/// If column stores floting point numbers, bits of n-th elements are copied to lower bits of UInt64, the remaining bits are zeros.
|
/// If column stores floting point numbers, bits of n-th elements are copied to lower bits of UInt64, the remaining bits are zeros.
|
||||||
/// Is used to optimize some computations (in aggregation, for example).
|
/// Is used to optimize some computations (in aggregation, for example).
|
||||||
virtual UInt64 get64(size_t n) const
|
virtual UInt64 get64(size_t /*n*/) const
|
||||||
{
|
{
|
||||||
throw Exception("Method get64 is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
throw Exception("Method get64 is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
||||||
}
|
}
|
||||||
@ -114,12 +114,12 @@ public:
|
|||||||
/** If column is numeric, return value of n-th element, casted to UInt64.
|
/** If column is numeric, return value of n-th element, casted to UInt64.
|
||||||
* Otherwise throw an exception.
|
* Otherwise throw an exception.
|
||||||
*/
|
*/
|
||||||
virtual UInt64 getUInt(size_t n) const
|
virtual UInt64 getUInt(size_t /*n*/) const
|
||||||
{
|
{
|
||||||
throw Exception("Method getUInt is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
throw Exception("Method getUInt is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Int64 getInt(size_t n) const
|
virtual Int64 getInt(size_t /*n*/) const
|
||||||
{
|
{
|
||||||
throw Exception("Method getInt is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
throw Exception("Method getInt is not supported for " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
||||||
}
|
}
|
||||||
@ -253,7 +253,7 @@ public:
|
|||||||
|
|
||||||
/// Reserves memory for specified amount of elements. If reservation isn't possible, does nothing.
|
/// Reserves memory for specified amount of elements. If reservation isn't possible, does nothing.
|
||||||
/// It affects performance only (not correctness).
|
/// It affects performance only (not correctness).
|
||||||
virtual void reserve(size_t n) {};
|
virtual void reserve(size_t /*n*/) {};
|
||||||
|
|
||||||
/// Size of column data in memory (may be approximate) - for profiling. Zero, if could not be determined.
|
/// Size of column data in memory (may be approximate) - for profiling. Zero, if could not be determined.
|
||||||
virtual size_t byteSize() const = 0;
|
virtual size_t byteSize() const = 0;
|
||||||
|
@ -128,7 +128,7 @@ class AIOContextPool : public ext::singleton<AIOContextPool>
|
|||||||
|
|
||||||
int getCompletionEvents(io_event events[], const int max_events)
|
int getCompletionEvents(io_event events[], const int max_events)
|
||||||
{
|
{
|
||||||
timespec timeout{timeout_sec};
|
timespec timeout{timeout_sec, 0};
|
||||||
|
|
||||||
auto num_events = 0;
|
auto num_events = 0;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ static inline String formatQuotedWithPrefix(T x, const char * prefix)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
String FieldVisitorDump::operator() (const Null & x) const { return "NULL"; }
|
String FieldVisitorDump::operator() (const Null &) const { return "NULL"; }
|
||||||
String FieldVisitorDump::operator() (const UInt64 & x) const { return formatQuotedWithPrefix(x, "UInt64_"); }
|
String FieldVisitorDump::operator() (const UInt64 & x) const { return formatQuotedWithPrefix(x, "UInt64_"); }
|
||||||
String FieldVisitorDump::operator() (const Int64 & x) const { return formatQuotedWithPrefix(x, "Int64_"); }
|
String FieldVisitorDump::operator() (const Int64 & x) const { return formatQuotedWithPrefix(x, "Int64_"); }
|
||||||
String FieldVisitorDump::operator() (const Float64 & x) const { return formatQuotedWithPrefix(x, "Float64_"); }
|
String FieldVisitorDump::operator() (const Float64 & x) const { return formatQuotedWithPrefix(x, "Float64_"); }
|
||||||
@ -99,7 +99,7 @@ static String formatFloat(const Float64 x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
String FieldVisitorToString::operator() (const Null & x) const { return "NULL"; }
|
String FieldVisitorToString::operator() (const Null &) const { return "NULL"; }
|
||||||
String FieldVisitorToString::operator() (const UInt64 & x) const { return formatQuoted(x); }
|
String FieldVisitorToString::operator() (const UInt64 & x) const { return formatQuoted(x); }
|
||||||
String FieldVisitorToString::operator() (const Int64 & x) const { return formatQuoted(x); }
|
String FieldVisitorToString::operator() (const Int64 & x) const { return formatQuoted(x); }
|
||||||
String FieldVisitorToString::operator() (const Float64 & x) const { return formatFloat(x); }
|
String FieldVisitorToString::operator() (const Float64 & x) const { return formatFloat(x); }
|
||||||
@ -142,7 +142,7 @@ String FieldVisitorToString::operator() (const Tuple & x_def) const
|
|||||||
|
|
||||||
FieldVisitorHash::FieldVisitorHash(SipHash & hash) : hash(hash) {}
|
FieldVisitorHash::FieldVisitorHash(SipHash & hash) : hash(hash) {}
|
||||||
|
|
||||||
void FieldVisitorHash::operator() (const Null & x) const
|
void FieldVisitorHash::operator() (const Null &) const
|
||||||
{
|
{
|
||||||
UInt8 type = Field::Types::Null;
|
UInt8 type = Field::Types::Null;
|
||||||
hash.update(reinterpret_cast<const char *>(&type), sizeof(type));
|
hash.update(reinterpret_cast<const char *>(&type), sizeof(type));
|
||||||
|
@ -133,22 +133,22 @@ template <typename T>
|
|||||||
class FieldVisitorConvertToNumber : public StaticVisitor<T>
|
class FieldVisitorConvertToNumber : public StaticVisitor<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
T operator() (const Null & x) const
|
T operator() (const Null &) const
|
||||||
{
|
{
|
||||||
throw Exception("Cannot convert NULL to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
throw Exception("Cannot convert NULL to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
T operator() (const String & x) const
|
T operator() (const String &) const
|
||||||
{
|
{
|
||||||
throw Exception("Cannot convert String to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
throw Exception("Cannot convert String to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
T operator() (const Array & x) const
|
T operator() (const Array &) const
|
||||||
{
|
{
|
||||||
throw Exception("Cannot convert Array to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
throw Exception("Cannot convert Array to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
T operator() (const Tuple & x) const
|
T operator() (const Tuple &) const
|
||||||
{
|
{
|
||||||
throw Exception("Cannot convert Tuple to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
throw Exception("Cannot convert Tuple to " + String(TypeName<T>::get()), ErrorCodes::CANNOT_CONVERT_TYPE);
|
||||||
}
|
}
|
||||||
@ -183,121 +183,121 @@ public:
|
|||||||
class FieldVisitorAccurateEquals : public StaticVisitor<bool>
|
class FieldVisitorAccurateEquals : public StaticVisitor<bool>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool operator() (const Null & l, const Null & r) const { return true; }
|
bool operator() (const Null &, const Null &) const { return true; }
|
||||||
bool operator() (const Null & l, const UInt64 & r) const { return false; }
|
bool operator() (const Null &, const UInt64 &) const { return false; }
|
||||||
bool operator() (const Null & l, const Int64 & r) const { return false; }
|
bool operator() (const Null &, const Int64 &) const { return false; }
|
||||||
bool operator() (const Null & l, const Float64 & r) const { return false; }
|
bool operator() (const Null &, const Float64 &) const { return false; }
|
||||||
bool operator() (const Null & l, const String & r) const { return false; }
|
bool operator() (const Null &, const String &) const { return false; }
|
||||||
bool operator() (const Null & l, const Array & r) const { return false; }
|
bool operator() (const Null &, const Array &) const { return false; }
|
||||||
bool operator() (const Null & l, const Tuple & r) const { return false; }
|
bool operator() (const Null &, const Tuple &) const { return false; }
|
||||||
|
|
||||||
bool operator() (const UInt64 & l, const Null & r) const { return false; }
|
bool operator() (const UInt64 &, const Null &) const { return false; }
|
||||||
bool operator() (const UInt64 & l, const UInt64 & r) const { return l == r; }
|
bool operator() (const UInt64 & l, const UInt64 & r) const { return l == r; }
|
||||||
bool operator() (const UInt64 & l, const Int64 & r) const { return accurate::equalsOp(l, r); }
|
bool operator() (const UInt64 & l, const Int64 & r) const { return accurate::equalsOp(l, r); }
|
||||||
bool operator() (const UInt64 & l, const Float64 & r) const { return accurate::equalsOp(l, r); }
|
bool operator() (const UInt64 & l, const Float64 & r) const { return accurate::equalsOp(l, r); }
|
||||||
bool operator() (const UInt64 & l, const String & r) const { return false; }
|
bool operator() (const UInt64 &, const String &) const { return false; }
|
||||||
bool operator() (const UInt64 & l, const Array & r) const { return false; }
|
bool operator() (const UInt64 &, const Array &) const { return false; }
|
||||||
bool operator() (const UInt64 & l, const Tuple & r) const { return false; }
|
bool operator() (const UInt64 &, const Tuple &) const { return false; }
|
||||||
|
|
||||||
bool operator() (const Int64 & l, const Null & r) const { return false; }
|
bool operator() (const Int64 &, const Null &) const { return false; }
|
||||||
bool operator() (const Int64 & l, const UInt64 & r) const { return accurate::equalsOp(l, r); }
|
bool operator() (const Int64 & l, const UInt64 & r) const { return accurate::equalsOp(l, r); }
|
||||||
bool operator() (const Int64 & l, const Int64 & r) const { return l == r; }
|
bool operator() (const Int64 & l, const Int64 & r) const { return l == r; }
|
||||||
bool operator() (const Int64 & l, const Float64 & r) const { return accurate::equalsOp(l, r); }
|
bool operator() (const Int64 & l, const Float64 & r) const { return accurate::equalsOp(l, r); }
|
||||||
bool operator() (const Int64 & l, const String & r) const { return false; }
|
bool operator() (const Int64 &, const String &) const { return false; }
|
||||||
bool operator() (const Int64 & l, const Array & r) const { return false; }
|
bool operator() (const Int64 &, const Array &) const { return false; }
|
||||||
bool operator() (const Int64 & l, const Tuple & r) const { return false; }
|
bool operator() (const Int64 &, const Tuple &) const { return false; }
|
||||||
|
|
||||||
bool operator() (const Float64 & l, const Null & r) const { return false; }
|
bool operator() (const Float64 &, const Null &) const { return false; }
|
||||||
bool operator() (const Float64 & l, const UInt64 & r) const { return accurate::equalsOp(l, r); }
|
bool operator() (const Float64 & l, const UInt64 & r) const { return accurate::equalsOp(l, r); }
|
||||||
bool operator() (const Float64 & l, const Int64 & r) const { return accurate::equalsOp(l, r); }
|
bool operator() (const Float64 & l, const Int64 & r) const { return accurate::equalsOp(l, r); }
|
||||||
bool operator() (const Float64 & l, const Float64 & r) const { return l == r; }
|
bool operator() (const Float64 & l, const Float64 & r) const { return l == r; }
|
||||||
bool operator() (const Float64 & l, const String & r) const { return false; }
|
bool operator() (const Float64 &, const String &) const { return false; }
|
||||||
bool operator() (const Float64 & l, const Array & r) const { return false; }
|
bool operator() (const Float64 &, const Array &) const { return false; }
|
||||||
bool operator() (const Float64 & l, const Tuple & r) const { return false; }
|
bool operator() (const Float64 &, const Tuple &) const { return false; }
|
||||||
|
|
||||||
bool operator() (const String & l, const Null & r) const { return false; }
|
bool operator() (const String &, const Null &) const { return false; }
|
||||||
bool operator() (const String & l, const UInt64 & r) const { return false; }
|
bool operator() (const String &, const UInt64 &) const { return false; }
|
||||||
bool operator() (const String & l, const Int64 & r) const { return false; }
|
bool operator() (const String &, const Int64 &) const { return false; }
|
||||||
bool operator() (const String & l, const Float64 & r) const { return false; }
|
bool operator() (const String &, const Float64 &) const { return false; }
|
||||||
bool operator() (const String & l, const String & r) const { return l == r; }
|
bool operator() (const String & l, const String & r) const { return l == r; }
|
||||||
bool operator() (const String & l, const Array & r) const { return false; }
|
bool operator() (const String &, const Array &) const { return false; }
|
||||||
bool operator() (const String & l, const Tuple & r) const { return false; }
|
bool operator() (const String &, const Tuple &) const { return false; }
|
||||||
|
|
||||||
bool operator() (const Array & l, const Null & r) const { return false; }
|
bool operator() (const Array &, const Null &) const { return false; }
|
||||||
bool operator() (const Array & l, const UInt64 & r) const { return false; }
|
bool operator() (const Array &, const UInt64 &) const { return false; }
|
||||||
bool operator() (const Array & l, const Int64 & r) const { return false; }
|
bool operator() (const Array &, const Int64 &) const { return false; }
|
||||||
bool operator() (const Array & l, const Float64 & r) const { return false; }
|
bool operator() (const Array &, const Float64 &) const { return false; }
|
||||||
bool operator() (const Array & l, const String & r) const { return false; }
|
bool operator() (const Array &, const String &) const { return false; }
|
||||||
bool operator() (const Array & l, const Array & r) const { return l == r; }
|
bool operator() (const Array & l, const Array & r) const { return l == r; }
|
||||||
bool operator() (const Array & l, const Tuple & r) const { return false; }
|
bool operator() (const Array &, const Tuple &) const { return false; }
|
||||||
|
|
||||||
bool operator() (const Tuple & l, const Null & r) const { return false; }
|
bool operator() (const Tuple &, const Null &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const UInt64 & r) const { return false; }
|
bool operator() (const Tuple &, const UInt64 &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Int64 & r) const { return false; }
|
bool operator() (const Tuple &, const Int64 &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Float64 & r) const { return false; }
|
bool operator() (const Tuple &, const Float64 &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const String & r) const { return false; }
|
bool operator() (const Tuple &, const String &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Array & r) const { return false; }
|
bool operator() (const Tuple &, const Array &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Tuple & r) const { return l == r; }
|
bool operator() (const Tuple & l, const Tuple & r) const { return l == r; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class FieldVisitorAccurateLess : public StaticVisitor<bool>
|
class FieldVisitorAccurateLess : public StaticVisitor<bool>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool operator() (const Null & l, const Null & r) const { return false; }
|
bool operator() (const Null &, const Null &) const { return false; }
|
||||||
bool operator() (const Null & l, const UInt64 & r) const { return true; }
|
bool operator() (const Null &, const UInt64 &) const { return true; }
|
||||||
bool operator() (const Null & l, const Int64 & r) const { return true; }
|
bool operator() (const Null &, const Int64 &) const { return true; }
|
||||||
bool operator() (const Null & l, const Float64 & r) const { return true; }
|
bool operator() (const Null &, const Float64 &) const { return true; }
|
||||||
bool operator() (const Null & l, const String & r) const { return true; }
|
bool operator() (const Null &, const String &) const { return true; }
|
||||||
bool operator() (const Null & l, const Array & r) const { return true; }
|
bool operator() (const Null &, const Array &) const { return true; }
|
||||||
bool operator() (const Null & l, const Tuple & r) const { return true; }
|
bool operator() (const Null &, const Tuple &) const { return true; }
|
||||||
|
|
||||||
bool operator() (const UInt64 & l, const Null & r) const { return false; }
|
bool operator() (const UInt64 &, const Null &) const { return false; }
|
||||||
bool operator() (const UInt64 & l, const UInt64 & r) const { return l < r; }
|
bool operator() (const UInt64 & l, const UInt64 & r) const { return l < r; }
|
||||||
bool operator() (const UInt64 & l, const Int64 & r) const { return accurate::lessOp(l, r); }
|
bool operator() (const UInt64 & l, const Int64 & r) const { return accurate::lessOp(l, r); }
|
||||||
bool operator() (const UInt64 & l, const Float64 & r) const { return accurate::lessOp(l, r); }
|
bool operator() (const UInt64 & l, const Float64 & r) const { return accurate::lessOp(l, r); }
|
||||||
bool operator() (const UInt64 & l, const String & r) const { return true; }
|
bool operator() (const UInt64 &, const String &) const { return true; }
|
||||||
bool operator() (const UInt64 & l, const Array & r) const { return true; }
|
bool operator() (const UInt64 &, const Array &) const { return true; }
|
||||||
bool operator() (const UInt64 & l, const Tuple & r) const { return true; }
|
bool operator() (const UInt64 &, const Tuple &) const { return true; }
|
||||||
|
|
||||||
bool operator() (const Int64 & l, const Null & r) const { return false; }
|
bool operator() (const Int64 &, const Null &) const { return false; }
|
||||||
bool operator() (const Int64 & l, const UInt64 & r) const { return accurate::lessOp(l, r); }
|
bool operator() (const Int64 & l, const UInt64 & r) const { return accurate::lessOp(l, r); }
|
||||||
bool operator() (const Int64 & l, const Int64 & r) const { return l < r; }
|
bool operator() (const Int64 & l, const Int64 & r) const { return l < r; }
|
||||||
bool operator() (const Int64 & l, const Float64 & r) const { return accurate::lessOp(l, r); }
|
bool operator() (const Int64 & l, const Float64 & r) const { return accurate::lessOp(l, r); }
|
||||||
bool operator() (const Int64 & l, const String & r) const { return true; }
|
bool operator() (const Int64 &, const String &) const { return true; }
|
||||||
bool operator() (const Int64 & l, const Array & r) const { return true; }
|
bool operator() (const Int64 &, const Array &) const { return true; }
|
||||||
bool operator() (const Int64 & l, const Tuple & r) const { return true; }
|
bool operator() (const Int64 &, const Tuple &) const { return true; }
|
||||||
|
|
||||||
bool operator() (const Float64 & l, const Null & r) const { return false; }
|
bool operator() (const Float64 &, const Null &) const { return false; }
|
||||||
bool operator() (const Float64 & l, const UInt64 & r) const { return accurate::lessOp(l, r); }
|
bool operator() (const Float64 & l, const UInt64 & r) const { return accurate::lessOp(l, r); }
|
||||||
bool operator() (const Float64 & l, const Int64 & r) const { return accurate::lessOp(l, r); }
|
bool operator() (const Float64 & l, const Int64 & r) const { return accurate::lessOp(l, r); }
|
||||||
bool operator() (const Float64 & l, const Float64 & r) const { return l < r; }
|
bool operator() (const Float64 & l, const Float64 & r) const { return l < r; }
|
||||||
bool operator() (const Float64 & l, const String & r) const { return true; }
|
bool operator() (const Float64 &, const String &) const { return true; }
|
||||||
bool operator() (const Float64 & l, const Array & r) const { return true; }
|
bool operator() (const Float64 &, const Array &) const { return true; }
|
||||||
bool operator() (const Float64 & l, const Tuple & r) const { return true; }
|
bool operator() (const Float64 &, const Tuple &) const { return true; }
|
||||||
|
|
||||||
bool operator() (const String & l, const Null & r) const { return false; }
|
bool operator() (const String &, const Null &) const { return false; }
|
||||||
bool operator() (const String & l, const UInt64 & r) const { return false; }
|
bool operator() (const String &, const UInt64 &) const { return false; }
|
||||||
bool operator() (const String & l, const Int64 & r) const { return false; }
|
bool operator() (const String &, const Int64 &) const { return false; }
|
||||||
bool operator() (const String & l, const Float64 & r) const { return false; }
|
bool operator() (const String &, const Float64 &) const { return false; }
|
||||||
bool operator() (const String & l, const String & r) const { return l < r; }
|
bool operator() (const String & l, const String & r) const { return l < r; }
|
||||||
bool operator() (const String & l, const Array & r) const { return true; }
|
bool operator() (const String &, const Array &) const { return true; }
|
||||||
bool operator() (const String & l, const Tuple & r) const { return true; }
|
bool operator() (const String &, const Tuple &) const { return true; }
|
||||||
|
|
||||||
bool operator() (const Array & l, const Null & r) const { return false; }
|
bool operator() (const Array &, const Null &) const { return false; }
|
||||||
bool operator() (const Array & l, const UInt64 & r) const { return false; }
|
bool operator() (const Array &, const UInt64 &) const { return false; }
|
||||||
bool operator() (const Array & l, const Int64 & r) const { return false; }
|
bool operator() (const Array &, const Int64 &) const { return false; }
|
||||||
bool operator() (const Array & l, const Float64 & r) const { return false; }
|
bool operator() (const Array &, const Float64 &) const { return false; }
|
||||||
bool operator() (const Array & l, const String & r) const { return false; }
|
bool operator() (const Array &, const String &) const { return false; }
|
||||||
bool operator() (const Array & l, const Array & r) const { return l < r; }
|
bool operator() (const Array & l, const Array & r) const { return l < r; }
|
||||||
bool operator() (const Array & l, const Tuple & r) const { return false; }
|
bool operator() (const Array &, const Tuple &) const { return false; }
|
||||||
|
|
||||||
bool operator() (const Tuple & l, const Null & r) const { return false; }
|
bool operator() (const Tuple &, const Null &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const UInt64 & r) const { return false; }
|
bool operator() (const Tuple &, const UInt64 &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Int64 & r) const { return false; }
|
bool operator() (const Tuple &, const Int64 &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Float64 & r) const { return false; }
|
bool operator() (const Tuple &, const Float64 &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const String & r) const { return false; }
|
bool operator() (const Tuple &, const String &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Array & r) const { return false; }
|
bool operator() (const Tuple &, const Array &) const { return false; }
|
||||||
bool operator() (const Tuple & l, const Tuple & r) const { return l < r; }
|
bool operator() (const Tuple & l, const Tuple & r) const { return l < r; }
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Implements `+=` operation.
|
/** Implements `+=` operation.
|
||||||
@ -314,9 +314,9 @@ public:
|
|||||||
bool operator() (Int64 & x) const { x += get<Int64>(rhs); return x != 0; }
|
bool operator() (Int64 & x) const { x += get<Int64>(rhs); return x != 0; }
|
||||||
bool operator() (Float64 & x) const { x += get<Float64>(rhs); return x != 0; }
|
bool operator() (Float64 & x) const { x += get<Float64>(rhs); return x != 0; }
|
||||||
|
|
||||||
bool operator() (Null & x) const { throw Exception("Cannot sum Nulls", ErrorCodes::LOGICAL_ERROR); }
|
bool operator() (Null &) const { throw Exception("Cannot sum Nulls", ErrorCodes::LOGICAL_ERROR); }
|
||||||
bool operator() (String & x) const { throw Exception("Cannot sum Strings", ErrorCodes::LOGICAL_ERROR); }
|
bool operator() (String &) const { throw Exception("Cannot sum Strings", ErrorCodes::LOGICAL_ERROR); }
|
||||||
bool operator() (Array & x) const { throw Exception("Cannot sum Arrays", ErrorCodes::LOGICAL_ERROR); }
|
bool operator() (Array &) const { throw Exception("Cannot sum Arrays", ErrorCodes::LOGICAL_ERROR); }
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ namespace DB
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
struct TrivialWeightFunction
|
struct TrivialWeightFunction
|
||||||
{
|
{
|
||||||
size_t operator()(const T & x) const
|
size_t operator()(const T &) const
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -188,14 +188,14 @@ private:
|
|||||||
|
|
||||||
InsertTokenHolder() = default;
|
InsertTokenHolder() = default;
|
||||||
|
|
||||||
void acquire(const Key * key_, const std::shared_ptr<InsertToken> & token_, std::lock_guard<std::mutex> & cache_lock)
|
void acquire(const Key * key_, const std::shared_ptr<InsertToken> & token_, [[maybe_unused]] std::lock_guard<std::mutex> & cache_lock)
|
||||||
{
|
{
|
||||||
key = key_;
|
key = key_;
|
||||||
token = token_;
|
token = token_;
|
||||||
++token->refcount;
|
++token->refcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cleanup(std::lock_guard<std::mutex> & token_lock, std::lock_guard<std::mutex> & cache_lock)
|
void cleanup([[maybe_unused]] std::lock_guard<std::mutex> & token_lock, [[maybe_unused]] std::lock_guard<std::mutex> & cache_lock)
|
||||||
{
|
{
|
||||||
token->cache.insert_tokens.erase(*key);
|
token->cache.insert_tokens.erase(*key);
|
||||||
token->cleaned_up = true;
|
token->cleaned_up = true;
|
||||||
@ -260,7 +260,7 @@ private:
|
|||||||
|
|
||||||
WeightFunction weight_function;
|
WeightFunction weight_function;
|
||||||
|
|
||||||
MappedPtr getImpl(const Key & key, std::lock_guard<std::mutex> & cache_lock)
|
MappedPtr getImpl(const Key & key, [[maybe_unused]] std::lock_guard<std::mutex> & cache_lock)
|
||||||
{
|
{
|
||||||
auto it = cells.find(key);
|
auto it = cells.find(key);
|
||||||
if (it == cells.end())
|
if (it == cells.end())
|
||||||
@ -277,7 +277,7 @@ private:
|
|||||||
return cell.value;
|
return cell.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setImpl(const Key & key, const MappedPtr & mapped, std::lock_guard<std::mutex> & cache_lock)
|
void setImpl(const Key & key, const MappedPtr & mapped, [[maybe_unused]] std::lock_guard<std::mutex> & cache_lock)
|
||||||
{
|
{
|
||||||
auto res = cells.emplace(std::piecewise_construct,
|
auto res = cells.emplace(std::piecewise_construct,
|
||||||
std::forward_as_tuple(key),
|
std::forward_as_tuple(key),
|
||||||
|
@ -60,7 +60,7 @@ struct WatchContext
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void ZooKeeper::processCallback(zhandle_t * zh, int type, int state, const char * path, void * watcher_ctx)
|
void ZooKeeper::processCallback(zhandle_t *, int type, int state, const char * path, void * watcher_ctx)
|
||||||
{
|
{
|
||||||
WatchContext * context = static_cast<WatchContext *>(watcher_ctx);
|
WatchContext * context = static_cast<WatchContext *>(watcher_ctx);
|
||||||
context->process(type, state, path);
|
context->process(type, state, path);
|
||||||
|
@ -9,7 +9,7 @@ int func(int x, int y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char ** argv)
|
int main(int, char **)
|
||||||
{
|
{
|
||||||
SimpleCache<decltype(func), &func> func_cached;
|
SimpleCache<decltype(func), &func> func_cached;
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ public:
|
|||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
Field(T && rhs,
|
Field(T && rhs,
|
||||||
typename std::enable_if<!std::is_same<typename std::decay<T>::type, Field>::value, void>::type * unused = nullptr)
|
[[maybe_unused]] typename std::enable_if<!std::is_same<typename std::decay<T>::type, Field>::value, void>::type * unused = nullptr)
|
||||||
{
|
{
|
||||||
createConcrete(std::forward<T>(rhs));
|
createConcrete(std::forward<T>(rhs));
|
||||||
}
|
}
|
||||||
@ -523,25 +523,25 @@ class WriteBuffer;
|
|||||||
/// It is assumed that all elements of the array have the same type.
|
/// It is assumed that all elements of the array have the same type.
|
||||||
void readBinary(Array & x, ReadBuffer & buf);
|
void readBinary(Array & x, ReadBuffer & buf);
|
||||||
|
|
||||||
inline void readText(Array & x, ReadBuffer & buf) { throw Exception("Cannot read Array.", ErrorCodes::NOT_IMPLEMENTED); }
|
inline void readText(Array &, ReadBuffer &) { throw Exception("Cannot read Array.", ErrorCodes::NOT_IMPLEMENTED); }
|
||||||
inline void readQuoted(Array & x, ReadBuffer & buf) { throw Exception("Cannot read Array.", ErrorCodes::NOT_IMPLEMENTED); }
|
inline void readQuoted(Array &, ReadBuffer &) { throw Exception("Cannot read Array.", ErrorCodes::NOT_IMPLEMENTED); }
|
||||||
|
|
||||||
/// It is assumed that all elements of the array have the same type.
|
/// It is assumed that all elements of the array have the same type.
|
||||||
void writeBinary(const Array & x, WriteBuffer & buf);
|
void writeBinary(const Array & x, WriteBuffer & buf);
|
||||||
|
|
||||||
void writeText(const Array & x, WriteBuffer & buf);
|
void writeText(const Array & x, WriteBuffer & buf);
|
||||||
|
|
||||||
inline void writeQuoted(const Array & x, WriteBuffer & buf) { throw Exception("Cannot write Array quoted.", ErrorCodes::NOT_IMPLEMENTED); }
|
inline void writeQuoted(const Array &, WriteBuffer &) { throw Exception("Cannot write Array quoted.", ErrorCodes::NOT_IMPLEMENTED); }
|
||||||
|
|
||||||
void readBinary(Tuple & x, ReadBuffer & buf);
|
void readBinary(Tuple & x, ReadBuffer & buf);
|
||||||
|
|
||||||
inline void readText(Tuple & x, ReadBuffer & buf) { throw Exception("Cannot read Tuple.", ErrorCodes::NOT_IMPLEMENTED); }
|
inline void readText(Tuple &, ReadBuffer &) { throw Exception("Cannot read Tuple.", ErrorCodes::NOT_IMPLEMENTED); }
|
||||||
inline void readQuoted(Tuple & x, ReadBuffer & buf) { throw Exception("Cannot read Tuple.", ErrorCodes::NOT_IMPLEMENTED); }
|
inline void readQuoted(Tuple &, ReadBuffer &) { throw Exception("Cannot read Tuple.", ErrorCodes::NOT_IMPLEMENTED); }
|
||||||
|
|
||||||
void writeBinary(const Tuple & x, WriteBuffer & buf);
|
void writeBinary(const Tuple & x, WriteBuffer & buf);
|
||||||
|
|
||||||
void writeText(const Tuple & x, WriteBuffer & buf);
|
void writeText(const Tuple & x, WriteBuffer & buf);
|
||||||
|
|
||||||
inline void writeQuoted(const Tuple & x, WriteBuffer & buf) { throw Exception("Cannot write Tuple quoted.", ErrorCodes::NOT_IMPLEMENTED); }
|
inline void writeQuoted(const Tuple &, WriteBuffer &) { throw Exception("Cannot write Tuple quoted.", ErrorCodes::NOT_IMPLEMENTED); }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -247,7 +247,7 @@ struct Factory3 : IFactory
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char ** argv)
|
int main(int, char **)
|
||||||
{
|
{
|
||||||
srand(time(0));
|
srand(time(0));
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ void DistinctBlockInputStream::buildFilter(
|
|||||||
method.data.emplace(key, it, inserted);
|
method.data.emplace(key, it, inserted);
|
||||||
|
|
||||||
if (inserted)
|
if (inserted)
|
||||||
method.onNewKey(*it, columns.size(), i, variants.string_pool);
|
method.onNewKey(*it, columns.size(), variants.string_pool);
|
||||||
|
|
||||||
/// Emit the record if there is no such key in the current set yet.
|
/// Emit the record if there is no such key in the current set yet.
|
||||||
/// Skip it otherwise.
|
/// Skip it otherwise.
|
||||||
|
@ -147,7 +147,7 @@ bool DistinctSortedBlockInputStream::buildFilter(
|
|||||||
|
|
||||||
if (inserted)
|
if (inserted)
|
||||||
{
|
{
|
||||||
method.onNewKey(*it, columns.size(), i, variants.string_pool);
|
method.onNewKey(*it, columns.size(), variants.string_pool);
|
||||||
has_new_data = true;
|
has_new_data = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,10 +47,10 @@ template <> inline WriteBuffer & operator<< (WriteBuffer & buf, const cha
|
|||||||
|
|
||||||
inline WriteBuffer & operator<< (WriteBuffer & buf, const char * x) { writeCString(x, buf); return buf; }
|
inline WriteBuffer & operator<< (WriteBuffer & buf, const char * x) { writeCString(x, buf); return buf; }
|
||||||
|
|
||||||
inline EscapeManipWriteBuffer & operator<< (WriteBuffer & buf, EscapeManip x) { return static_cast<EscapeManipWriteBuffer &>(buf); }
|
inline EscapeManipWriteBuffer & operator<< (WriteBuffer & buf, EscapeManip) { return static_cast<EscapeManipWriteBuffer &>(buf); }
|
||||||
inline QuoteManipWriteBuffer & operator<< (WriteBuffer & buf, QuoteManip x) { return static_cast<QuoteManipWriteBuffer &>(buf); }
|
inline QuoteManipWriteBuffer & operator<< (WriteBuffer & buf, QuoteManip) { return static_cast<QuoteManipWriteBuffer &>(buf); }
|
||||||
inline DoubleQuoteManipWriteBuffer & operator<< (WriteBuffer & buf, DoubleQuoteManip x) { return static_cast<DoubleQuoteManipWriteBuffer &>(buf); }
|
inline DoubleQuoteManipWriteBuffer & operator<< (WriteBuffer & buf, DoubleQuoteManip) { return static_cast<DoubleQuoteManipWriteBuffer &>(buf); }
|
||||||
inline BinaryManipWriteBuffer & operator<< (WriteBuffer & buf, BinaryManip x) { return static_cast<BinaryManipWriteBuffer &>(buf); }
|
inline BinaryManipWriteBuffer & operator<< (WriteBuffer & buf, BinaryManip) { return static_cast<BinaryManipWriteBuffer &>(buf); }
|
||||||
|
|
||||||
template <typename T> WriteBuffer & operator<< (EscapeManipWriteBuffer & buf, const T & x) { writeText(x, buf); return buf; }
|
template <typename T> WriteBuffer & operator<< (EscapeManipWriteBuffer & buf, const T & x) { writeText(x, buf); return buf; }
|
||||||
template <typename T> WriteBuffer & operator<< (QuoteManipWriteBuffer & buf, const T & x) { writeQuoted(x, buf); return buf; }
|
template <typename T> WriteBuffer & operator<< (QuoteManipWriteBuffer & buf, const T & x) { writeQuoted(x, buf); return buf; }
|
||||||
@ -65,7 +65,7 @@ inline WriteBuffer & operator<< (BinaryManipWriteBuffer & buf, const char *
|
|||||||
/// The manipulator calls the WriteBuffer method `next` - this makes the buffer reset. For nested buffers, the reset is not recursive.
|
/// The manipulator calls the WriteBuffer method `next` - this makes the buffer reset. For nested buffers, the reset is not recursive.
|
||||||
enum FlushManip { flush };
|
enum FlushManip { flush };
|
||||||
|
|
||||||
inline WriteBuffer & operator<< (WriteBuffer & buf, FlushManip x) { buf.next(); return buf; }
|
inline WriteBuffer & operator<< (WriteBuffer & buf, FlushManip) { buf.next(); return buf; }
|
||||||
|
|
||||||
|
|
||||||
template <typename T> ReadBuffer & operator>> (ReadBuffer & buf, T & x) { readText(x, buf); return buf; }
|
template <typename T> ReadBuffer & operator>> (ReadBuffer & buf, T & x) { readText(x, buf); return buf; }
|
||||||
@ -75,10 +75,10 @@ template <> inline ReadBuffer & operator>> (ReadBuffer & buf, char & x)
|
|||||||
/// If you specify a string literal for reading, this will mean - make sure there is a sequence of bytes and skip it.
|
/// If you specify a string literal for reading, this will mean - make sure there is a sequence of bytes and skip it.
|
||||||
inline ReadBuffer & operator>> (ReadBuffer & buf, const char * x) { assertString(x, buf); return buf; }
|
inline ReadBuffer & operator>> (ReadBuffer & buf, const char * x) { assertString(x, buf); return buf; }
|
||||||
|
|
||||||
inline EscapeManipReadBuffer & operator>> (ReadBuffer & buf, EscapeManip x) { return static_cast<EscapeManipReadBuffer &>(buf); }
|
inline EscapeManipReadBuffer & operator>> (ReadBuffer & buf, EscapeManip) { return static_cast<EscapeManipReadBuffer &>(buf); }
|
||||||
inline QuoteManipReadBuffer & operator>> (ReadBuffer & buf, QuoteManip x) { return static_cast<QuoteManipReadBuffer &>(buf); }
|
inline QuoteManipReadBuffer & operator>> (ReadBuffer & buf, QuoteManip) { return static_cast<QuoteManipReadBuffer &>(buf); }
|
||||||
inline DoubleQuoteManipReadBuffer & operator>> (ReadBuffer & buf, DoubleQuoteManip x) { return static_cast<DoubleQuoteManipReadBuffer &>(buf); }
|
inline DoubleQuoteManipReadBuffer & operator>> (ReadBuffer & buf, DoubleQuoteManip) { return static_cast<DoubleQuoteManipReadBuffer &>(buf); }
|
||||||
inline BinaryManipReadBuffer & operator>> (ReadBuffer & buf, BinaryManip x) { return static_cast<BinaryManipReadBuffer &>(buf); }
|
inline BinaryManipReadBuffer & operator>> (ReadBuffer & buf, BinaryManip) { return static_cast<BinaryManipReadBuffer &>(buf); }
|
||||||
|
|
||||||
template <typename T> ReadBuffer & operator>> (EscapeManipReadBuffer & buf, T & x) { readText(x, buf); return buf; }
|
template <typename T> ReadBuffer & operator>> (EscapeManipReadBuffer & buf, T & x) { readText(x, buf); return buf; }
|
||||||
template <typename T> ReadBuffer & operator>> (QuoteManipReadBuffer & buf, T & x) { readQuoted(x, buf); return buf; }
|
template <typename T> ReadBuffer & operator>> (QuoteManipReadBuffer & buf, T & x) { readQuoted(x, buf); return buf; }
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
namespace DB
|
namespace DB
|
||||||
{
|
{
|
||||||
|
|
||||||
void Progress::read(ReadBuffer & in, UInt64 server_revision)
|
void Progress::read(ReadBuffer & in, UInt64 /*server_revision*/)
|
||||||
{
|
{
|
||||||
size_t new_rows = 0;
|
size_t new_rows = 0;
|
||||||
size_t new_bytes = 0;
|
size_t new_bytes = 0;
|
||||||
@ -25,7 +25,7 @@ void Progress::read(ReadBuffer & in, UInt64 server_revision)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Progress::write(WriteBuffer & out, UInt64 client_revision) const
|
void Progress::write(WriteBuffer & out, UInt64 /*client_revision*/) const
|
||||||
{
|
{
|
||||||
writeVarUInt(rows.load(), out);
|
writeVarUInt(rows.load(), out);
|
||||||
writeVarUInt(bytes.load(), out);
|
writeVarUInt(bytes.load(), out);
|
||||||
|
@ -63,7 +63,6 @@ ReadBufferFromFile::ReadBufferFromFile(
|
|||||||
int fd,
|
int fd,
|
||||||
const std::string & original_file_name,
|
const std::string & original_file_name,
|
||||||
size_t buf_size,
|
size_t buf_size,
|
||||||
int flags,
|
|
||||||
char * existing_memory,
|
char * existing_memory,
|
||||||
size_t alignment)
|
size_t alignment)
|
||||||
:
|
:
|
||||||
|
@ -29,7 +29,7 @@ public:
|
|||||||
char * existing_memory = nullptr, size_t alignment = 0);
|
char * existing_memory = nullptr, size_t alignment = 0);
|
||||||
|
|
||||||
/// Use pre-opened file descriptor.
|
/// Use pre-opened file descriptor.
|
||||||
ReadBufferFromFile(int fd, const std::string & original_file_name = {}, size_t buf_size = DBMS_DEFAULT_BUFFER_SIZE, int flags = -1,
|
ReadBufferFromFile(int fd, const std::string & original_file_name = {}, size_t buf_size = DBMS_DEFAULT_BUFFER_SIZE,
|
||||||
char * existing_memory = nullptr, size_t alignment = 0);
|
char * existing_memory = nullptr, size_t alignment = 0);
|
||||||
|
|
||||||
ReadBufferFromFile(ReadBufferFromFile &&) = default;
|
ReadBufferFromFile(ReadBufferFromFile &&) = default;
|
||||||
|
@ -730,7 +730,7 @@ inline void readText(String & x, ReadBuffer & buf) { readEscapedString(x, buf);
|
|||||||
inline void readText(LocalDate & x, ReadBuffer & buf) { readDateText(x, buf); }
|
inline void readText(LocalDate & x, ReadBuffer & buf) { readDateText(x, buf); }
|
||||||
inline void readText(LocalDateTime & x, ReadBuffer & buf) { readDateTimeText(x, buf); }
|
inline void readText(LocalDateTime & x, ReadBuffer & buf) { readDateTimeText(x, buf); }
|
||||||
inline void readText(UUID & x, ReadBuffer & buf) { readUUIDText(x, buf); }
|
inline void readText(UUID & x, ReadBuffer & buf) { readUUIDText(x, buf); }
|
||||||
inline void readText(UInt128 & x, ReadBuffer & buf)
|
inline void readText(UInt128 &, ReadBuffer &)
|
||||||
{
|
{
|
||||||
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
||||||
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
||||||
@ -825,7 +825,7 @@ inline void readCSV(String & x, ReadBuffer & buf, const char delimiter = ',') {
|
|||||||
inline void readCSV(LocalDate & x, ReadBuffer & buf) { readCSVSimple(x, buf); }
|
inline void readCSV(LocalDate & x, ReadBuffer & buf) { readCSVSimple(x, buf); }
|
||||||
inline void readCSV(LocalDateTime & x, ReadBuffer & buf) { readCSVSimple(x, buf); }
|
inline void readCSV(LocalDateTime & x, ReadBuffer & buf) { readCSVSimple(x, buf); }
|
||||||
inline void readCSV(UUID & x, ReadBuffer & buf) { readCSVSimple(x, buf); }
|
inline void readCSV(UUID & x, ReadBuffer & buf) { readCSVSimple(x, buf); }
|
||||||
inline void readCSV(UInt128 & x, ReadBuffer & buf)
|
inline void readCSV(UInt128 &, ReadBuffer &)
|
||||||
{
|
{
|
||||||
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
||||||
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
||||||
|
@ -671,7 +671,7 @@ inline void writeText(const char * x, size_t size, WriteBuffer & buf) { writeEsc
|
|||||||
inline void writeText(const LocalDate & x, WriteBuffer & buf) { writeDateText(x, buf); }
|
inline void writeText(const LocalDate & x, WriteBuffer & buf) { writeDateText(x, buf); }
|
||||||
inline void writeText(const LocalDateTime & x, WriteBuffer & buf) { writeDateTimeText(x, buf); }
|
inline void writeText(const LocalDateTime & x, WriteBuffer & buf) { writeDateTimeText(x, buf); }
|
||||||
inline void writeText(const UUID & x, WriteBuffer & buf) { writeUUIDText(x, buf); }
|
inline void writeText(const UUID & x, WriteBuffer & buf) { writeUUIDText(x, buf); }
|
||||||
inline void writeText(const UInt128 & x, WriteBuffer & buf)
|
inline void writeText(const UInt128 &, WriteBuffer &)
|
||||||
{
|
{
|
||||||
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
||||||
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
||||||
@ -739,7 +739,7 @@ inline void writeCSV(const String & x, WriteBuffer & buf) { writeCSVString<>(x,
|
|||||||
inline void writeCSV(const LocalDate & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); }
|
inline void writeCSV(const LocalDate & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); }
|
||||||
inline void writeCSV(const LocalDateTime & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); }
|
inline void writeCSV(const LocalDateTime & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); }
|
||||||
inline void writeCSV(const UUID & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); }
|
inline void writeCSV(const UUID & x, WriteBuffer & buf) { writeDoubleQuoted(x, buf); }
|
||||||
inline void writeCSV(const UInt128, WriteBuffer & buf)
|
inline void writeCSV(const UInt128, WriteBuffer &)
|
||||||
{
|
{
|
||||||
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
/** Because UInt128 isn't a natural type, without arithmetic operator and only use as an intermediary type -for UUID-
|
||||||
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
* it should never arrive here. But because we used the DataTypeNumber class we should have at least a definition of it.
|
||||||
|
@ -211,7 +211,7 @@ static inline UInt128 ALWAYS_INLINE hash128(
|
|||||||
|
|
||||||
/// Copy keys to the pool. Then put into pool StringRefs to them and return the pointer to the first.
|
/// Copy keys to the pool. Then put into pool StringRefs to them and return the pointer to the first.
|
||||||
static inline StringRef * ALWAYS_INLINE placeKeysInPool(
|
static inline StringRef * ALWAYS_INLINE placeKeysInPool(
|
||||||
size_t i, size_t keys_size, StringRefs & keys, Arena & pool)
|
size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
for (size_t j = 0; j < keys_size; ++j)
|
for (size_t j = 0; j < keys_size; ++j)
|
||||||
{
|
{
|
||||||
@ -291,7 +291,7 @@ inline StringRef ALWAYS_INLINE extractKeysAndPlaceInPoolContiguous(
|
|||||||
/** Serialize keys into a continuous chunk of memory.
|
/** Serialize keys into a continuous chunk of memory.
|
||||||
*/
|
*/
|
||||||
static inline StringRef ALWAYS_INLINE serializeKeysToPoolContiguous(
|
static inline StringRef ALWAYS_INLINE serializeKeysToPoolContiguous(
|
||||||
size_t i, size_t keys_size, const ConstColumnPlainPtrs & key_columns, StringRefs & keys, Arena & pool)
|
size_t i, size_t keys_size, const ConstColumnPlainPtrs & key_columns, Arena & pool)
|
||||||
{
|
{
|
||||||
const char * begin = nullptr;
|
const char * begin = nullptr;
|
||||||
|
|
||||||
|
@ -663,7 +663,7 @@ void NO_INLINE Aggregator::executeImplCase(
|
|||||||
/// exception-safety - if you can not allocate memory or create states, then destructors will not be called.
|
/// exception-safety - if you can not allocate memory or create states, then destructors will not be called.
|
||||||
aggregate_data = nullptr;
|
aggregate_data = nullptr;
|
||||||
|
|
||||||
method.onNewKey(*it, params.keys_size, i, keys, *aggregates_pool);
|
method.onNewKey(*it, params.keys_size, keys, *aggregates_pool);
|
||||||
|
|
||||||
AggregateDataPtr place = aggregates_pool->alloc(total_size_of_aggregate_states);
|
AggregateDataPtr place = aggregates_pool->alloc(total_size_of_aggregate_states);
|
||||||
createAggregateStates(place);
|
createAggregateStates(place);
|
||||||
@ -1944,7 +1944,7 @@ void NO_INLINE Aggregator::mergeStreamsImplCase(
|
|||||||
AggregateDataPtr & aggregate_data = Method::getAggregateData(it->second);
|
AggregateDataPtr & aggregate_data = Method::getAggregateData(it->second);
|
||||||
aggregate_data = nullptr;
|
aggregate_data = nullptr;
|
||||||
|
|
||||||
method.onNewKey(*it, params.keys_size, i, keys, *aggregates_pool);
|
method.onNewKey(*it, params.keys_size, keys, *aggregates_pool);
|
||||||
|
|
||||||
AggregateDataPtr place = aggregates_pool->alloc(total_size_of_aggregate_states);
|
AggregateDataPtr place = aggregates_pool->alloc(total_size_of_aggregate_states);
|
||||||
createAggregateStates(place);
|
createAggregateStates(place);
|
||||||
|
@ -137,7 +137,7 @@ struct AggregationMethodOneNumber
|
|||||||
|
|
||||||
/** Place additional data, if necessary, in case a new key was inserted into the hash table.
|
/** Place additional data, if necessary, in case a new key was inserted into the hash table.
|
||||||
*/
|
*/
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, StringRefs & keys, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,7 +205,7 @@ struct AggregationMethodString
|
|||||||
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
||||||
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, StringRefs & keys, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
value.first.data = pool.insert(value.first.data, value.first.size);
|
value.first.data = pool.insert(value.first.data, value.first.size);
|
||||||
}
|
}
|
||||||
@ -266,7 +266,7 @@ struct AggregationMethodFixedString
|
|||||||
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
||||||
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, StringRefs & keys, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
value.first.data = pool.insert(value.first.data, value.first.size);
|
value.first.data = pool.insert(value.first.data, value.first.size);
|
||||||
}
|
}
|
||||||
@ -428,7 +428,7 @@ struct AggregationMethodKeysFixed
|
|||||||
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
||||||
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, StringRefs & keys, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -525,7 +525,7 @@ struct AggregationMethodConcat
|
|||||||
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
||||||
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, StringRefs & keys, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -603,14 +603,14 @@ struct AggregationMethodSerialized
|
|||||||
StringRefs & keys,
|
StringRefs & keys,
|
||||||
Arena & pool) const
|
Arena & pool) const
|
||||||
{
|
{
|
||||||
return serializeKeysToPoolContiguous(i, keys_size, key_columns, keys, pool);
|
return serializeKeysToPoolContiguous(i, keys_size, key_columns, pool);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
static AggregateDataPtr & getAggregateData(Mapped & value) { return value; }
|
||||||
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value; }
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, StringRefs & keys, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -669,9 +669,9 @@ struct AggregationMethodHashed
|
|||||||
static AggregateDataPtr & getAggregateData(Mapped & value) { return value.second; }
|
static AggregateDataPtr & getAggregateData(Mapped & value) { return value.second; }
|
||||||
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value.second; }
|
static const AggregateDataPtr & getAggregateData(const Mapped & value) { return value.second; }
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, StringRefs & keys, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, StringRefs & keys, Arena & pool)
|
||||||
{
|
{
|
||||||
value.second.first = placeKeysInPool(i, keys_size, keys, pool);
|
value.second.first = placeKeysInPool(keys_size, keys, pool);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void onExistingKey(const Key & key, StringRefs & keys, Arena & pool) {}
|
static void onExistingKey(const Key & key, StringRefs & keys, Arena & pool) {}
|
||||||
|
@ -87,7 +87,7 @@ void NO_INLINE Set::insertFromBlockImplCase(
|
|||||||
method.data.emplace(key, it, inserted);
|
method.data.emplace(key, it, inserted);
|
||||||
|
|
||||||
if (inserted)
|
if (inserted)
|
||||||
method.onNewKey(*it, keys_size, i, variants.string_pool);
|
method.onNewKey(*it, keys_size, variants.string_pool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ struct SetMethodOneNumber
|
|||||||
|
|
||||||
/** Place additional data, if necessary, in case a new key was inserted into the hash table.
|
/** Place additional data, if necessary, in case a new key was inserted into the hash table.
|
||||||
*/
|
*/
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, Arena & pool) {}
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, Arena & pool) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// For the case where there is one string key.
|
/// For the case where there is one string key.
|
||||||
@ -90,7 +90,7 @@ struct SetMethodString
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, Arena & pool)
|
||||||
{
|
{
|
||||||
value.data = pool.insert(value.data, value.size);
|
value.data = pool.insert(value.data, value.size);
|
||||||
}
|
}
|
||||||
@ -128,7 +128,7 @@ struct SetMethodFixedString
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, Arena & pool)
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, Arena & pool)
|
||||||
{
|
{
|
||||||
value.data = pool.insert(value.data, value.size);
|
value.data = pool.insert(value.data, value.size);
|
||||||
}
|
}
|
||||||
@ -268,7 +268,7 @@ struct SetMethodKeysFixed
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, Arena & pool) {}
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, Arena & pool) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// For other cases. 128 bit hash from the key.
|
/// For other cases. 128 bit hash from the key.
|
||||||
@ -296,7 +296,7 @@ struct SetMethodHashed
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void onNewKey(typename Data::value_type & value, size_t keys_size, size_t i, Arena & pool) {}
|
static void onNewKey(typename Data::value_type & value, size_t keys_size, Arena & pool) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ void NO_INLINE Aggregator::executeSpecializedCase(
|
|||||||
AggregateDataPtr & aggregate_data = Method::getAggregateData(it->second);
|
AggregateDataPtr & aggregate_data = Method::getAggregateData(it->second);
|
||||||
aggregate_data = nullptr;
|
aggregate_data = nullptr;
|
||||||
|
|
||||||
method.onNewKey(*it, params.keys_size, i, keys, *aggregates_pool);
|
method.onNewKey(*it, params.keys_size, keys, *aggregates_pool);
|
||||||
|
|
||||||
AggregateDataPtr place = aggregates_pool->alloc(total_size_of_aggregate_states);
|
AggregateDataPtr place = aggregates_pool->alloc(total_size_of_aggregate_states);
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ void * ClickHouseDictionary_v1_loadIds(
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void * ClickHouseDictionary_v1_loadAll(void * data_ptr, ClickHouseLibrary::CStrings * settings, ClickHouseLibrary::CStrings * columns)
|
void * ClickHouseDictionary_v1_loadAll(void * data_ptr, ClickHouseLibrary::CStrings * settings, ClickHouseLibrary::CStrings * /*columns*/)
|
||||||
{
|
{
|
||||||
auto ptr = static_cast<DataHolder *>(data_ptr);
|
auto ptr = static_cast<DataHolder *>(data_ptr);
|
||||||
std::cerr << "loadAll lib call ptr=" << data_ptr << " => " << ptr << "\n";
|
std::cerr << "loadAll lib call ptr=" << data_ptr << " => " << ptr << "\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user