diff --git a/src/AggregateFunctions/AggregateFunctionGroupArray.h b/src/AggregateFunctions/AggregateFunctionGroupArray.h index 27a8cf0b1ee..512eb2a0edb 100644 --- a/src/AggregateFunctions/AggregateFunctionGroupArray.h +++ b/src/AggregateFunctions/AggregateFunctionGroupArray.h @@ -296,12 +296,7 @@ public: if (size) { typename ColumnVector::Container & data_to = assert_cast &>(arr_to.getData()).getData(); - if constexpr (is_big_int_v) - // is data_to empty? we should probably use std::vector::insert then - for (auto it = this->data(place).value.begin(); it != this->data(place).value.end(); it++) - data_to.push_back(*it); - else - data_to.insert(this->data(place).value.begin(), this->data(place).value.end()); + data_to.insert(this->data(place).value.begin(), this->data(place).value.end()); } } diff --git a/src/Columns/ColumnVector.cpp b/src/Columns/ColumnVector.cpp index fcbcc63731a..e8c9a996fef 100644 --- a/src/Columns/ColumnVector.cpp +++ b/src/Columns/ColumnVector.cpp @@ -474,8 +474,6 @@ void ColumnVector::gather(ColumnGathererStream & gatherer) template void ColumnVector::getExtremes(Field & min, Field & max) const { - using FastRefT = std::conditional_t, const T &, const T>; - size_t size = data.size(); if (size == 0) @@ -496,7 +494,7 @@ void ColumnVector::getExtremes(Field & min, Field & max) const T cur_min = NaNOrZero(); T cur_max = NaNOrZero(); - for (FastRefT x : data) + for (const T & x : data) { if (isNaN(x)) continue; diff --git a/src/Common/HashTable/Hash.h b/src/Common/HashTable/Hash.h index ef20b70917d..4096d8f4876 100644 --- a/src/Common/HashTable/Hash.h +++ b/src/Common/HashTable/Hash.h @@ -186,7 +186,7 @@ inline size_t DefaultHash64(std::enable_if_t<(sizeof(T) > sizeof(UInt64)), T> ke } if constexpr (std::is_same_v) { - return intHash64(key.low ^ key.high); + return intHash64(key.low ^ key.high); /// TODO This is classical antipattern. } else if constexpr (is_big_int_v && sizeof(T) == 32) { diff --git a/src/Functions/FunctionMathBinaryFloat64.h b/src/Functions/FunctionMathBinaryFloat64.h index 0a0688dc75c..c8974885ed3 100644 --- a/src/Functions/FunctionMathBinaryFloat64.h +++ b/src/Functions/FunctionMathBinaryFloat64.h @@ -76,18 +76,8 @@ private: if (rows_remaining != 0) { RightType right_src_remaining[Impl::rows_per_iteration]; - if constexpr (!is_big_int_v && !std::is_same_v) - { - memcpy(right_src_remaining, &right_src_data[rows_size], rows_remaining * sizeof(RightType)); - memset(right_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(RightType)); - } - else - { - for (size_t i = 0; i < rows_remaining; i++) - right_src_remaining[i] = right_src_data[rows_size + i]; - for (size_t i = rows_remaining; i < Impl::rows_per_iteration; i++) - right_src_remaining[i] = 0; - } + memcpy(right_src_remaining, &right_src_data[rows_size], rows_remaining * sizeof(RightType)); + memset(right_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(RightType)); Float64 dst_remaining[Impl::rows_per_iteration]; Impl::execute(left_src_data, right_src_remaining, dst_remaining); @@ -123,32 +113,13 @@ private: if (rows_remaining != 0) { LeftType left_src_remaining[Impl::rows_per_iteration]; - if constexpr (!is_big_int_v && !std::is_same_v) - { - memcpy(left_src_remaining, &left_src_data[rows_size], rows_remaining * sizeof(LeftType)); - memset(left_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(LeftType)); - } - else - { - for (size_t i = 0; i < rows_remaining; i++) - left_src_remaining[i] = left_src_data[rows_size + i]; - for (size_t i = rows_remaining; i < Impl::rows_per_iteration; i++) - left_src_remaining[i] = 0; - } + memcpy(left_src_remaining, &left_src_data[rows_size], rows_remaining * sizeof(LeftType)); + memset(left_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(LeftType)); RightType right_src_remaining[Impl::rows_per_iteration]; - if constexpr (!is_big_int_v && !std::is_same_v) - { - memcpy(right_src_remaining, &right_src_data[rows_size], rows_remaining * sizeof(RightType)); - memset(right_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(RightType)); - } - else - { - for (size_t i = 0; i < rows_remaining; i++) - right_src_remaining[i] = right_src_data[rows_size + i]; - for (size_t i = rows_remaining; i < Impl::rows_per_iteration; i++) - right_src_remaining[i] = 0; - } + memcpy(right_src_remaining, &right_src_data[rows_size], rows_remaining * sizeof(RightType)); + memset(right_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(RightType)); + Float64 dst_remaining[Impl::rows_per_iteration]; Impl::execute(left_src_remaining, right_src_remaining, dst_remaining); @@ -178,18 +149,8 @@ private: if (rows_remaining != 0) { LeftType left_src_remaining[Impl::rows_per_iteration]; - if constexpr (!is_big_int_v && !std::is_same_v) - { - memcpy(left_src_remaining, &left_src_data[rows_size], rows_remaining * sizeof(LeftType)); - memset(left_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(LeftType)); - } - else - { - for (size_t i = 0; i < rows_remaining; i++) - left_src_remaining[i] = left_src_data[rows_size + i]; - for (size_t i = rows_remaining; i < Impl::rows_per_iteration; i++) - left_src_remaining[i] = 0; - } + memcpy(left_src_remaining, &left_src_data[rows_size], rows_remaining * sizeof(LeftType)); + memset(left_src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(LeftType)); Float64 dst_remaining[Impl::rows_per_iteration]; diff --git a/src/Functions/FunctionMathUnary.h b/src/Functions/FunctionMathUnary.h index 49b0428811a..23a24d16d07 100644 --- a/src/Functions/FunctionMathUnary.h +++ b/src/Functions/FunctionMathUnary.h @@ -87,18 +87,8 @@ private: if (rows_remaining != 0) { T src_remaining[Impl::rows_per_iteration]; - if constexpr (is_big_int_v || std::is_same_v) - { - for (size_t i = 0; i < rows_remaining; i++) - src_remaining[i] = src_data[rows_size + i]; - for (size_t i = rows_remaining; i < Impl::rows_per_iteration; i++) - src_remaining[i] = 0; - } - else - { - memcpy(src_remaining, &src_data[rows_size], rows_remaining * sizeof(T)); - memset(src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(T)); - } + memcpy(src_remaining, &src_data[rows_size], rows_remaining * sizeof(T)); + memset(src_remaining + rows_remaining, 0, (Impl::rows_per_iteration - rows_remaining) * sizeof(T)); ReturnType dst_remaining[Impl::rows_per_iteration]; Impl::execute(src_remaining, dst_remaining); diff --git a/src/Functions/FunctionsRound.h b/src/Functions/FunctionsRound.h index f942b894052..d2142ca46d3 100644 --- a/src/Functions/FunctionsRound.h +++ b/src/Functions/FunctionsRound.h @@ -440,13 +440,7 @@ public: } else { - if constexpr (!is_big_int_v) - memcpy(out.data(), in.data(), in.size() * sizeof(T)); - else - { - for (size_t i = 0; i < in.size(); i++) - out[i] = in[i]; - } + memcpy(out.data(), in.data(), in.size() * sizeof(T)); } } }; diff --git a/src/IO/ReadHelpers.h b/src/IO/ReadHelpers.h index 4482667f447..2e2a344934f 100644 --- a/src/IO/ReadHelpers.h +++ b/src/IO/ReadHelpers.h @@ -257,8 +257,7 @@ enum class ReadIntTextCheckOverflow template ReturnType readIntTextImpl(T & x, ReadBuffer & buf) { - /// TODO: disabled for big ints cause of 127 vs 128 bit conversion - using UnsignedT = std::conditional_t, T, make_unsigned_t>; + using UnsignedT = make_unsigned_t; static constexpr bool throw_exception = std::is_same_v; @@ -318,12 +317,8 @@ ReturnType readIntTextImpl(T & x, ReadBuffer & buf) || common::addOverflow(signed_res, (*buf.position() - '0'), signed_res)) return ReturnType(false); - /// Cannot assign signed to unsigned for big ints. Ignore fast path. - if constexpr (!is_big_int_v) - { - res = signed_res; - break; - } + res = signed_res; + break; } } res *= 10; diff --git a/src/IO/WriteHelpers.h b/src/IO/WriteHelpers.h index 9072f306bd9..9a27020930d 100644 --- a/src/IO/WriteHelpers.h +++ b/src/IO/WriteHelpers.h @@ -923,7 +923,7 @@ inline void writeBinary(const Int256 & x, WriteBuffer & buf) { writePODBinary(x, /// Methods for outputting the value in text form for a tab-separated format. template -inline std::enable_if_t && !is_big_int_v, void> +inline std::enable_if_t, void> writeText(const T & x, WriteBuffer & buf) { writeIntText(x, buf); } template