This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new ceab16a7abb [chore](Mysql) remove unused code in MysqlResultWriter 
(#58699) (#59250)
ceab16a7abb is described below

commit ceab16a7abbc47dbd61e79caf807111676ef90c4
Author: Mryange <[email protected]>
AuthorDate: Tue Dec 23 12:57:13 2025 +0800

    [chore](Mysql) remove unused code in MysqlResultWriter (#58699) (#59250)
    
    None
    
    - Test <!-- At least one of them must be included. -->
        - [ ] Regression test
        - [ ] Unit Test
        - [ ] Manual test (add detailed scripts or steps below)
        - [x] No need to test or manual test. Explain why:
    - [x] This is a refactor/code format and no logic has been changed.
    - [ ] Previous test can cover this change. - [ ] No code files have been
    changed. - [ ] Other reason <!-- Add your reason? -->
    
    - Behavior changed:
        - [x] No.
        - [ ] Yes. <!-- Explain the behavior change -->
    
    - Does this need documentation?
        - [x] No.
    - [ ] Yes. <!-- Add document PR link here. eg:
    https://github.com/apache/doris-website/pull/1214 -->
    
    - [ ] Confirm the release note
    - [ ] Confirm test cases
    - [ ] Confirm document
    - [ ] Add branch pick label <!-- Add branch pick label that this PR
    should merge into -->
    
    ### What problem does this PR solve?
    
    Issue Number: close #xxx
    
    Related PR: #xxx
    
    Problem Summary:
    
    ### Release note
    
    None
    
    ### Check List (For Author)
    
    - Test <!-- At least one of them must be included. -->
        - [ ] Regression test
        - [ ] Unit Test
        - [ ] Manual test (add detailed scripts or steps below)
        - [ ] No need to test or manual test. Explain why:
    - [ ] This is a refactor/code format and no logic has been changed.
            - [ ] Previous test can cover this change.
            - [ ] No code files have been changed.
            - [ ] Other reason <!-- Add your reason?  -->
    
    - Behavior changed:
        - [ ] No.
        - [ ] Yes. <!-- Explain the behavior change -->
    
    - Does this need documentation?
        - [ ] No.
    - [ ] Yes. <!-- Add document PR link here. eg:
    https://github.com/apache/doris-website/pull/1214 -->
    
    ### Check List (For Reviewer who merge this PR)
    
    - [ ] Confirm the release note
    - [ ] Confirm test cases
    - [ ] Confirm document
    - [ ] Add branch pick label <!-- Add branch pick label that this PR
    should merge into -->
---
 be/src/pipeline/exec/result_sink_operator.cpp      |  9 +--
 be/src/service/point_query_executor.cpp            | 21 ++----
 .../vec/data_types/serde/data_type_array_serde.cpp |  4 +-
 .../vec/data_types/serde/data_type_array_serde.h   |  3 +-
 .../data_types/serde/data_type_bitmap_serde.cpp    |  3 +-
 .../vec/data_types/serde/data_type_bitmap_serde.h  |  3 +-
 .../serde/data_type_date_or_datetime_serde.cpp     | 18 +----
 .../serde/data_type_date_or_datetime_serde.h       |  6 +-
 .../serde/data_type_datetimev2_serde.cpp           | 16 +----
 .../data_types/serde/data_type_datetimev2_serde.h  |  3 +-
 .../data_types/serde/data_type_datev2_serde.cpp    | 15 +---
 .../vec/data_types/serde/data_type_datev2_serde.h  |  3 +-
 .../data_types/serde/data_type_decimal_serde.cpp   |  4 +-
 .../vec/data_types/serde/data_type_decimal_serde.h |  3 +-
 .../vec/data_types/serde/data_type_hll_serde.cpp   |  3 +-
 be/src/vec/data_types/serde/data_type_hll_serde.h  |  3 +-
 .../vec/data_types/serde/data_type_ipv4_serde.cpp  | 15 +---
 be/src/vec/data_types/serde/data_type_ipv4_serde.h |  3 +-
 .../vec/data_types/serde/data_type_ipv6_serde.cpp  | 15 +---
 be/src/vec/data_types/serde/data_type_ipv6_serde.h |  3 +-
 .../vec/data_types/serde/data_type_jsonb_serde.cpp |  3 +-
 .../vec/data_types/serde/data_type_jsonb_serde.h   |  3 +-
 .../vec/data_types/serde/data_type_map_serde.cpp   |  3 +-
 be/src/vec/data_types/serde/data_type_map_serde.h  |  3 +-
 .../vec/data_types/serde/data_type_nothing_serde.h |  3 +-
 .../data_types/serde/data_type_nullable_serde.cpp  |  5 +-
 .../data_types/serde/data_type_nullable_serde.h    |  3 +-
 .../data_types/serde/data_type_number_serde.cpp    | 10 +--
 .../vec/data_types/serde/data_type_number_serde.h  |  3 +-
 .../serde/data_type_quantilestate_serde.h          |  3 +-
 be/src/vec/data_types/serde/data_type_serde.h      |  3 +-
 .../vec/data_types/serde/data_type_string_serde.h  |  3 +-
 .../data_types/serde/data_type_struct_serde.cpp    |  3 +-
 .../vec/data_types/serde/data_type_struct_serde.h  |  3 +-
 .../vec/data_types/serde/data_type_time_serde.cpp  | 15 +---
 be/src/vec/data_types/serde/data_type_time_serde.h |  3 +-
 .../data_types/serde/data_type_varbinary_serde.cpp |  3 +-
 .../data_types/serde/data_type_varbinary_serde.h   |  3 +-
 .../data_types/serde/data_type_variant_serde.cpp   |  3 +-
 .../vec/data_types/serde/data_type_variant_serde.h |  3 +-
 be/src/vec/sink/vmysql_result_writer.cpp           | 79 ++++------------------
 be/src/vec/sink/vmysql_result_writer.h             |  7 +-
 .../serde/data_type_jsonb_serde_test.cpp           |  2 +-
 .../serde/data_type_serde_mysql_test.cpp           |  2 +-
 .../serde/data_type_serde_varbinary_test.cpp       |  4 +-
 45 files changed, 72 insertions(+), 256 deletions(-)

diff --git a/be/src/pipeline/exec/result_sink_operator.cpp 
b/be/src/pipeline/exec/result_sink_operator.cpp
index b1e06ee48bb..76cdb648239 100644
--- a/be/src/pipeline/exec/result_sink_operator.cpp
+++ b/be/src/pipeline/exec/result_sink_operator.cpp
@@ -77,13 +77,8 @@ Status ResultSinkLocalState::open(RuntimeState* state) {
     // create writer based on sink type
     switch (p._sink_type) {
     case TResultSinkType::MYSQL_PROTOCOL: {
-        if (state->mysql_row_binary_format()) {
-            _writer.reset(new (std::nothrow) 
vectorized::VMysqlResultWriter<true>(
-                    _sender, _output_vexpr_ctxs, custom_profile()));
-        } else {
-            _writer.reset(new (std::nothrow) 
vectorized::VMysqlResultWriter<false>(
-                    _sender, _output_vexpr_ctxs, custom_profile()));
-        }
+        _writer.reset(new (std::nothrow) vectorized::VMysqlResultWriter(
+                _sender, _output_vexpr_ctxs, custom_profile(), 
state->mysql_row_binary_format()));
         break;
     }
     case TResultSinkType::ARROW_FLIGHT_PROTOCOL: {
diff --git a/be/src/service/point_query_executor.cpp 
b/be/src/service/point_query_executor.cpp
index a6c7c7e527a..2bc6d1716ab 100644
--- a/be/src/service/point_query_executor.cpp
+++ b/be/src/service/point_query_executor.cpp
@@ -590,21 +590,12 @@ Status PointQueryExecutor::_output_data() {
         RuntimeState state;
         auto buffer = std::make_shared<PointQueryResultBlockBuffer>(&state);
         // TODO reuse mysql_writer
-        if (_binary_row_format) {
-            vectorized::VMysqlResultWriter<true> mysql_writer(buffer, 
_reusable->output_exprs(),
-                                                              nullptr);
-            RETURN_IF_ERROR(mysql_writer.init(_reusable->runtime_state()));
-            _result_block->clear_names();
-            RETURN_IF_ERROR(mysql_writer.write(_reusable->runtime_state(), 
*_result_block));
-            RETURN_IF_ERROR(serialize_block(buffer->get_block(), _response));
-        } else {
-            vectorized::VMysqlResultWriter<false> mysql_writer(buffer, 
_reusable->output_exprs(),
-                                                               nullptr);
-            RETURN_IF_ERROR(mysql_writer.init(_reusable->runtime_state()));
-            _result_block->clear_names();
-            RETURN_IF_ERROR(mysql_writer.write(_reusable->runtime_state(), 
*_result_block));
-            RETURN_IF_ERROR(serialize_block(buffer->get_block(), _response));
-        }
+        vectorized::VMysqlResultWriter mysql_writer(buffer, 
_reusable->output_exprs(), nullptr,
+                                                    _binary_row_format);
+        RETURN_IF_ERROR(mysql_writer.init(_reusable->runtime_state()));
+        _result_block->clear_names();
+        RETURN_IF_ERROR(mysql_writer.write(_reusable->runtime_state(), 
*_result_block));
+        RETURN_IF_ERROR(serialize_block(buffer->get_block(), _response));
         VLOG_DEBUG << "dump block " << _result_block->dump_data();
     } else {
         _response->set_empty_batch(true);
diff --git a/be/src/vec/data_types/serde/data_type_array_serde.cpp 
b/be/src/vec/data_types/serde/data_type_array_serde.cpp
index b0d1d9e6df0..ccbc886eeed 100644
--- a/be/src/vec/data_types/serde/data_type_array_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_array_serde.cpp
@@ -349,8 +349,8 @@ Status DataTypeArraySerDe::read_column_from_arrow(IColumn& 
column, const arrow::
 
 Status DataTypeArraySerDe::write_column_to_mysql_binary(const IColumn& column,
                                                         MysqlRowBinaryBuffer& 
result,
-                                                        int64_t 
row_idx_of_mysql, bool col_const,
-                                                        const FormatOptions& 
options) const {
+                                                        int64_t 
row_idx_of_mysql,
+                                                        bool col_const) const {
     return Status::NotSupported("Array type does not support write to mysql 
binary format");
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_array_serde.h 
b/be/src/vec/data_types/serde/data_type_array_serde.h
index 5ce66a97fa0..c26331c6d91 100644
--- a/be/src/vec/data_types/serde/data_type_array_serde.h
+++ b/be/src/vec/data_types/serde/data_type_array_serde.h
@@ -91,8 +91,7 @@ public:
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
     bool write_column_to_presto_text(const IColumn& column, BufferWritable& bw,
                                      int64_t row_idx) const override;
 
diff --git a/be/src/vec/data_types/serde/data_type_bitmap_serde.cpp 
b/be/src/vec/data_types/serde/data_type_bitmap_serde.cpp
index 179c1336e44..8354153487f 100644
--- a/be/src/vec/data_types/serde/data_type_bitmap_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_bitmap_serde.cpp
@@ -152,8 +152,7 @@ void DataTypeBitMapSerDe::read_one_cell_from_jsonb(IColumn& 
column, const JsonbV
 
 Status DataTypeBitMapSerDe::write_column_to_mysql_binary(const IColumn& column,
                                                          MysqlRowBinaryBuffer& 
result,
-                                                         int64_t row_idx, bool 
col_const,
-                                                         const FormatOptions& 
options) const {
+                                                         int64_t row_idx, bool 
col_const) const {
     return Status::NotSupported("Bitmap type does not support write to mysql 
binary format");
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_bitmap_serde.h 
b/be/src/vec/data_types/serde/data_type_bitmap_serde.h
index 3a07ad18e2b..1640a13fa01 100644
--- a/be/src/vec/data_types/serde/data_type_bitmap_serde.h
+++ b/be/src/vec/data_types/serde/data_type_bitmap_serde.h
@@ -72,8 +72,7 @@ public:
     }
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     bool write_column_to_mysql_text(const IColumn& column, BufferWritable& bw,
                                     int64_t row_idx) const override;
diff --git a/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.cpp 
b/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.cpp
index a3e3ca23b1d..db6386bedcb 100644
--- a/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.cpp
@@ -251,28 +251,16 @@ Status 
DataTypeDateSerDe<T>::read_column_from_arrow(IColumn& column,
 }
 
 template <PrimitiveType T>
-Status DataTypeDateSerDe<T>::write_column_to_mysql_binary(
-        const IColumn& column, MysqlRowBinaryBuffer& result, int64_t row_idx, 
bool col_const,
-        const typename DataTypeNumberSerDe<T>::FormatOptions& options) const {
+Status DataTypeDateSerDe<T>::write_column_to_mysql_binary(const IColumn& 
column,
+                                                          
MysqlRowBinaryBuffer& result,
+                                                          int64_t row_idx, 
bool col_const) const {
     const auto& data = assert_cast<const ColumnVector<T>&>(column).get_data();
     const auto col_index = index_check_const(row_idx, col_const);
     auto time_num = data[col_index];
     VecDateTimeValue time_val = binary_cast<Int64, VecDateTimeValue>(time_num);
-    // _nesting_level >= 2 means this datetimev2 is in complex type
-    // and we should add double quotes
-    if (DataTypeNumberSerDe<T>::_nesting_level >= 2 && options.wrapper_len > 
0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     if (UNLIKELY(0 != result.push_vec_datetime(time_val))) {
         return Status::InternalError("pack mysql buffer failed.");
     }
-    if (DataTypeNumberSerDe<T>::_nesting_level >= 2 && options.wrapper_len > 
0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     return Status::OK();
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.h 
b/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.h
index 16de6a8e46c..d5900cc946b 100644
--- a/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.h
+++ b/be/src/vec/data_types/serde/data_type_date_or_datetime_serde.h
@@ -104,10 +104,8 @@ public:
                                  const cctz::time_zone& ctz) const override;
     Status read_column_from_arrow(IColumn& column, const arrow::Array* 
arrow_array, int64_t start,
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
-    Status write_column_to_mysql_binary(
-            const IColumn& column, MysqlRowBinaryBuffer& row_buffer, int64_t 
row_idx,
-            bool col_const,
-            const typename DataTypeNumberSerDe<T>::FormatOptions& options) 
const override;
+    Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp 
b/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp
index 71b7d750a25..613955467d3 100644
--- a/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp
@@ -426,27 +426,15 @@ Status 
DataTypeDateTimeV2SerDe::read_column_from_arrow(IColumn& column,
 
 Status DataTypeDateTimeV2SerDe::write_column_to_mysql_binary(const IColumn& 
column,
                                                              
MysqlRowBinaryBuffer& result,
-                                                             int64_t row_idx, 
bool col_const,
-                                                             const 
FormatOptions& options) const {
+                                                             int64_t row_idx,
+                                                             bool col_const) 
const {
     const auto& data = assert_cast<const ColumnDateTimeV2&>(column).get_data();
     const auto col_index = index_check_const(row_idx, col_const);
     DateV2Value<DateTimeV2ValueType> date_val =
             binary_cast<UInt64, 
DateV2Value<DateTimeV2ValueType>>(data[col_index]);
-    // _nesting_level >= 2 means this datetimev2 is in complex type
-    // and we should add double quotes
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     if (UNLIKELY(0 != result.push_vec_datetime(date_val, _scale))) {
         return Status::InternalError("pack mysql buffer failed.");
     }
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     return Status::OK();
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_datetimev2_serde.h 
b/be/src/vec/data_types/serde/data_type_datetimev2_serde.h
index 7a1f4c2f52c..0bf479d2931 100644
--- a/be/src/vec/data_types/serde/data_type_datetimev2_serde.h
+++ b/be/src/vec/data_types/serde/data_type_datetimev2_serde.h
@@ -90,8 +90,7 @@ public:
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/data_types/serde/data_type_datev2_serde.cpp 
b/be/src/vec/data_types/serde/data_type_datev2_serde.cpp
index eaa0ba12e4c..f498c0cc18d 100644
--- a/be/src/vec/data_types/serde/data_type_datev2_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_datev2_serde.cpp
@@ -130,27 +130,14 @@ Status 
DataTypeDateV2SerDe::read_column_from_arrow(IColumn& column, const arrow:
 
 Status DataTypeDateV2SerDe::write_column_to_mysql_binary(const IColumn& column,
                                                          MysqlRowBinaryBuffer& 
result,
-                                                         int64_t row_idx, bool 
col_const,
-                                                         const FormatOptions& 
options) const {
+                                                         int64_t row_idx, bool 
col_const) const {
     const auto& data = assert_cast<const ColumnDateV2&>(column).get_data();
     auto col_index = index_check_const(row_idx, col_const);
     DateV2Value<DateV2ValueType> date_val =
             binary_cast<UInt32, DateV2Value<DateV2ValueType>>(data[col_index]);
-    // _nesting_level >= 2 means this datetimev2 is in complex type
-    // and we should add double quotes
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     if (UNLIKELY(0 != result.push_vec_datetime(date_val))) {
         return Status::InternalError("pack mysql buffer failed.");
     }
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     return Status::OK();
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_datev2_serde.h 
b/be/src/vec/data_types/serde/data_type_datev2_serde.h
index 5a429e1dd40..9a353ba4886 100644
--- a/be/src/vec/data_types/serde/data_type_datev2_serde.h
+++ b/be/src/vec/data_types/serde/data_type_datev2_serde.h
@@ -87,8 +87,7 @@ public:
     Status read_column_from_arrow(IColumn& column, const arrow::Array* 
arrow_array, int64_t start,
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/data_types/serde/data_type_decimal_serde.cpp 
b/be/src/vec/data_types/serde/data_type_decimal_serde.cpp
index 26239e11ab7..87e8ebcb513 100644
--- a/be/src/vec/data_types/serde/data_type_decimal_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_decimal_serde.cpp
@@ -358,8 +358,8 @@ Status 
DataTypeDecimalSerDe<T>::read_column_from_arrow(IColumn& column,
 template <PrimitiveType T>
 Status DataTypeDecimalSerDe<T>::write_column_to_mysql_binary(const IColumn& 
column,
                                                              
MysqlRowBinaryBuffer& result,
-                                                             int64_t row_idx, 
bool col_const,
-                                                             const 
FormatOptions& options) const {
+                                                             int64_t row_idx,
+                                                             bool col_const) 
const {
     auto& data = assert_cast<const ColumnDecimal<T>&>(column).get_data();
     const auto col_index = index_check_const(row_idx, col_const);
     if constexpr (T == TYPE_DECIMALV2) {
diff --git a/be/src/vec/data_types/serde/data_type_decimal_serde.h 
b/be/src/vec/data_types/serde/data_type_decimal_serde.h
index 16b46e842de..4d98d565137 100644
--- a/be/src/vec/data_types/serde/data_type_decimal_serde.h
+++ b/be/src/vec/data_types/serde/data_type_decimal_serde.h
@@ -109,8 +109,7 @@ public:
     Status read_column_from_arrow(IColumn& column, const arrow::Array* 
arrow_array, int64_t start,
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/data_types/serde/data_type_hll_serde.cpp 
b/be/src/vec/data_types/serde/data_type_hll_serde.cpp
index de6b4df77b5..c410c5e837b 100644
--- a/be/src/vec/data_types/serde/data_type_hll_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_hll_serde.cpp
@@ -149,8 +149,7 @@ Status DataTypeHLLSerDe::write_column_to_arrow(const 
IColumn& column, const Null
 
 Status DataTypeHLLSerDe::write_column_to_mysql_binary(const IColumn& column,
                                                       MysqlRowBinaryBuffer& 
result, int64_t row_idx,
-                                                      bool col_const,
-                                                      const FormatOptions& 
options) const {
+                                                      bool col_const) const {
     return Status::NotSupported("Bitmap type does not support write to mysql 
binary format");
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_hll_serde.h 
b/be/src/vec/data_types/serde/data_type_hll_serde.h
index 363ade07157..779da5312a6 100644
--- a/be/src/vec/data_types/serde/data_type_hll_serde.h
+++ b/be/src/vec/data_types/serde/data_type_hll_serde.h
@@ -66,8 +66,7 @@ public:
     }
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     bool write_column_to_mysql_text(const IColumn& column, BufferWritable& bw,
                                     int64_t row_idx) const override;
diff --git a/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp 
b/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp
index 6df33a9ec8b..875f545abb2 100644
--- a/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp
@@ -29,26 +29,13 @@ namespace doris::vectorized {
 
 Status DataTypeIPv4SerDe::write_column_to_mysql_binary(const IColumn& column,
                                                        MysqlRowBinaryBuffer& 
result,
-                                                       int64_t row_idx, bool 
col_const,
-                                                       const FormatOptions& 
options) const {
+                                                       int64_t row_idx, bool 
col_const) const {
     auto& data = assert_cast<const ColumnIPv4&>(column).get_data();
     auto col_index = index_check_const(row_idx, col_const);
     IPv4Value ipv4_val(data[col_index]);
-    // _nesting_level >= 2 means this ipv4 is in complex type
-    // and we should add double quotes
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     if (UNLIKELY(0 != result.push_ipv4(ipv4_val))) {
         return Status::InternalError("pack mysql buffer failed.");
     }
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     return Status::OK();
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_ipv4_serde.h 
b/be/src/vec/data_types/serde/data_type_ipv4_serde.h
index 7208477a3c8..458ca62685d 100644
--- a/be/src/vec/data_types/serde/data_type_ipv4_serde.h
+++ b/be/src/vec/data_types/serde/data_type_ipv4_serde.h
@@ -41,8 +41,7 @@ public:
             : DataTypeNumberSerDe<PrimitiveType::TYPE_IPV4>(nesting_level) {};
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
     Status serialize_one_cell_to_json(const IColumn& column, int64_t row_num, 
BufferWritable& bw,
                                       FormatOptions& options) const override;
     Status deserialize_one_cell_from_json(IColumn& column, Slice& slice,
diff --git a/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp 
b/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp
index 89c6a4114f2..7e680418785 100644
--- a/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp
@@ -33,26 +33,13 @@ namespace doris::vectorized {
 
 Status DataTypeIPv6SerDe::write_column_to_mysql_binary(const IColumn& column,
                                                        MysqlRowBinaryBuffer& 
result,
-                                                       int64_t row_idx, bool 
col_const,
-                                                       const FormatOptions& 
options) const {
+                                                       int64_t row_idx, bool 
col_const) const {
     auto& data = assert_cast<const ColumnIPv6&>(column).get_data();
     auto col_index = index_check_const(row_idx, col_const);
     IPv6Value ipv6_val(data[col_index]);
-    // _nesting_level >= 2 means this datetimev2 is in complex type
-    // and we should add double quotes
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     if (UNLIKELY(0 != result.push_ipv6(ipv6_val))) {
         return Status::InternalError("pack mysql buffer failed.");
     }
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     return Status::OK();
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_ipv6_serde.h 
b/be/src/vec/data_types/serde/data_type_ipv6_serde.h
index cb79451d54c..100c811e1a4 100644
--- a/be/src/vec/data_types/serde/data_type_ipv6_serde.h
+++ b/be/src/vec/data_types/serde/data_type_ipv6_serde.h
@@ -44,8 +44,7 @@ public:
             : DataTypeNumberSerDe<PrimitiveType::TYPE_IPV6>(nesting_level) {};
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
     Status serialize_one_cell_to_json(const IColumn& column, int64_t row_num, 
BufferWritable& bw,
                                       FormatOptions& options) const override;
     Status deserialize_one_cell_from_json(IColumn& column, Slice& slice,
diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp 
b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
index 9e5ce5ae68a..3d665064578 100644
--- a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
@@ -37,8 +37,7 @@ namespace vectorized {
 
 Status DataTypeJsonbSerDe::write_column_to_mysql_binary(const IColumn& column,
                                                         MysqlRowBinaryBuffer& 
result,
-                                                        int64_t row_idx, bool 
col_const,
-                                                        const FormatOptions& 
options) const {
+                                                        int64_t row_idx, bool 
col_const) const {
     auto& data = assert_cast<const ColumnString&>(column);
     const auto col_index = index_check_const(row_idx, col_const);
     const auto jsonb_val = data.get_data_at(col_index);
diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.h 
b/be/src/vec/data_types/serde/data_type_jsonb_serde.h
index 95c60ae583b..df62ea14584 100644
--- a/be/src/vec/data_types/serde/data_type_jsonb_serde.h
+++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.h
@@ -42,8 +42,7 @@ public:
                        const FormatOptions& options) const override;
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
     Status write_column_to_arrow(const IColumn& column, const NullMap* 
null_map,
                                  arrow::ArrayBuilder* array_builder, int64_t 
start, int64_t end,
                                  const cctz::time_zone& ctz) const override;
diff --git a/be/src/vec/data_types/serde/data_type_map_serde.cpp 
b/be/src/vec/data_types/serde/data_type_map_serde.cpp
index 91a63239d5e..f21e7f3ee9b 100644
--- a/be/src/vec/data_types/serde/data_type_map_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_map_serde.cpp
@@ -421,8 +421,7 @@ Status DataTypeMapSerDe::read_column_from_arrow(IColumn& 
column, const arrow::Ar
 
 Status DataTypeMapSerDe::write_column_to_mysql_binary(const IColumn& column,
                                                       MysqlRowBinaryBuffer& 
result, int64_t row_idx,
-                                                      bool col_const,
-                                                      const FormatOptions& 
options) const {
+                                                      bool col_const) const {
     return Status::NotSupported("Map type does not support write to mysql 
binary format");
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_map_serde.h 
b/be/src/vec/data_types/serde/data_type_map_serde.h
index 4d0fd4cb6f8..645c085f6c4 100644
--- a/be/src/vec/data_types/serde/data_type_map_serde.h
+++ b/be/src/vec/data_types/serde/data_type_map_serde.h
@@ -87,8 +87,7 @@ public:
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/data_types/serde/data_type_nothing_serde.h 
b/be/src/vec/data_types/serde/data_type_nothing_serde.h
index 6d3a6e50a27..e9f6e8600e4 100644
--- a/be/src/vec/data_types/serde/data_type_nothing_serde.h
+++ b/be/src/vec/data_types/serde/data_type_nothing_serde.h
@@ -92,8 +92,7 @@ public:
     }
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override {
+                                        int64_t row_idx, bool col_const) const 
override {
         return Status::NotSupported("write_column_to_mysql with type " + 
column.get_name());
     }
 
diff --git a/be/src/vec/data_types/serde/data_type_nullable_serde.cpp 
b/be/src/vec/data_types/serde/data_type_nullable_serde.cpp
index 96b034955a3..3737d8728ff 100644
--- a/be/src/vec/data_types/serde/data_type_nullable_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_nullable_serde.cpp
@@ -401,8 +401,7 @@ bool DataTypeNullableSerDe::write_column_to_hive_text(const 
IColumn& column, Buf
 
 Status DataTypeNullableSerDe::write_column_to_mysql_binary(const IColumn& 
column,
                                                            
MysqlRowBinaryBuffer& result,
-                                                           int64_t row_idx, 
bool col_const,
-                                                           const 
FormatOptions& options) const {
+                                                           int64_t row_idx, 
bool col_const) const {
     const auto& col = assert_cast<const ColumnNullable&>(column);
     const auto col_index = index_check_const(row_idx, col_const);
     if (col.has_null() && col.is_null_at(col_index)) {
@@ -412,7 +411,7 @@ Status 
DataTypeNullableSerDe::write_column_to_mysql_binary(const IColumn& column
     } else {
         const auto& nested_col = col.get_nested_column();
         RETURN_IF_ERROR(nested_serde->write_column_to_mysql_binary(nested_col, 
result, col_index,
-                                                                   col_const, 
options));
+                                                                   col_const));
     }
     return Status::OK();
 }
diff --git a/be/src/vec/data_types/serde/data_type_nullable_serde.h 
b/be/src/vec/data_types/serde/data_type_nullable_serde.h
index e8ef275f2e5..1a218d1225b 100644
--- a/be/src/vec/data_types/serde/data_type_nullable_serde.h
+++ b/be/src/vec/data_types/serde/data_type_nullable_serde.h
@@ -86,8 +86,7 @@ public:
     Status read_column_from_arrow(IColumn& column, const arrow::Array* 
arrow_array, int64_t start,
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
     bool write_column_to_mysql_text(const IColumn& column, BufferWritable& bw,
                                     int64_t row_idx) const override;
 
diff --git a/be/src/vec/data_types/serde/data_type_number_serde.cpp 
b/be/src/vec/data_types/serde/data_type_number_serde.cpp
index 15cb6a0bb5b..f66693313c8 100644
--- a/be/src/vec/data_types/serde/data_type_number_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_number_serde.cpp
@@ -463,20 +463,14 @@ void 
DataTypeNumberSerDe<T>::insert_column_last_value_multiple_times(IColumn& co
 template <PrimitiveType T>
 Status DataTypeNumberSerDe<T>::write_column_to_mysql_binary(const IColumn& 
column,
                                                             
MysqlRowBinaryBuffer& result,
-                                                            int64_t row_idx, 
bool col_const,
-                                                            const 
FormatOptions& options) const {
+                                                            int64_t row_idx, 
bool col_const) const {
     int buf_ret = 0;
     auto& data = assert_cast<const ColumnType&>(column).get_data();
     const auto col_index = index_check_const(row_idx, col_const);
     if constexpr (T == TYPE_TINYINT) {
         buf_ret = result.push_tinyint(data[col_index]);
     } else if constexpr (T == TYPE_BOOLEAN) {
-        if (_nesting_level > 1 && !options.is_bool_value_num) {
-            std::string bool_value = data[col_index] ? "true" : "false";
-            result.push_string(bool_value.c_str(), bool_value.size());
-        } else {
-            buf_ret = result.push_tinyint(data[col_index]);
-        }
+        buf_ret = result.push_tinyint(data[col_index]);
     } else if constexpr (T == TYPE_SMALLINT) {
         buf_ret = result.push_smallint(data[col_index]);
     } else if constexpr (T == TYPE_INT || T == TYPE_DATEV2 || T == TYPE_IPV4) {
diff --git a/be/src/vec/data_types/serde/data_type_number_serde.h 
b/be/src/vec/data_types/serde/data_type_number_serde.h
index cbd4c014cf6..be113d28a47 100644
--- a/be/src/vec/data_types/serde/data_type_number_serde.h
+++ b/be/src/vec/data_types/serde/data_type_number_serde.h
@@ -117,8 +117,7 @@ public:
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
                                int64_t start, int64_t end, vectorized::Arena& 
arena) const override;
diff --git a/be/src/vec/data_types/serde/data_type_quantilestate_serde.h 
b/be/src/vec/data_types/serde/data_type_quantilestate_serde.h
index af9ae56ced1..8dbdef9a987 100644
--- a/be/src/vec/data_types/serde/data_type_quantilestate_serde.h
+++ b/be/src/vec/data_types/serde/data_type_quantilestate_serde.h
@@ -126,8 +126,7 @@ public:
     }
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& result,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override {
+                                        int64_t row_idx, bool col_const) const 
override {
         return Status::NotSupported("write_column_to_mysql_binary with type " 
+ column.get_name());
     }
 
diff --git a/be/src/vec/data_types/serde/data_type_serde.h 
b/be/src/vec/data_types/serde/data_type_serde.h
index 52961f75e5b..e8594f385f8 100644
--- a/be/src/vec/data_types/serde/data_type_serde.h
+++ b/be/src/vec/data_types/serde/data_type_serde.h
@@ -427,8 +427,7 @@ public:
 
     virtual Status write_column_to_mysql_binary(const IColumn& column,
                                                 MysqlRowBinaryBuffer& 
row_buffer, int64_t row_idx,
-                                                bool col_const,
-                                                const FormatOptions& options) 
const = 0;
+                                                bool col_const) const = 0;
     // Thrift serializer and deserializer
 
     // JSON serializer and deserializer
diff --git a/be/src/vec/data_types/serde/data_type_string_serde.h 
b/be/src/vec/data_types/serde/data_type_string_serde.h
index 7f849df74cd..67d4c3ee80c 100644
--- a/be/src/vec/data_types/serde/data_type_string_serde.h
+++ b/be/src/vec/data_types/serde/data_type_string_serde.h
@@ -204,8 +204,7 @@ public:
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& result,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override {
+                                        int64_t row_idx, bool col_const) const 
override {
         const auto col_index = index_check_const(row_idx, col_const);
         const auto string_val = assert_cast<const 
ColumnType&>(column).get_data_at(col_index);
         result.push_string(string_val.data, string_val.size);
diff --git a/be/src/vec/data_types/serde/data_type_struct_serde.cpp 
b/be/src/vec/data_types/serde/data_type_struct_serde.cpp
index f5c22d08fcd..2c951fa8c50 100644
--- a/be/src/vec/data_types/serde/data_type_struct_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_struct_serde.cpp
@@ -431,8 +431,7 @@ Status DataTypeStructSerDe::read_column_from_arrow(IColumn& 
column, const arrow:
 
 Status DataTypeStructSerDe::write_column_to_mysql_binary(const IColumn& column,
                                                          MysqlRowBinaryBuffer& 
result,
-                                                         int64_t row_idx, bool 
col_const,
-                                                         const FormatOptions& 
options) const {
+                                                         int64_t row_idx, bool 
col_const) const {
     return Status::NotSupported("Struct type does not support write to mysql 
binary format");
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_struct_serde.h 
b/be/src/vec/data_types/serde/data_type_struct_serde.h
index 6c7ce49b6ff..6223ed93e87 100644
--- a/be/src/vec/data_types/serde/data_type_struct_serde.h
+++ b/be/src/vec/data_types/serde/data_type_struct_serde.h
@@ -88,8 +88,7 @@ public:
                                   int64_t end, const cctz::time_zone& ctz) 
const override;
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/data_types/serde/data_type_time_serde.cpp 
b/be/src/vec/data_types/serde/data_type_time_serde.cpp
index 2e2da4ac076..34dcd1759f0 100644
--- a/be/src/vec/data_types/serde/data_type_time_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_time_serde.cpp
@@ -29,25 +29,12 @@ namespace doris::vectorized {
 
 Status DataTypeTimeV2SerDe::write_column_to_mysql_binary(const IColumn& column,
                                                          MysqlRowBinaryBuffer& 
result,
-                                                         int64_t row_idx, bool 
col_const,
-                                                         const FormatOptions& 
options) const {
+                                                         int64_t row_idx, bool 
col_const) const {
     const auto& data = assert_cast<const ColumnTimeV2&>(column).get_data();
     const auto col_index = index_check_const(row_idx, col_const);
-    // _nesting_level >= 2 means this time is in complex type
-    // and we should add double quotes
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     if (UNLIKELY(0 != result.push_timev2(data[col_index], _scale))) {
         return Status::InternalError("pack mysql buffer failed.");
     }
-    if (_nesting_level >= 2 && options.wrapper_len > 0) {
-        if (UNLIKELY(0 != result.push_string(options.nested_string_wrapper, 
options.wrapper_len))) {
-            return Status::InternalError("pack mysql buffer failed.");
-        }
-    }
     return Status::OK();
 }
 
diff --git a/be/src/vec/data_types/serde/data_type_time_serde.h 
b/be/src/vec/data_types/serde/data_type_time_serde.h
index 8184e0eed09..b8aba827d1d 100644
--- a/be/src/vec/data_types/serde/data_type_time_serde.h
+++ b/be/src/vec/data_types/serde/data_type_time_serde.h
@@ -33,8 +33,7 @@ public:
     DataTypeTimeV2SerDe(int scale = 0, int nesting_level = 1)
             : DataTypeNumberSerDe<PrimitiveType::TYPE_TIMEV2>(nesting_level), 
_scale(scale) {};
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status from_string(StringRef& str, IColumn& column,
                        const FormatOptions& options) const override;
diff --git a/be/src/vec/data_types/serde/data_type_varbinary_serde.cpp 
b/be/src/vec/data_types/serde/data_type_varbinary_serde.cpp
index f22b0b67157..e33459bf79d 100644
--- a/be/src/vec/data_types/serde/data_type_varbinary_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_varbinary_serde.cpp
@@ -38,8 +38,7 @@ void 
DataTypeVarbinarySerDe::read_one_cell_from_jsonb(IColumn& column,
 
 Status DataTypeVarbinarySerDe::write_column_to_mysql_binary(const IColumn& 
column,
                                                             
MysqlRowBinaryBuffer& result,
-                                                            int64_t row_idx, 
bool col_const,
-                                                            const 
FormatOptions& options) const {
+                                                            int64_t row_idx, 
bool col_const) const {
     auto col_index = index_check_const(row_idx, col_const);
     auto data = assert_cast<const 
ColumnVarbinary&>(column).get_data()[col_index];
 
diff --git a/be/src/vec/data_types/serde/data_type_varbinary_serde.h 
b/be/src/vec/data_types/serde/data_type_varbinary_serde.h
index 418ab883207..986fef7c89c 100644
--- a/be/src/vec/data_types/serde/data_type_varbinary_serde.h
+++ b/be/src/vec/data_types/serde/data_type_varbinary_serde.h
@@ -83,8 +83,7 @@ public:
     }
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/data_types/serde/data_type_variant_serde.cpp 
b/be/src/vec/data_types/serde/data_type_variant_serde.cpp
index 8ec3e5d2a90..df21b7ad1dd 100644
--- a/be/src/vec/data_types/serde/data_type_variant_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_variant_serde.cpp
@@ -42,8 +42,7 @@ namespace vectorized {
 
 Status DataTypeVariantSerDe::write_column_to_mysql_binary(const IColumn& 
column,
                                                           
MysqlRowBinaryBuffer& row_buffer,
-                                                          int64_t row_idx, 
bool col_const,
-                                                          const FormatOptions& 
options) const {
+                                                          int64_t row_idx, 
bool col_const) const {
     const auto& variant = assert_cast<const ColumnVariant&>(column);
     // Serialize hierarchy types to json format
     std::string buffer;
diff --git a/be/src/vec/data_types/serde/data_type_variant_serde.h 
b/be/src/vec/data_types/serde/data_type_variant_serde.h
index 7840be02e79..47ffc393eba 100644
--- a/be/src/vec/data_types/serde/data_type_variant_serde.h
+++ b/be/src/vec/data_types/serde/data_type_variant_serde.h
@@ -73,8 +73,7 @@ public:
     }
 
     Status write_column_to_mysql_binary(const IColumn& column, 
MysqlRowBinaryBuffer& row_buffer,
-                                        int64_t row_idx, bool col_const,
-                                        const FormatOptions& options) const 
override;
+                                        int64_t row_idx, bool col_const) const 
override;
 
     Status write_column_to_orc(const std::string& timezone, const IColumn& 
column,
                                const NullMap* null_map, 
orc::ColumnVectorBatch* orc_col_batch,
diff --git a/be/src/vec/sink/vmysql_result_writer.cpp 
b/be/src/vec/sink/vmysql_result_writer.cpp
index 8d255b9c54a..5e54a9db939 100644
--- a/be/src/vec/sink/vmysql_result_writer.cpp
+++ b/be/src/vec/sink/vmysql_result_writer.cpp
@@ -99,27 +99,23 @@ Status GetResultBatchCtx::on_data(const 
std::shared_ptr<TFetchDataResult>& t_res
     return Status::OK();
 }
 
-template <bool is_binary_format>
-VMysqlResultWriter<is_binary_format>::VMysqlResultWriter(
-        std::shared_ptr<ResultBlockBufferBase> sinker, const 
VExprContextSPtrs& output_vexpr_ctxs,
-        RuntimeProfile* parent_profile)
+VMysqlResultWriter::VMysqlResultWriter(std::shared_ptr<ResultBlockBufferBase> 
sinker,
+                                       const VExprContextSPtrs& 
output_vexpr_ctxs,
+                                       RuntimeProfile* parent_profile, bool 
is_binary_format)
         : ResultWriter(),
           _sinker(std::dynamic_pointer_cast<MySQLResultBlockBuffer>(sinker)),
           _output_vexpr_ctxs(output_vexpr_ctxs),
-          _parent_profile(parent_profile) {}
+          _parent_profile(parent_profile),
+          _is_binary_format(is_binary_format) {}
 
-template <bool is_binary_format>
-Status VMysqlResultWriter<is_binary_format>::init(RuntimeState* state) {
+Status VMysqlResultWriter::init(RuntimeState* state) {
     _init_profile();
     set_output_object_data(state->return_object_data_as_binary());
     _is_dry_run = state->query_options().dry_run_query;
-
-    RETURN_IF_ERROR(_set_options(state->query_options().serde_dialect));
     return Status::OK();
 }
 
-template <bool is_binary_format>
-void VMysqlResultWriter<is_binary_format>::_init_profile() {
+void VMysqlResultWriter::_init_profile() {
     if (_parent_profile != nullptr) {
         // for PointQueryExecutor, _parent_profile is null
         _append_row_batch_timer = ADD_TIMER(_parent_profile, 
"AppendBatchTime");
@@ -131,53 +127,7 @@ void VMysqlResultWriter<is_binary_format>::_init_profile() 
{
     }
 }
 
-template <bool is_binary_format>
-Status VMysqlResultWriter<is_binary_format>::_set_options(
-        const TSerdeDialect::type& serde_dialect) {
-    switch (serde_dialect) {
-    case TSerdeDialect::DORIS:
-        // eg:
-        //  array: ["abc", "def", "", null]
-        //  map: {"k1":null, "k2":"v3"}
-        _options.nested_string_wrapper = "\"";
-        _options.wrapper_len = 1;
-        _options.map_key_delim = ':';
-        _options.null_format = "null";
-        _options.null_len = 4;
-        _options.mysql_collection_delim = ", ";
-        _options.is_bool_value_num = true;
-        break;
-    case TSerdeDialect::PRESTO:
-        // eg:
-        //  array: [abc, def, , NULL]
-        //  map: {k1=NULL, k2=v3}
-        _options.nested_string_wrapper = "";
-        _options.wrapper_len = 0;
-        _options.map_key_delim = '=';
-        _options.null_format = "NULL";
-        _options.null_len = 4;
-        _options.mysql_collection_delim = ", ";
-        _options.is_bool_value_num = true;
-        break;
-    case TSerdeDialect::HIVE:
-        // eg:
-        //  array: ["abc","def","",null]
-        //  map: {"k1":null,"k2":"v3"}
-        _options.nested_string_wrapper = "\"";
-        _options.wrapper_len = 1;
-        _options.map_key_delim = ':';
-        _options.null_format = "null";
-        _options.null_len = 4;
-        _options.mysql_collection_delim = ",";
-        _options.is_bool_value_num = false;
-        break;
-    default:
-        return Status::InternalError("unknown serde dialect: {}", 
serde_dialect);
-    }
-    return Status::OK();
-}
-template <bool is_binary_format>
-Status VMysqlResultWriter<is_binary_format>::_write_one_block(RuntimeState* 
state, Block& block) {
+Status VMysqlResultWriter::_write_one_block(RuntimeState* state, Block& block) 
{
     Status status = Status::OK();
     int num_rows = cast_set<int>(block.rows());
     // convert one batch
@@ -237,7 +187,7 @@ Status 
VMysqlResultWriter<is_binary_format>::_write_one_block(RuntimeState* stat
         size_t write_buffer_index = 0;
         // For non-binary format, we need to call different serialization 
interfaces
         // write_column_to_mysql/presto/hive text
-        if (!is_binary_format) {
+        if (!_is_binary_format) {
             const auto& serde_dialect = state->query_options().serde_dialect;
             auto write_to_text = [serde_dialect](DataTypeSerDeSPtr& serde, 
const IColumn* column,
                                                  BufferWriter& write_buffer, 
size_t col_index) {
@@ -298,7 +248,7 @@ Status 
VMysqlResultWriter<is_binary_format>::_write_one_block(RuntimeState* stat
                     } else {
                         
RETURN_IF_ERROR(arguments[col_idx].serde->write_column_to_mysql_binary(
                                 *(arguments[col_idx].column), row_buffer, 
row_idx,
-                                arguments[col_idx].is_const, _options));
+                                arguments[col_idx].is_const));
                     }
                 }
 
@@ -327,8 +277,7 @@ Status 
VMysqlResultWriter<is_binary_format>::_write_one_block(RuntimeState* stat
     return status;
 }
 
-template <bool is_binary_format>
-Status VMysqlResultWriter<is_binary_format>::write(RuntimeState* state, Block& 
input_block) {
+Status VMysqlResultWriter::write(RuntimeState* state, Block& input_block) {
     SCOPED_TIMER(_append_row_batch_timer);
     Status status = Status::OK();
     if (UNLIKELY(input_block.rows() == 0)) {
@@ -368,14 +317,10 @@ Status 
VMysqlResultWriter<is_binary_format>::write(RuntimeState* state, Block& i
     return _write_one_block(state, block);
 }
 
-template <bool is_binary_format>
-Status VMysqlResultWriter<is_binary_format>::close(Status) {
+Status VMysqlResultWriter::close(Status) {
     COUNTER_SET(_sent_rows_counter, _written_rows);
     COUNTER_UPDATE(_bytes_sent_counter, _bytes_sent);
     return Status::OK();
 }
 
-template class VMysqlResultWriter<true>;
-template class VMysqlResultWriter<false>;
-
 } // namespace doris::vectorized
diff --git a/be/src/vec/sink/vmysql_result_writer.h 
b/be/src/vec/sink/vmysql_result_writer.h
index 75a997219d1..cf3834e3dbe 100644
--- a/be/src/vec/sink/vmysql_result_writer.h
+++ b/be/src/vec/sink/vmysql_result_writer.h
@@ -66,11 +66,11 @@ private:
 
 using MySQLResultBlockBuffer = ResultBlockBuffer<GetResultBatchCtx>;
 
-template <bool is_binary_format = false>
 class VMysqlResultWriter final : public ResultWriter {
 public:
     VMysqlResultWriter(std::shared_ptr<ResultBlockBufferBase> sinker,
-                       const VExprContextSPtrs& output_vexpr_ctxs, 
RuntimeProfile* parent_profile);
+                       const VExprContextSPtrs& output_vexpr_ctxs, 
RuntimeProfile* parent_profile,
+                       bool is_binary_format);
 
     Status init(RuntimeState* state) override;
 
@@ -80,7 +80,6 @@ public:
 
 private:
     void _init_profile();
-    Status _set_options(const TSerdeDialect::type& serde_dialect);
     Status _write_one_block(RuntimeState* state, Block& block);
 
     std::shared_ptr<MySQLResultBlockBuffer> _sinker = nullptr;
@@ -103,7 +102,7 @@ private:
 
     uint64_t _bytes_sent = 0;
 
-    DataTypeSerDe::FormatOptions _options;
+    const bool _is_binary_format;
 };
 } // namespace vectorized
 } // namespace doris
diff --git a/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp 
b/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp
index 8238d7fdf03..76466ee7056 100644
--- a/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp
@@ -191,7 +191,7 @@ TEST_F(DataTypeJsonbSerDeTest, serdes) {
             MysqlRowBinaryBuffer mysql_rb;
             for (int row_idx = 0; row_idx < row_count; ++row_idx) {
                 auto st = serde.write_column_to_mysql_binary(*source_column, 
mysql_rb, row_idx,
-                                                             false, option);
+                                                             false);
                 EXPECT_TRUE(st.ok())
                         << "Failed to write column to mysql with binary 
format: " << st;
             }
diff --git a/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp 
b/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp
index 413adde9d87..2c3fa6fe395 100644
--- a/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp
@@ -328,7 +328,7 @@ void serialize_and_deserialize_mysql_test() {
     // mysql_writer init
     MockRuntimeState state;
     auto serializer = std::make_shared<TestBlockSerializer>(&state);
-    vectorized::VMysqlResultWriter<false> mysql_writer(serializer, 
_output_vexpr_ctxs, nullptr);
+    vectorized::VMysqlResultWriter mysql_writer(serializer, 
_output_vexpr_ctxs, nullptr, false);
 
     Status st = mysql_writer.write(&runtime_stat, block);
     EXPECT_TRUE(st.ok());
diff --git a/be/test/vec/data_types/serde/data_type_serde_varbinary_test.cpp 
b/be/test/vec/data_types/serde/data_type_serde_varbinary_test.cpp
index 4c5f6dfc80c..34dc4fede27 100644
--- a/be/test/vec/data_types/serde/data_type_serde_varbinary_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_varbinary_test.cpp
@@ -153,14 +153,12 @@ TEST_F(DataTypeVarbinarySerDeTest, 
MysqlTextAndBinaryAndConst) {
         vb->insert_data(v.data(), v.size());
     }
 
-    DataTypeSerDe::FormatOptions opt;
-
     // binary protocol (smoke)
     {
         MysqlRowBinaryBuffer rb;
         rb.start_binary_row(vals.size());
         for (int i = 0; i < static_cast<int>(vals.size()); ++i) {
-            auto st = serde.write_column_to_mysql_binary(*col, rb, i, false, 
opt);
+            auto st = serde.write_column_to_mysql_binary(*col, rb, i, false);
             EXPECT_TRUE(st.ok()) << st.to_string();
         }
         EXPECT_GT(rb.length(), 0);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to