You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/07/11 06:01:03 UTC
[doris] branch master updated: [bugfix]ColumnDecimal missed some interfaces about pre-serialization (#10751)
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 <mr...@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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org