This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 847ec368bef [Fix](smooth-upgrade) Fix incompatibility when upgrade
from 2.0 to 2.1 (#32220)
847ec368bef is described below
commit 847ec368bef18aeb7da90747e2f6f70bc9925f97
Author: zclllyybb <[email protected]>
AuthorDate: Thu Mar 14 11:23:05 2024 +0800
[Fix](smooth-upgrade) Fix incompatibility when upgrade from 2.0 to 2.1
(#32220)
---
be/src/agent/be_exec_version_manager.h | 9 ++++++---
be/src/exprs/runtime_filter.cpp | 3 ++-
.../aggregate_functions/aggregate_function_bitmap.h | 19 ++++++++++---------
.../aggregate_function_window_funnel.h | 5 +++--
be/src/vec/functions/simple_function_factory.h | 4 ++--
be/test/exec/test_data/wal_scanner/wal | Bin 220 -> 180 bytes
.../main/java/org/apache/doris/common/Config.java | 2 +-
7 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/be/src/agent/be_exec_version_manager.h
b/be/src/agent/be_exec_version_manager.h
index afe738684aa..0290e3bee32 100644
--- a/be/src/agent/be_exec_version_manager.h
+++ b/be/src/agent/be_exec_version_manager.h
@@ -58,8 +58,10 @@ private:
* c. change the string hash method in runtime filter
* d. elt function return type change to nullable(string)
* e. add repeat_max_num in repeat function
- * 3: start from doris 2.1
+ * 3: start from doris 2.0 (by some mistakes)
* a. aggregation function do not serialize bitmap to string.
+ * 4: start from doris 2.1
+ * a. support window funnel mode from 2.0
* b. array contains/position/countequal function return nullable in less
situations.
* c. cleared old version of Version 2.
* d. unix_timestamp function support timestamp with float for datetimev2,
and change nullable mode.
@@ -67,10 +69,11 @@ private:
* f. shrink some function's nullable mode.
* g. do local merge of remote runtime filter
*/
-constexpr inline int BeExecVersionManager::max_be_exec_version = 3;
+constexpr inline int BeExecVersionManager::max_be_exec_version = 4;
constexpr inline int BeExecVersionManager::min_be_exec_version = 0;
/// functional
-constexpr inline int USE_NEW_SERDE = 3; // release on DORIS version 2.1
+constexpr inline int BITMAP_SERDE = 3;
+constexpr inline int USE_NEW_SERDE = 4; // release on DORIS version 2.1
} // namespace doris
diff --git a/be/src/exprs/runtime_filter.cpp b/be/src/exprs/runtime_filter.cpp
index 6e4f57ef8e1..e8e169e8b9e 100644
--- a/be/src/exprs/runtime_filter.cpp
+++ b/be/src/exprs/runtime_filter.cpp
@@ -32,6 +32,7 @@
#include <mutex>
#include <ostream>
+#include "agent/be_exec_version_manager.h"
#include "common/logging.h"
#include "common/object_pool.h"
#include "common/status.h"
@@ -993,7 +994,7 @@ Status IRuntimeFilter::publish(bool publish_local) {
} else if (_has_local_target) {
RETURN_IF_ERROR(send_to_local(_wrapper));
} else if (!publish_local) {
- if (_is_broadcast_join || _state->be_exec_version < 3) {
+ if (_is_broadcast_join || _state->be_exec_version < USE_NEW_SERDE) {
RETURN_IF_ERROR(send_to_remote(this));
} else {
RETURN_IF_ERROR(do_local_merge());
diff --git a/be/src/vec/aggregate_functions/aggregate_function_bitmap.h
b/be/src/vec/aggregate_functions/aggregate_function_bitmap.h
index e9973377697..d3db5257b45 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_bitmap.h
+++ b/be/src/vec/aggregate_functions/aggregate_function_bitmap.h
@@ -25,6 +25,7 @@
#include <string>
#include <vector>
+#include "agent/be_exec_version_manager.h"
#include "common/compiler_util.h" // IWYU pragma: keep
#include "util/bitmap_value.h"
#include "vec/aggregate_functions/aggregate_function.h"
@@ -159,7 +160,7 @@ public:
void streaming_agg_serialize_to_column(const IColumn** columns,
MutableColumnPtr& dst,
const size_t num_rows, Arena*
arena) const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
auto& col = assert_cast<ColumnBitmap&>(*dst);
char place[sizeof(Data)];
col.resize(num_rows);
@@ -177,7 +178,7 @@ public:
void serialize_to_column(const std::vector<AggregateDataPtr>& places,
size_t offset,
MutableColumnPtr& dst, const size_t num_rows)
const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
auto& col = assert_cast<ColumnBitmap&>(*dst);
col.resize(num_rows);
auto* data = col.get_data().data();
@@ -191,7 +192,7 @@ public:
void deserialize_and_merge_from_column(AggregateDataPtr __restrict place,
const IColumn& column,
Arena* arena) const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
auto& col = assert_cast<const ColumnBitmap&>(column);
const size_t num_rows = column.size();
auto* data = col.get_data().data();
@@ -209,7 +210,7 @@ public:
Arena* arena) const override {
DCHECK(end <= column.size() && begin <= end)
<< ", begin:" << begin << ", end:" << end << ",
column.size():" << column.size();
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
auto& col = assert_cast<const ColumnBitmap&>(column);
auto* data = col.get_data().data();
for (size_t i = begin; i <= end; ++i) {
@@ -223,7 +224,7 @@ public:
void deserialize_and_merge_vec(const AggregateDataPtr* places, size_t
offset,
AggregateDataPtr rhs, const ColumnString*
column, Arena* arena,
const size_t num_rows) const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
auto& col = assert_cast<const ColumnBitmap&>(*assert_cast<const
IColumn*>(column));
auto* data = col.get_data().data();
for (size_t i = 0; i != num_rows; ++i) {
@@ -237,7 +238,7 @@ public:
void deserialize_and_merge_vec_selected(const AggregateDataPtr* places,
size_t offset,
AggregateDataPtr rhs, const
ColumnString* column,
Arena* arena, const size_t
num_rows) const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
auto& col = assert_cast<const ColumnBitmap&>(*assert_cast<const
IColumn*>(column));
auto* data = col.get_data().data();
for (size_t i = 0; i != num_rows; ++i) {
@@ -253,7 +254,7 @@ public:
void serialize_without_key_to_column(ConstAggregateDataPtr __restrict
place,
IColumn& to) const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
auto& col = assert_cast<ColumnBitmap&>(to);
size_t old_size = col.size();
col.resize(old_size + 1);
@@ -264,7 +265,7 @@ public:
}
[[nodiscard]] MutableColumnPtr create_serialize_column() const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
return ColumnBitmap::create();
} else {
return ColumnString::create();
@@ -272,7 +273,7 @@ public:
}
[[nodiscard]] DataTypePtr get_serialized_type() const override {
- if (version >= 3) {
+ if (version >= BITMAP_SERDE) {
return std::make_shared<DataTypeBitMap>();
} else {
return IAggregateFunction::get_serialized_type();
diff --git a/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h
b/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h
index d11b45caef6..ed4c9aed059 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h
+++ b/be/src/vec/aggregate_functions/aggregate_function_window_funnel.h
@@ -32,6 +32,7 @@
#include <utility>
#include <vector>
+#include "agent/be_exec_version_manager.h"
#include "common/compiler_util.h"
#include "util/binary_cast.hpp"
#include "vec/aggregate_functions/aggregate_function.h"
@@ -269,8 +270,8 @@ public:
void create(AggregateDataPtr __restrict place) const override {
auto data = new (place) WindowFunnelState<DateValueType, NativeType>();
- /// support window funnel mode from 2.0. See
`BeExecVersionManager::max_be_exec_version`
- data->enable_mode = version >= 3;
+ /// support window funnel mode from 2.1. See
`BeExecVersionManager::max_be_exec_version`
+ data->enable_mode = version >= USE_NEW_SERDE;
}
String get_name() const override { return "window_funnel"; }
diff --git a/be/src/vec/functions/simple_function_factory.h
b/be/src/vec/functions/simple_function_factory.h
index a44861a2683..e71bab4b582 100644
--- a/be/src/vec/functions/simple_function_factory.h
+++ b/be/src/vec/functions/simple_function_factory.h
@@ -111,8 +111,8 @@ class SimpleFunctionFactory {
using Creator = std::function<FunctionBuilderPtr()>;
using FunctionCreators = phmap::flat_hash_map<std::string, Creator>;
using FunctionIsVariadic = phmap::flat_hash_set<std::string>;
- /// @TEMPORARY: for be_exec_version=3
- constexpr static int NEWEST_VERSION_FUNCTION_SUBSTITUTE = 3;
+ /// @TEMPORARY: for be_exec_version=4
+ constexpr static int NEWEST_VERSION_FUNCTION_SUBSTITUTE = 4;
public:
void register_function(const std::string& name, const Creator& ptr) {
diff --git a/be/test/exec/test_data/wal_scanner/wal
b/be/test/exec/test_data/wal_scanner/wal
index ddce7508946..2c5fe90963d 100644
Binary files a/be/test/exec/test_data/wal_scanner/wal and
b/be/test/exec/test_data/wal_scanner/wal differ
diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
index cbbf9368720..4dd10de1cea 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
@@ -1762,7 +1762,7 @@ public class Config extends ConfigBase {
* Max data version of backends serialize block.
*/
@ConfField(mutable = false)
- public static int max_be_exec_version = 3;
+ public static int max_be_exec_version = 4;
/**
* Min data version of backends serialize block.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]