This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 277a7dd97e [bugfix]ColumnDecimal missed some interfaces about pre-serialization (#10751) 277a7dd97e is described below commit 277a7dd97e11e7e90d8e61bd4e2fb43eb8bcc1ab Author: Jerry Hu <mrh...@gmail.com> AuthorDate: Mon Jul 11 14:00:58 2022 +0800 [bugfix]ColumnDecimal missed some interfaces about pre-serialization (#10751) --- be/src/vec/columns/column_decimal.cpp | 26 ++++++++++++++++++++++++++ be/src/vec/columns/column_decimal.h | 10 ++++++++++ 2 files changed, 36 insertions(+) diff --git a/be/src/vec/columns/column_decimal.cpp b/be/src/vec/columns/column_decimal.cpp index 5dc30a182d..c50b7938be 100644 --- a/be/src/vec/columns/column_decimal.cpp +++ b/be/src/vec/columns/column_decimal.cpp @@ -58,6 +58,32 @@ const char* ColumnDecimal<T>::deserialize_and_insert_from_arena(const char* pos) return pos + sizeof(T); } +template <typename T> +size_t ColumnDecimal<T>::get_max_row_byte_size() const { + return sizeof(T); +} + +template <typename T> +void ColumnDecimal<T>::serialize_vec(std::vector<StringRef>& keys, size_t num_rows, + size_t max_row_byte_size) const { + for (size_t i = 0; i < num_rows; ++i) { + memcpy(const_cast<char*>(keys[i].data + keys[i].size), &data[i], sizeof(T)); + keys[i].size += sizeof(T); + } +} + +template <typename T> +void ColumnDecimal<T>::serialize_vec_with_null_map(std::vector<StringRef>& keys, size_t num_rows, + const uint8_t* null_map, + size_t max_row_byte_size) const { + for (size_t i = 0; i < num_rows; ++i) { + if (null_map[i] == 0) { + memcpy(const_cast<char*>(keys[i].data + keys[i].size), &data[i], sizeof(T)); + keys[i].size += sizeof(T); + } + } +} + template <typename T> UInt64 ColumnDecimal<T>::get64(size_t n) const { if constexpr (sizeof(T) > sizeof(UInt64)) { diff --git a/be/src/vec/columns/column_decimal.h b/be/src/vec/columns/column_decimal.h index dd93768e2f..bdca8263d3 100644 --- a/be/src/vec/columns/column_decimal.h +++ b/be/src/vec/columns/column_decimal.h @@ -140,6 +140,16 @@ public: StringRef serialize_value_into_arena(size_t n, Arena& arena, char const*& begin) const override; const char* deserialize_and_insert_from_arena(const char* pos) override; + + virtual size_t get_max_row_byte_size() const override; + + virtual void serialize_vec(std::vector<StringRef>& keys, size_t num_rows, + size_t max_row_byte_size) const override; + + virtual void serialize_vec_with_null_map(std::vector<StringRef>& keys, size_t num_rows, + const uint8_t* null_map, + size_t max_row_byte_size) const override; + void update_hash_with_value(size_t n, SipHash& hash) const override; int compare_at(size_t n, size_t m, const IColumn& rhs_, int nan_direction_hint) const override; void get_permutation(bool reverse, size_t limit, int nan_direction_hint, --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org