From 3a24916ec2f8aed8922d8bd87d86d003a2a8aea1 Mon Sep 17 00:00:00 2001 From: chertus Date: Fri, 8 Nov 2019 14:15:20 +0300 Subject: [PATCH] insertManyDefaults() overrides --- dbms/src/Columns/ColumnDecimal.h | 1 + dbms/src/Columns/ColumnFixedString.h | 5 +++++ dbms/src/Columns/ColumnString.h | 7 +++++++ dbms/src/Columns/ColumnVector.h | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/dbms/src/Columns/ColumnDecimal.h b/dbms/src/Columns/ColumnDecimal.h index ad9d00661a0..86015371137 100644 --- a/dbms/src/Columns/ColumnDecimal.h +++ b/dbms/src/Columns/ColumnDecimal.h @@ -96,6 +96,7 @@ public: void insertFrom(const IColumn & src, size_t n) override { data.push_back(static_cast(src).getData()[n]); } void insertData(const char * pos, size_t /*length*/) override; void insertDefault() override { data.push_back(T()); } + virtual void insertManyDefaults(size_t length) override { data.resize_fill(data.size() + length); } void insert(const Field & x) override { data.push_back(DB::get>(x)); } void insertRangeFrom(const IColumn & src, size_t start, size_t length) override; diff --git a/dbms/src/Columns/ColumnFixedString.h b/dbms/src/Columns/ColumnFixedString.h index 91f0e92c0a9..a91a82d8524 100644 --- a/dbms/src/Columns/ColumnFixedString.h +++ b/dbms/src/Columns/ColumnFixedString.h @@ -92,6 +92,11 @@ public: chars.resize_fill(chars.size() + n); } + virtual void insertManyDefaults(size_t length) override + { + chars.resize_fill(chars.size() + n * length); + } + void popBack(size_t elems) override { chars.resize_assume_reserved(chars.size() - n * elems); diff --git a/dbms/src/Columns/ColumnString.h b/dbms/src/Columns/ColumnString.h index 7c686f79767..8f1eced92f9 100644 --- a/dbms/src/Columns/ColumnString.h +++ b/dbms/src/Columns/ColumnString.h @@ -205,6 +205,13 @@ public: offsets.push_back(offsets.back() + 1); } + virtual void insertManyDefaults(size_t length) override + { + chars.resize_fill(chars.size() + length); + for (size_t i = 0; i < length; ++i) + offsets.push_back(offsets.back() + 1); + } + int compareAt(size_t n, size_t m, const IColumn & rhs_, int /*nan_direction_hint*/) const override { const ColumnString & rhs = assert_cast(rhs_); diff --git a/dbms/src/Columns/ColumnVector.h b/dbms/src/Columns/ColumnVector.h index 28307cb33f0..f80ec6f0056 100644 --- a/dbms/src/Columns/ColumnVector.h +++ b/dbms/src/Columns/ColumnVector.h @@ -144,6 +144,11 @@ public: data.push_back(T()); } + virtual void insertManyDefaults(size_t length) override + { + data.resize_fill(data.size() + length, T()); + } + void popBack(size_t n) override { data.resize_assume_reserved(data.size() - n);