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 2023/05/26 06:11:23 UTC

[doris] branch master updated: [Refact] (serde) refact mysql serde with data type (#19543)

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 ee34b6de2d [Refact] (serde) refact mysql serde with data type (#19543)
ee34b6de2d is described below

commit ee34b6de2dab7f870448249479e98ca4d3d18793
Author: amory <wa...@selectdb.com>
AuthorDate: Fri May 26 14:11:17 2023 +0800

    [Refact] (serde) refact mysql serde with data type (#19543)
    
    refact mysql output (de)serialize with data type serde , avoid accoriding switch case Primitive type writed in mysqlWriter
---
 be/src/util/mysql_row_buffer.cpp                   |   2 +-
 be/src/vec/CMakeLists.txt                          |   2 +
 be/src/vec/data_types/data_type_decimal.h          |   2 +-
 be/src/vec/data_types/data_type_jsonb.h            |   5 +-
 be/src/vec/data_types/data_type_time.h             |   6 +-
 be/src/vec/data_types/data_type_time_v2.h          |   2 +-
 .../vec/data_types/serde/data_type_array_serde.cpp |  41 +++
 .../vec/data_types/serde/data_type_array_serde.h   |  14 +
 .../data_types/serde/data_type_bitmap_serde.cpp    |  16 ++
 .../vec/data_types/serde/data_type_bitmap_serde.h  |  16 ++
 .../data_types/serde/data_type_date64_serde.cpp    |  20 ++
 .../vec/data_types/serde/data_type_date64_serde.h  |  15 ++
 .../serde/data_type_datetimev2_serde.cpp           |  22 ++
 .../data_types/serde/data_type_datetimev2_serde.h  |  18 ++
 .../data_types/serde/data_type_datev2_serde.cpp    |  20 ++
 .../vec/data_types/serde/data_type_datev2_serde.h  |  15 ++
 .../data_types/serde/data_type_decimal_serde.cpp   |  10 +-
 .../vec/data_types/serde/data_type_decimal_serde.h |  44 ++++
 .../serde/data_type_fixedlengthobject_serde.h      |   8 +
 .../vec/data_types/serde/data_type_hll_serde.cpp   |  16 ++
 be/src/vec/data_types/serde/data_type_hll_serde.h  |  16 ++
 be/src/vec/data_types/serde/data_type_jsonb.h      |  62 +++++
 .../vec/data_types/serde/data_type_jsonb_serde.cpp |  21 ++
 .../vec/data_types/serde/data_type_jsonb_serde.h   |  73 +++++
 .../vec/data_types/serde/data_type_map_serde.cpp   |  59 +++++
 be/src/vec/data_types/serde/data_type_map_serde.h  |  14 +
 .../data_types/serde/data_type_nullable_serde.cpp  |  24 ++
 .../data_types/serde/data_type_nullable_serde.h    |  14 +
 .../vec/data_types/serde/data_type_number_serde.h  |  48 ++++
 .../vec/data_types/serde/data_type_object_serde.h  |   8 +
 .../serde/data_type_quantilestate_serde.h          |  33 +++
 be/src/vec/data_types/serde/data_type_serde.h      |   7 +
 .../data_types/serde/data_type_string_serde.cpp    |  29 +-
 .../vec/data_types/serde/data_type_string_serde.h  |  15 ++
 .../data_types/serde/data_type_struct_serde.cpp    |  44 ++++
 .../vec/data_types/serde/data_type_struct_serde.h  |  14 +
 .../vec/data_types/serde/data_type_time_serde.cpp  |  21 ++
 be/src/vec/data_types/serde/data_type_time_serde.h |  62 +++++
 be/src/vec/sink/vmysql_result_writer.cpp           | 267 +------------------
 be/test/CMakeLists.txt                             |   1 +
 .../serde/data_type_serde_mysql_test.cpp           | 293 +++++++++++++++++++++
 .../test_cast_double_to_decimal.out                |  28 +-
 .../data/delete_p0/test_struct_column_delete.out   |   3 +-
 regression-test/data/dynamic_table_p0/sql/q02.out  |  12 +-
 regression-test/data/dynamic_table_p0/sql/q04.out  | 180 ++++++-------
 .../dynamic_table_p0/test_dytable_complex_data.out | 120 ++++-----
 regression-test/data/export/test_array_export.out  |   4 +-
 regression-test/data/export/test_map_export.out    |   4 +-
 .../data/insert_p0/test_struct_insert.out          | Bin 444 -> 450 bytes
 .../data/inverted_index_p0/test_array_index.out    |  32 +--
 .../test_index_key_match_select.out                |  10 +-
 .../data/javaudf_p0/test_javaudaf_mysum_array.out  |  18 +-
 .../data/javaudf_p0/test_javaudf_array.out         |  40 +--
 .../data/load/insert/test_array_insert.out         |  12 +-
 .../load/insert/test_array_insert_into_select.out  |   2 +-
 .../data/load/insert/test_array_string_insert.out  |   8 +-
 .../data/load_p0/broker_load/test_array_load.out   |  64 ++---
 .../stream_load/test_map_load_and_function.out     | 218 +++++++--------
 .../load_p0/stream_load/test_parquet_orc_case.out  |   6 +-
 .../data/load_p0/stream_load/test_stream_load.out  |  36 +--
 .../data/point_query_p0/test_point_query.out       |  34 +--
 .../data/query_p0/aggregate/aggregate.out          |   2 +-
 .../aggregate/aggregate_group_by_metric_type.out   | Bin 170 -> 170 bytes
 .../data/query_p0/aggregate/datetype.csv           |  16 +-
 .../test_aggregate_all_functions2.out              |   4 +-
 .../aggregate_functions/test_aggregate_collect.out |  14 +-
 .../array_functions/test_array_functions.out       | 198 +++++++-------
 .../test_array_functions_by_literal.out            |  80 +++---
 .../test_array_functions_with_where.out            |  12 +-
 .../array_functions/test_array_last.out            |   8 +-
 .../array_functions/test_array_sortby.out          |   4 +-
 .../array_functions/test_array_with_scale_type.out |  68 ++---
 .../cast_function/test_cast_array_function.out     |  13 +-
 .../test_cast_array_functions_by_literal.out       |   2 +-
 .../cast_function/test_cast_string_to_array.out    |   8 +-
 .../cast_function/test_cast_struct.out             |  10 +-
 .../cast_function/test_non_nullable_function.out   |   4 +-
 .../string_functions/test_split_by_string.out      |  56 ++--
 .../struct_functions/test_struct_functions.out     | Bin 724 -> 752 bytes
 .../test_struct_functions_by_literal.out           |   6 +-
 .../duplicate/storage/test_dup_tab_decimal.groovy  |  29 +-
 .../storage/test_dup_tab_decimal_nullable.groovy   |  27 +-
 .../suites/export/test_array_export.groovy         |   4 +-
 .../sql_functions/test_arith_functions.groovy      |   2 +-
 .../test_dup_tab_decimal_nullable.groovy           |  28 +-
 .../test_array_functions_by_literal.groovy         |   2 +-
 .../struct_functions/test_struct_functions.groovy  |   8 +-
 87 files changed, 1859 insertions(+), 996 deletions(-)

diff --git a/be/src/util/mysql_row_buffer.cpp b/be/src/util/mysql_row_buffer.cpp
index a850a75ca9..f408cb31a1 100644
--- a/be/src/util/mysql_row_buffer.cpp
+++ b/be/src/util/mysql_row_buffer.cpp
@@ -528,7 +528,7 @@ int MysqlRowBuffer<is_binary_format>::push_string(const char* str, int64_t lengt
 template <bool is_binary_format>
 int MysqlRowBuffer<is_binary_format>::push_null() {
     if (_dynamic_mode) {
-        // dynamic mode not write
+        // for nested type
         return 0;
     }
 
diff --git a/be/src/vec/CMakeLists.txt b/be/src/vec/CMakeLists.txt
index 97e77cd4d0..933d7d6c56 100644
--- a/be/src/vec/CMakeLists.txt
+++ b/be/src/vec/CMakeLists.txt
@@ -99,6 +99,8 @@ set(VEC_FILES
   data_types/serde/data_type_bitmap_serde.cpp
   data_types/serde/data_type_quantilestate_serde.cpp
   data_types/serde/data_type_nullable_serde.cpp
+  data_types/serde/data_type_time_serde.cpp
+  data_types/serde/data_type_jsonb_serde.cpp
   data_types/data_type.cpp
   data_types/data_type_array.cpp
   data_types/data_type_struct.cpp
diff --git a/be/src/vec/data_types/data_type_decimal.h b/be/src/vec/data_types/data_type_decimal.h
index 8a0fdc186d..30be57fbe3 100644
--- a/be/src/vec/data_types/data_type_decimal.h
+++ b/be/src/vec/data_types/data_type_decimal.h
@@ -256,7 +256,7 @@ public:
     void to_string(const IColumn& column, size_t row_num, BufferWritable& ostr) const override;
     Status from_string(ReadBuffer& rb, IColumn* column) const override;
     DataTypeSerDeSPtr get_serde() const override {
-        return std::make_shared<DataTypeDecimalSerDe<T>>();
+        return std::make_shared<DataTypeDecimalSerDe<T>>(scale);
     };
 
     /// Decimal specific
diff --git a/be/src/vec/data_types/data_type_jsonb.h b/be/src/vec/data_types/data_type_jsonb.h
index e228b43fb4..9cfa33f99d 100644
--- a/be/src/vec/data_types/data_type_jsonb.h
+++ b/be/src/vec/data_types/data_type_jsonb.h
@@ -32,6 +32,7 @@
 #include "vec/core/types.h"
 #include "vec/data_types/data_type.h"
 #include "vec/data_types/data_type_string.h"
+#include "vec/data_types/serde/data_type_jsonb_serde.h"
 #include "vec/data_types/serde/data_type_serde.h"
 #include "vec/data_types/serde/data_type_string_serde.h"
 
@@ -92,9 +93,7 @@ public:
     std::string to_string(const IColumn& column, size_t row_num) const override;
     void to_string(const IColumn& column, size_t row_num, BufferWritable& ostr) const override;
     Status from_string(ReadBuffer& rb, IColumn* column) const override;
-    DataTypeSerDeSPtr get_serde() const override {
-        return std::make_shared<DataTypeStringSerDe>();
-    };
+    DataTypeSerDeSPtr get_serde() const override { return std::make_shared<DataTypeJsonbSerDe>(); };
 
 private:
     DataTypeString data_type_string;
diff --git a/be/src/vec/data_types/data_type_time.h b/be/src/vec/data_types/data_type_time.h
index 0bff06c869..17e4ebeb5e 100644
--- a/be/src/vec/data_types/data_type_time.h
+++ b/be/src/vec/data_types/data_type_time.h
@@ -34,8 +34,8 @@
 #include "vec/data_types/data_type.h"
 #include "vec/data_types/data_type_number.h"
 #include "vec/data_types/data_type_number_base.h"
-#include "vec/data_types/serde/data_type_number_serde.h"
 #include "vec/data_types/serde/data_type_serde.h"
+#include "vec/data_types/serde/data_type_time_serde.h"
 
 namespace doris {
 namespace vectorized {
@@ -73,9 +73,7 @@ public:
         using PromotedType = DataTypeNumber<NearestFieldType<Float64>>;
         return std::make_shared<PromotedType>();
     }
-    DataTypeSerDeSPtr get_serde() const override {
-        return std::make_shared<DataTypeNumberSerDe<Float64>>();
-    };
+    DataTypeSerDeSPtr get_serde() const override { return std::make_shared<DataTypeTimeSerDe>(); };
     TypeIndex get_type_id() const override { return TypeIndex::Time; }
 };
 
diff --git a/be/src/vec/data_types/data_type_time_v2.h b/be/src/vec/data_types/data_type_time_v2.h
index 645b23bca2..ca7efef2ea 100644
--- a/be/src/vec/data_types/data_type_time_v2.h
+++ b/be/src/vec/data_types/data_type_time_v2.h
@@ -126,7 +126,7 @@ public:
     void to_string(const IColumn& column, size_t row_num, BufferWritable& ostr) const override;
     Status from_string(ReadBuffer& rb, IColumn* column) const override;
     DataTypeSerDeSPtr get_serde() const override {
-        return std::make_shared<DataTypeDateTimeV2SerDe>();
+        return std::make_shared<DataTypeDateTimeV2SerDe>(_scale);
     };
 
     Field get_field(const TExprNode& node) const override {
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 15c1a4f683..2c48dea576 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
@@ -23,6 +23,7 @@
 #include "util/jsonb_document.h"
 #include "vec/columns/column.h"
 #include "vec/columns/column_array.h"
+#include "vec/columns/column_const.h"
 #include "vec/common/assert_cast.h"
 #include "vec/common/string_ref.h"
 
@@ -83,5 +84,45 @@ void DataTypeArraySerDe::read_column_from_arrow(IColumn& column, const arrow::Ar
             arrow_nested_end_offset, ctz);
 }
 
+template <bool is_binary_format>
+Status DataTypeArraySerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    auto& column_array = assert_cast<const ColumnArray&>(column);
+    auto& offsets = column_array.get_offsets();
+    auto& data = column_array.get_data();
+    bool is_nested_string = data.is_column_string();
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        result[row_idx].open_dynamic_mode();
+        buf_ret = result[row_idx].push_string("[", 1);
+        for (int j = offsets[col_index - 1]; j < offsets[col_index]; ++j) {
+            if (j != offsets[col_index - 1]) {
+                buf_ret = result[row_idx].push_string(", ", 2);
+            }
+            if (data.is_null_at(j)) {
+                buf_ret = result[row_idx].push_string("NULL", strlen("NULL"));
+            } else {
+                if (is_nested_string) {
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                    RETURN_IF_ERROR(nested_serde->write_column_to_mysql(data, result, row_idx, j,
+                                                                        j + 1, col_const));
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                } else {
+                    RETURN_IF_ERROR(nested_serde->write_column_to_mysql(data, result, row_idx, j,
+                                                                        j + 1, col_const));
+                }
+            }
+        }
+        buf_ret = result[row_idx].push_string("]", 1);
+        result[row_idx].close_dynamic_mode();
+        ++row_idx;
+    }
+    return Status::OK();
+}
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 e8d08bbf10..e46f2c16d1 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
@@ -56,8 +56,22 @@ public:
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
 
 private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
+
     DataTypeSerDeSPtr nested_serde;
 };
 } // namespace vectorized
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 0d4fef9e82..1c41e44aa7 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
@@ -24,6 +24,7 @@
 #include "util/bitmap_value.h"
 #include "util/jsonb_document.h"
 #include "vec/columns/column_complex.h"
+#include "vec/columns/column_const.h"
 #include "vec/common/arena.h"
 #include "vec/common/assert_cast.h"
 
@@ -81,5 +82,20 @@ void DataTypeBitMapSerDe::read_one_cell_from_jsonb(IColumn& column, const JsonbV
     col.insert_value(bitmap_value);
 }
 
+template <bool is_binary_format>
+Status DataTypeBitMapSerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        buf_ret = result[row_idx].push_null();
+        ++row_idx;
+    }
+    return Status::OK();
+}
+
 } // namespace vectorized
 } // namespace doris
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 dc3dd8f096..93eede68cf 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
@@ -50,6 +50,22 @@ public:
                                 int end, const cctz::time_zone& ctz) const override {
         LOG(FATAL) << "Not support read bitmap column from arrow";
     }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    // Bitmap is binary data which is not shown by mysql.
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
 };
 } // namespace vectorized
 } // namespace doris
diff --git a/be/src/vec/data_types/serde/data_type_date64_serde.cpp b/be/src/vec/data_types/serde/data_type_date64_serde.cpp
index 1f6a3766f5..02e44f04d1 100644
--- a/be/src/vec/data_types/serde/data_type_date64_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_date64_serde.cpp
@@ -22,6 +22,7 @@
 #include <type_traits>
 
 #include "gutil/casts.h"
+#include "vec/columns/column_const.h"
 
 namespace doris {
 namespace vectorized {
@@ -107,5 +108,24 @@ void DataTypeDate64SerDe::read_column_from_arrow(IColumn& column, const arrow::A
         }
     }
 }
+
+template <bool is_binary_format>
+Status DataTypeDate64SerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    auto& data = assert_cast<const ColumnVector<Int64>&>(column).get_data();
+    int buf_ret = 0;
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        auto time_num = data[col_index];
+        VecDateTimeValue time_val = binary_cast<Int64, VecDateTimeValue>(time_num);
+        buf_ret = result[row_idx].push_vec_datetime(time_val);
+        ++row_idx;
+    }
+    return Status::OK();
+}
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
diff --git a/be/src/vec/data_types/serde/data_type_date64_serde.h b/be/src/vec/data_types/serde/data_type_date64_serde.h
index 80a0a1518c..a05913cd17 100644
--- a/be/src/vec/data_types/serde/data_type_date64_serde.h
+++ b/be/src/vec/data_types/serde/data_type_date64_serde.h
@@ -47,6 +47,21 @@ class DataTypeDate64SerDe : public DataTypeNumberSerDe<Int64> {
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
 };
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 a8476197dd..72231c023d 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
@@ -22,6 +22,7 @@
 #include <type_traits>
 
 #include "gutil/casts.h"
+#include "vec/columns/column_const.h"
 
 namespace doris {
 namespace vectorized {
@@ -45,5 +46,26 @@ void DataTypeDateTimeV2SerDe::write_column_to_arrow(const IColumn& column, const
         }
     }
 }
+template <bool is_binary_format>
+Status DataTypeDateTimeV2SerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    auto& data = assert_cast<const ColumnVector<UInt64>&>(column).get_data();
+    int buf_ret = 0;
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        auto time_num = data[col_index];
+        char buf[64];
+        DateV2Value<DateTimeV2ValueType> date_val =
+                binary_cast<UInt64, DateV2Value<DateTimeV2ValueType>>(time_num);
+        char* pos = date_val.to_string(buf, scale);
+        buf_ret = result[row_idx].push_string(buf, pos - buf - 1);
+        ++row_idx;
+    }
+    return Status::OK();
+}
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 7302a1d4d5..3727696089 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
@@ -42,6 +42,8 @@ namespace vectorized {
 class Arena;
 
 class DataTypeDateTimeV2SerDe : public DataTypeNumberSerDe<UInt64> {
+public:
+    DataTypeDateTimeV2SerDe(int scale) : scale(scale) {};
     void write_column_to_arrow(const IColumn& column, const UInt8* null_map,
                                arrow::ArrayBuilder* array_builder, int start,
                                int end) const override;
@@ -49,6 +51,22 @@ class DataTypeDateTimeV2SerDe : public DataTypeNumberSerDe<UInt64> {
                                 int end, const cctz::time_zone& ctz) const override {
         LOG(FATAL) << "not support read arrow array to uint64 column";
     }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
+    int scale;
 };
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 4095c8d872..312654a6a8 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
@@ -22,6 +22,7 @@
 #include <type_traits>
 
 #include "gutil/casts.h"
+#include "vec/columns/column_const.h"
 
 namespace doris {
 namespace vectorized {
@@ -64,5 +65,24 @@ void DataTypeDateV2SerDe::read_column_from_arrow(IColumn& column, const arrow::A
         col_data.emplace_back(binary_cast<DateV2Value<DateV2ValueType>, UInt32>(v));
     }
 }
+template <bool is_binary_format>
+Status DataTypeDateV2SerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    auto& data = assert_cast<const ColumnVector<UInt32>&>(column).get_data();
+    int buf_ret = 0;
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        auto time_num = data[col_index];
+        DateV2Value<DateV2ValueType> date_val =
+                binary_cast<UInt32, DateV2Value<DateV2ValueType>>(time_num);
+        buf_ret = result[row_idx].push_vec_datetime(date_val);
+        ++row_idx;
+    }
+    return Status::OK();
+}
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 587f2be0c2..3faa4df7a2 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
@@ -47,6 +47,21 @@ class DataTypeDateV2SerDe : public DataTypeNumberSerDe<UInt32> {
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
 };
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 893e10769a..fca373a40a 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
@@ -118,14 +118,14 @@ void DataTypeDecimalSerDe<T>::read_column_from_arrow(IColumn& column,
         const auto* arrow_decimal_type =
                 static_cast<const arrow::DecimalType*>(arrow_array->type().get());
         // TODO check precision
-        const auto scale = arrow_decimal_type->scale();
+        const auto arrow_scale = arrow_decimal_type->scale();
         for (size_t value_i = start; value_i < end; ++value_i) {
             auto value = *reinterpret_cast<const vectorized::Decimal128*>(
                     concrete_array->Value(value_i));
             // convert scale to 9;
-            if (9 > scale) {
+            if (9 > arrow_scale) {
                 using MaxNativeType = typename Decimal128::NativeType;
-                MaxNativeType converted_value = common::exp10_i128(9 - scale);
+                MaxNativeType converted_value = common::exp10_i128(9 - arrow_scale);
                 if (common::mul_overflow(static_cast<MaxNativeType>(value), converted_value,
                                          converted_value)) {
                     VLOG_DEBUG << "Decimal convert overflow";
@@ -135,8 +135,8 @@ void DataTypeDecimalSerDe<T>::read_column_from_arrow(IColumn& column,
                 } else {
                     value = converted_value;
                 }
-            } else if (9 < scale) {
-                value = value / common::exp10_i128(scale - 9);
+            } else if (9 < arrow_scale) {
+                value = value / common::exp10_i128(arrow_scale - 9);
             }
             column_data.emplace_back(value);
         }
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 0e9685d936..92339da1df 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
@@ -31,6 +31,7 @@
 #include "util/jsonb_document.h"
 #include "util/jsonb_writer.h"
 #include "vec/columns/column.h"
+#include "vec/columns/column_const.h"
 #include "vec/common/string_ref.h"
 #include "vec/core/types.h"
 
@@ -46,6 +47,8 @@ class DataTypeDecimalSerDe : public DataTypeSerDe {
     static_assert(IsDecimalNumber<T>);
 
 public:
+    DataTypeDecimalSerDe(int scale) : scale(scale) {};
+
     Status write_column_to_pb(const IColumn& column, PValues& result, int start,
                               int end) const override;
     Status read_column_from_pb(IColumn& column, const PValues& arg) const override;
@@ -60,8 +63,49 @@ public:
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
+
+    int scale;
 };
 
+template <typename T>
+template <bool is_binary_format>
+Status DataTypeDecimalSerDe<T>::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    auto& data = assert_cast<const ColumnDecimal<T>&>(column).get_data();
+    for (int i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        if constexpr (IsDecimalV2<T>) {
+            DecimalV2Value decimal_val(data[col_index]);
+            auto decimal_str = decimal_val.to_string(scale);
+            buf_ret = result[row_idx].push_string(decimal_str.c_str(), decimal_str.size());
+        } else {
+            std::string decimal_str = data[col_index].to_string(scale);
+            buf_ret = result[row_idx].push_string(decimal_str.c_str(), decimal_str.size());
+        }
+        ++row_idx;
+    }
+    return Status::OK();
+}
 template <typename T>
 Status DataTypeDecimalSerDe<T>::write_column_to_pb(const IColumn& column, PValues& result,
                                                    int start, int end) const {
diff --git a/be/src/vec/data_types/serde/data_type_fixedlengthobject_serde.h b/be/src/vec/data_types/serde/data_type_fixedlengthobject_serde.h
index af02dc9824..6dabdce9ed 100644
--- a/be/src/vec/data_types/serde/data_type_fixedlengthobject_serde.h
+++ b/be/src/vec/data_types/serde/data_type_fixedlengthobject_serde.h
@@ -60,6 +60,14 @@ public:
                                 int end, const cctz::time_zone& ctz) const override {
         LOG(FATAL) << "Not support read FixedLengthObject column from arrow";
     }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        LOG(FATAL) << "Not support write object column to mysql";
+    }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        LOG(FATAL) << "Not support write object column to mysql";
+    }
 };
 } // namespace vectorized
 } // namespace doris
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 a3fc40aebc..5e223a5d36 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
@@ -28,6 +28,7 @@
 #include "util/jsonb_document.h"
 #include "util/slice.h"
 #include "vec/columns/column_complex.h"
+#include "vec/columns/column_const.h"
 #include "vec/common/arena.h"
 #include "vec/common/assert_cast.h"
 
@@ -100,5 +101,20 @@ void DataTypeHLLSerDe::write_column_to_arrow(const IColumn& column, const UInt8*
     }
 }
 
+template <bool is_binary_format>
+Status DataTypeHLLSerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        buf_ret = result[row_idx].push_null();
+        ++row_idx;
+    }
+    return Status::OK();
+}
+
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 9a47f8fbd7..dbf1b3455f 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
@@ -48,6 +48,22 @@ public:
                                 int end, const cctz::time_zone& ctz) const override {
         LOG(FATAL) << "Not support read hll column from arrow";
     }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    // Hll is binary data which is not shown by mysql.
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
 };
 } // namespace vectorized
 } // namespace doris
diff --git a/be/src/vec/data_types/serde/data_type_jsonb.h b/be/src/vec/data_types/serde/data_type_jsonb.h
new file mode 100644
index 0000000000..d274a34571
--- /dev/null
+++ b/be/src/vec/data_types/serde/data_type_jsonb.h
@@ -0,0 +1,62 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#pragma once
+#include <gen_cpp/types.pb.h>
+#include <glog/logging.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "data_type_number_serde.h"
+#include "vec/core/types.h"
+
+namespace doris {
+class JsonbOutStream;
+
+namespace vectorized {
+class Arena;
+
+class DataTypeTimeSerDe : public DataTypeNumberSerDe<Float64> {
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_date_time_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_date_time_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_date_time_column_to_mysql(const IColumn& column,
+                                            std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                            int row_idx, int start, int end, bool col_const) const {
+        int buf_ret = 0;
+        auto& data = assert_cast<const ColumnVector<Float64>&>(column).get_data();
+        for (int i = start; i < end; ++i) {
+            if (0 != buf_ret) {
+                return Status::InternalError("pack mysql buffer failed.");
+            }
+            const auto col_index = index_check_const(i, col_const);
+            buf_ret = result[row_idx].push_time(data[col_index]);
+            ++row_idx;
+        }
+        return Status::OK();
+    }
+};
+} // namespace vectorized
+} // namespace doris
\ No newline at end of file
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
new file mode 100644
index 0000000000..bc91d7cce3
--- /dev/null
+++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
@@ -0,0 +1,21 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#include "data_type_jsonb_serde.h"
+namespace doris {
+namespace vectorized {} // namespace vectorized
+} // namespace doris
\ No newline at end of file
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
new file mode 100644
index 0000000000..3443201722
--- /dev/null
+++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.h
@@ -0,0 +1,73 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#pragma once
+#include <gen_cpp/types.pb.h>
+#include <glog/logging.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "data_type_string_serde.h"
+#include "util/jsonb_utils.h"
+#include "vec/columns/column_const.h"
+#include "vec/columns/column_string.h"
+#include "vec/core/types.h"
+
+namespace doris {
+class JsonbOutStream;
+
+namespace vectorized {
+class Arena;
+
+class DataTypeJsonbSerDe : public DataTypeStringSerDe {
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_jsonb_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_jsonb_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_jsonb_column_to_mysql(const IColumn& column,
+                                        std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                        int row_idx, int start, int end, bool col_const) const {
+        int buf_ret = 0;
+        auto& data = assert_cast<const ColumnString&>(column);
+        for (int i = start; i < end; ++i) {
+            if (0 != buf_ret) {
+                return Status::InternalError("pack mysql buffer failed.");
+            }
+            const auto col_index = index_check_const(i, col_const);
+            const auto jsonb_val = data.get_data_at(col_index);
+            // jsonb size == 0 is NULL
+            if (jsonb_val.data == nullptr || jsonb_val.size == 0) {
+                buf_ret = result[row_idx].push_null();
+            } else {
+                std::string json_str =
+                        JsonbToJson::jsonb_to_json_string(jsonb_val.data, jsonb_val.size);
+                buf_ret = result[row_idx].push_string(json_str.c_str(), json_str.size());
+            }
+            ++row_idx;
+        }
+        return Status::OK();
+    }
+};
+} // namespace vectorized
+} // namespace doris
\ No newline at end of file
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 87dd4e5615..4cb4fdc039 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
@@ -19,6 +19,8 @@
 
 #include "util/jsonb_document.h"
 #include "vec/columns/column.h"
+#include "vec/columns/column_const.h"
+#include "vec/columns/column_map.h"
 #include "vec/common/string_ref.h"
 
 namespace doris {
@@ -52,5 +54,62 @@ void DataTypeMapSerDe::read_column_from_arrow(IColumn& column, const arrow::Arra
                                               const cctz::time_zone& ctz) const {
     LOG(FATAL) << "Not support read " << column.get_name() << " from arrow";
 }
+template <bool is_binary_format>
+Status DataTypeMapSerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    auto& map_column = assert_cast<const ColumnMap&>(column);
+    const IColumn& nested_keys_column = map_column.get_keys();
+    const IColumn& nested_values_column = map_column.get_values();
+    bool is_key_string = remove_nullable(nested_keys_column.get_ptr())->is_column_string();
+    bool is_val_string = remove_nullable(nested_values_column.get_ptr())->is_column_string();
+
+    auto& offsets = map_column.get_offsets();
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        result[row_idx].open_dynamic_mode();
+        buf_ret = result[row_idx].push_string("{", 1);
+        for (auto j = offsets[col_index - 1]; j < offsets[col_index]; ++j) {
+            if (j != offsets[col_index - 1]) {
+                buf_ret = result[row_idx].push_string(", ", 2);
+            }
+            if (nested_keys_column.is_null_at(j)) {
+                buf_ret = result[row_idx].push_string("NULL", strlen("NULL"));
+            } else {
+                if (is_key_string) {
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                    RETURN_IF_ERROR(key_serde->write_column_to_mysql(nested_keys_column, result,
+                                                                     row_idx, j, j + 1, col_const));
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                } else {
+                    RETURN_IF_ERROR(key_serde->write_column_to_mysql(nested_keys_column, result,
+                                                                     row_idx, j, j + 1, col_const));
+                }
+            }
+            buf_ret = result[row_idx].push_string(":", 1);
+            if (nested_values_column.is_null_at(j)) {
+                buf_ret = result[row_idx].push_string("NULL", strlen("NULL"));
+            } else {
+                if (is_val_string) {
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                    RETURN_IF_ERROR(value_serde->write_column_to_mysql(
+                            nested_values_column, result, row_idx, j, j + 1, col_const));
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                } else {
+                    RETURN_IF_ERROR(value_serde->write_column_to_mysql(
+                            nested_values_column, result, row_idx, j, j + 1, col_const));
+                }
+            }
+        }
+        buf_ret = result[row_idx].push_string("}", 1);
+        result[row_idx].close_dynamic_mode();
+        ++row_idx;
+    }
+    return Status::OK();
+}
 } // namespace vectorized
 } // namespace doris
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 4708e36afd..d601519598 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
@@ -55,8 +55,22 @@ public:
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
 
 private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
+
     DataTypeSerDeSPtr key_serde;
     DataTypeSerDeSPtr value_serde;
 };
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 0c7e72bfda..1902720148 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
@@ -26,6 +26,7 @@
 
 #include "util/jsonb_document.h"
 #include "vec/columns/column.h"
+#include "vec/columns/column_const.h"
 #include "vec/columns/column_nullable.h"
 #include "vec/columns/column_vector.h"
 #include "vec/columns/columns_number.h"
@@ -131,5 +132,28 @@ void DataTypeNullableSerDe::read_column_from_arrow(IColumn& column, const arrow:
                                                 ctz);
 }
 
+template <bool is_binary_format>
+Status DataTypeNullableSerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    auto& col = static_cast<const ColumnNullable&>(column);
+    auto& nested_col = col.get_nested_column();
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        if (col.is_null_at(col_index)) {
+            buf_ret = result[row_idx].push_null();
+        } else {
+            RETURN_IF_ERROR(nested_serde->write_column_to_mysql(
+                    nested_col, result, row_idx, col_index, col_index + 1, col_const));
+        }
+        ++row_idx;
+    }
+    return Status::OK();
+}
+
 } // namespace vectorized
 } // namespace doris
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 7631ed90ef..8b753478d7 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
@@ -48,8 +48,22 @@ public:
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
 
 private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
+
     DataTypeSerDeSPtr nested_serde;
 };
 } // namespace vectorized
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 90566510ca..8c0a16fa8b 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
@@ -31,6 +31,7 @@
 #include "util/jsonb_document.h"
 #include "util/jsonb_writer.h"
 #include "vec/columns/column.h"
+#include "vec/columns/column_const.h"
 #include "vec/columns/column_vector.h"
 #include "vec/common/string_ref.h"
 #include "vec/core/types.h"
@@ -67,8 +68,55 @@ public:
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
 };
 
+template <typename T>
+template <bool is_binary_format>
+Status DataTypeNumberSerDe<T>::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    auto& data = assert_cast<const ColumnType&>(column).get_data();
+    for (auto i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        if constexpr (std::is_same_v<T, Int8> || std::is_same_v<T, UInt8>) {
+            buf_ret = result[row_idx].push_tinyint(data[col_index]);
+        } else if constexpr (std::is_same_v<T, Int16> || std::is_same_v<T, UInt16>) {
+            buf_ret = result[row_idx].push_smallint(data[col_index]);
+        } else if constexpr (std::is_same_v<T, Int32> || std::is_same_v<T, UInt32>) {
+            buf_ret = result[row_idx].push_int(data[col_index]);
+        } else if constexpr (std::is_same_v<T, Int64> || std::is_same_v<T, UInt64>) {
+            buf_ret = result[row_idx].push_bigint(data[col_index]);
+        } else if constexpr (std::is_same_v<T, Int128>) {
+            buf_ret = result[row_idx].push_largeint(data[col_index]);
+        } else if constexpr (std::is_same_v<T, float>) {
+            buf_ret = result[row_idx].push_float(data[col_index]);
+        } else if constexpr (std::is_same_v<T, double>) {
+            buf_ret = result[row_idx].push_double(data[col_index]);
+        }
+        ++row_idx;
+    }
+    return Status::OK();
+}
+
 template <typename T>
 Status DataTypeNumberSerDe<T>::read_column_from_pb(IColumn& column, const PValues& arg) const {
     if constexpr (std::is_same_v<T, UInt8> || std::is_same_v<T, UInt16> ||
diff --git a/be/src/vec/data_types/serde/data_type_object_serde.h b/be/src/vec/data_types/serde/data_type_object_serde.h
index d8c93b9afe..2648cdc582 100644
--- a/be/src/vec/data_types/serde/data_type_object_serde.h
+++ b/be/src/vec/data_types/serde/data_type_object_serde.h
@@ -61,6 +61,14 @@ public:
                                 int end, const cctz::time_zone& ctz) const override {
         LOG(FATAL) << "Not support read object column from arrow";
     }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        LOG(FATAL) << "Not support write object column to mysql";
+    }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        LOG(FATAL) << "Not support write object column to mysql";
+    }
 };
 } // namespace vectorized
 } // namespace doris
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 dc2031c5ef..fa6f554c20 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
@@ -29,6 +29,7 @@
 #include "util/slice.h"
 #include "vec/columns/column.h"
 #include "vec/columns/column_complex.h"
+#include "vec/columns/column_const.h"
 #include "vec/common/arena.h"
 #include "vec/common/string_ref.h"
 
@@ -56,6 +57,21 @@ public:
                                 int end, const cctz::time_zone& ctz) const override {
         LOG(FATAL) << "Not support read " << column.get_name() << " from arrow";
     }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
 };
 
 template <typename T>
@@ -103,5 +119,22 @@ void DataTypeQuantileStateSerDe<T>::read_one_cell_from_jsonb(IColumn& column,
     col.insert_value(val);
 }
 
+// QuantileState is binary data which is not shown by mysql
+template <typename T>
+template <bool is_binary_format>
+Status DataTypeQuantileStateSerDe<T>::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        buf_ret = result[row_idx].push_null();
+        ++row_idx;
+    }
+    return Status::OK();
+}
+
 } // namespace vectorized
 } // namespace doris
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 d48fe8751a..8072da3032 100644
--- a/be/src/vec/data_types/serde/data_type_serde.h
+++ b/be/src/vec/data_types/serde/data_type_serde.h
@@ -25,6 +25,7 @@
 #include "arrow/status.h"
 #include "common/status.h"
 #include "util/jsonb_writer.h"
+#include "util/mysql_row_buffer.h"
 #include "vec/common/pod_array_fwd.h"
 #include "vec/core/types.h"
 
@@ -73,7 +74,13 @@ public:
     virtual void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const = 0;
 
     // MySQL serializer and deserializer
+    virtual Status write_column_to_mysql(const IColumn& column,
+                                         std::vector<MysqlRowBuffer<false>>& result, int row_idx,
+                                         int start, int end, bool col_const) const = 0;
 
+    virtual Status write_column_to_mysql(const IColumn& column,
+                                         std::vector<MysqlRowBuffer<true>>& result, int start,
+                                         int row_idx, int end, bool col_const) const = 0;
     // Thrift serializer and deserializer
 
     // ORC serializer and deserializer
diff --git a/be/src/vec/data_types/serde/data_type_string_serde.cpp b/be/src/vec/data_types/serde/data_type_string_serde.cpp
index ba230da987..e12aa45ad5 100644
--- a/be/src/vec/data_types/serde/data_type_string_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_string_serde.cpp
@@ -26,6 +26,7 @@
 #include "util/jsonb_document.h"
 #include "util/jsonb_utils.h"
 #include "vec/columns/column.h"
+#include "vec/columns/column_const.h"
 #include "vec/columns/column_string.h"
 #include "vec/common/string_ref.h"
 
@@ -122,6 +123,32 @@ void DataTypeStringSerDe::read_column_from_arrow(IColumn& column, const arrow::A
         }
     }
 }
-
+template <bool is_binary_format>
+Status DataTypeStringSerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    auto& col = assert_cast<const ColumnString&>(column);
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        const auto string_val = col.get_data_at(col_index);
+        if (string_val.data == nullptr) {
+            if (string_val.size == 0) {
+                // 0x01 is a magic num, not useful actually, just for present ""
+                char* tmp_val = reinterpret_cast<char*>(0x01);
+                buf_ret = result[row_idx].push_string(tmp_val, string_val.size);
+            } else {
+                buf_ret = result[row_idx].push_null();
+            }
+        } else {
+            buf_ret = result[row_idx].push_string(string_val.data, string_val.size);
+        }
+        ++row_idx;
+    }
+    return Status::OK();
+}
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 5fe7d00db8..24167d1448 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
@@ -46,6 +46,21 @@ public:
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
 };
 } // namespace vectorized
 } // namespace doris
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 be21680009..0840cd96d3 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
@@ -19,6 +19,8 @@
 
 #include "util/jsonb_document.h"
 #include "vec/columns/column.h"
+#include "vec/columns/column_const.h"
+#include "vec/columns/column_struct.h"
 #include "vec/common/string_ref.h"
 
 namespace doris {
@@ -54,5 +56,47 @@ void DataTypeStructSerDe::read_column_from_arrow(IColumn& column, const arrow::A
                                                  const cctz::time_zone& ctz) const {
     LOG(FATAL) << "Not support read " << column.get_name() << " from arrow";
 }
+template <bool is_binary_format>
+Status DataTypeStructSerDe::_write_column_to_mysql(
+        const IColumn& column, std::vector<MysqlRowBuffer<is_binary_format>>& result, int row_idx,
+        int start, int end, bool col_const) const {
+    int buf_ret = 0;
+    auto& col = assert_cast<const ColumnStruct&>(column);
+    for (ssize_t i = start; i < end; ++i) {
+        if (0 != buf_ret) {
+            return Status::InternalError("pack mysql buffer failed.");
+        }
+        const auto col_index = index_check_const(i, col_const);
+        result[row_idx].open_dynamic_mode();
+        buf_ret = result[row_idx].push_string("{", 1);
+        bool begin = true;
+        for (size_t j = 0; j < elemSerDeSPtrs.size(); ++j) {
+            if (!begin) {
+                buf_ret = result[row_idx].push_string(", ", 2);
+            }
+
+            if (col.get_column_ptr(j)->is_null_at(col_index)) {
+                buf_ret = result[row_idx].push_string("NULL", strlen("NULL"));
+            } else {
+                if (remove_nullable(col.get_column_ptr(j))->is_column_string()) {
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                    RETURN_IF_ERROR(elemSerDeSPtrs[j]->write_column_to_mysql(
+                            col.get_column(j), result, row_idx, col_index, col_index + 1,
+                            col_const));
+                    buf_ret = result[row_idx].push_string("\"", 1);
+                } else {
+                    RETURN_IF_ERROR(elemSerDeSPtrs[j]->write_column_to_mysql(
+                            col.get_column(j), result, row_idx, col_index, col_index + 1,
+                            col_const));
+                }
+            }
+            begin = false;
+        }
+        buf_ret = result[row_idx].push_string("}", 1);
+        result[row_idx].close_dynamic_mode();
+        ++row_idx;
+    }
+    return Status::OK();
+}
 } // namespace vectorized
 } // namespace doris
\ No newline at end of file
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 836d5bdbdd..519c251773 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
@@ -56,8 +56,22 @@ public:
                                int end) const override;
     void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start,
                                 int end, const cctz::time_zone& ctz) const override;
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
 
 private:
+    template <bool is_binary_format>
+    Status _write_column_to_mysql(const IColumn& column,
+                                  std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                  int row_idx, int start, int end, bool col_const) const;
+
     DataTypeSerDeSPtrs elemSerDeSPtrs;
 };
 } // namespace vectorized
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
new file mode 100644
index 0000000000..7e21f1f2c4
--- /dev/null
+++ b/be/src/vec/data_types/serde/data_type_time_serde.cpp
@@ -0,0 +1,21 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#include "data_type_time_serde.h"
+namespace doris {
+namespace vectorized {} // namespace vectorized
+} // namespace doris
\ No newline at end of file
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
new file mode 100644
index 0000000000..d274a34571
--- /dev/null
+++ b/be/src/vec/data_types/serde/data_type_time_serde.h
@@ -0,0 +1,62 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#pragma once
+#include <gen_cpp/types.pb.h>
+#include <glog/logging.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "data_type_number_serde.h"
+#include "vec/core/types.h"
+
+namespace doris {
+class JsonbOutStream;
+
+namespace vectorized {
+class Arena;
+
+class DataTypeTimeSerDe : public DataTypeNumberSerDe<Float64> {
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<false>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_date_time_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+    Status write_column_to_mysql(const IColumn& column, std::vector<MysqlRowBuffer<true>>& result,
+                                 int row_idx, int start, int end, bool col_const) const override {
+        return _write_date_time_column_to_mysql(column, result, row_idx, start, end, col_const);
+    }
+
+private:
+    template <bool is_binary_format>
+    Status _write_date_time_column_to_mysql(const IColumn& column,
+                                            std::vector<MysqlRowBuffer<is_binary_format>>& result,
+                                            int row_idx, int start, int end, bool col_const) const {
+        int buf_ret = 0;
+        auto& data = assert_cast<const ColumnVector<Float64>&>(column).get_data();
+        for (int i = start; i < end; ++i) {
+            if (0 != buf_ret) {
+                return Status::InternalError("pack mysql buffer failed.");
+            }
+            const auto col_index = index_check_const(i, col_const);
+            buf_ret = result[row_idx].push_time(data[col_index]);
+            ++row_idx;
+        }
+        return Status::OK();
+    }
+};
+} // namespace vectorized
+} // namespace doris
\ No newline at end of file
diff --git a/be/src/vec/sink/vmysql_result_writer.cpp b/be/src/vec/sink/vmysql_result_writer.cpp
index c372dc4570..cc7b39aa5e 100644
--- a/be/src/vec/sink/vmysql_result_writer.cpp
+++ b/be/src/vec/sink/vmysql_result_writer.cpp
@@ -102,6 +102,7 @@ void VMysqlResultWriter<is_binary_format>::_init_profile() {
     _bytes_sent_counter = ADD_COUNTER(_parent_profile, "BytesSent", TUnit::BYTES);
 }
 
+// (TODO Amory: do not need this function)
 template <bool is_binary_format>
 template <PrimitiveType type, bool is_nullable>
 Status VMysqlResultWriter<is_binary_format>::_add_one_column(
@@ -623,270 +624,8 @@ Status VMysqlResultWriter<is_binary_format>::append_block(Block& input_block) {
                 << fmt::format("block's rows({}) != column{}'s size({})", num_rows, i,
                                block.get_by_position(i).column->size());
 
-        int scale = _output_vexpr_ctxs[i]->root()->type().scale;
-        switch (_output_vexpr_ctxs[i]->root()->result_type()) {
-        case TYPE_BOOLEAN:
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_BOOLEAN, true>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_BOOLEAN, false>(
-                        column_ptr, result, rows_buffer, col_const);
-            }
-            break;
-        case TYPE_TINYINT: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_TINYINT, true>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_TINYINT, false>(
-                        column_ptr, result, rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_SMALLINT: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_SMALLINT, true>(
-                        column_ptr, result, rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_SMALLINT, false>(
-                        column_ptr, result, rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_INT: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_INT, true>(column_ptr, result,
-                                                                        rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_INT, false>(column_ptr, result,
-                                                                         rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_BIGINT: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_BIGINT, true>(column_ptr, result,
-                                                                           rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_BIGINT, false>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_LARGEINT: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_LARGEINT, true>(
-                        column_ptr, result, rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_LARGEINT, false>(
-                        column_ptr, result, rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_FLOAT: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_FLOAT, true>(column_ptr, result,
-                                                                          rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_FLOAT, false>(column_ptr, result,
-                                                                           rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_DOUBLE: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_DOUBLE, true>(column_ptr, result,
-                                                                           rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DOUBLE, false>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_TIME: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_TIME, true>(column_ptr, result,
-                                                                         rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_TIME, false>(column_ptr, result,
-                                                                          rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_TIMEV2: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_TIMEV2, true>(column_ptr, result,
-                                                                           rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_TIMEV2, false>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_STRING:
-        case TYPE_CHAR:
-        case TYPE_VARCHAR:
-        case TYPE_AGG_STATE: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_VARCHAR, true>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_VARCHAR, false>(
-                        column_ptr, result, rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_DECIMALV2: {
-            if (type_ptr->is_nullable()) {
-                auto& nested_type =
-                        assert_cast<const DataTypeNullable&>(*type_ptr).get_nested_type();
-                status = _add_one_column<PrimitiveType::TYPE_DECIMALV2, true>(
-                        column_ptr, result, rows_buffer, col_const, scale, {nested_type});
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DECIMALV2, false>(
-                        column_ptr, result, rows_buffer, col_const, scale, {type_ptr});
-            }
-            break;
-        }
-        case TYPE_DECIMAL32: {
-            if (type_ptr->is_nullable()) {
-                auto& nested_type =
-                        assert_cast<const DataTypeNullable&>(*type_ptr).get_nested_type();
-                status = _add_one_column<PrimitiveType::TYPE_DECIMAL32, true>(
-                        column_ptr, result, rows_buffer, col_const, scale, {nested_type});
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DECIMAL32, false>(
-                        column_ptr, result, rows_buffer, col_const, scale, {type_ptr});
-            }
-            break;
-        }
-        case TYPE_DECIMAL64: {
-            if (type_ptr->is_nullable()) {
-                auto& nested_type =
-                        assert_cast<const DataTypeNullable&>(*type_ptr).get_nested_type();
-                status = _add_one_column<PrimitiveType::TYPE_DECIMAL64, true>(
-                        column_ptr, result, rows_buffer, col_const, scale, {nested_type});
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DECIMAL64, false>(
-                        column_ptr, result, rows_buffer, col_const, scale, {type_ptr});
-            }
-            break;
-        }
-        case TYPE_DECIMAL128I: {
-            if (type_ptr->is_nullable()) {
-                auto& nested_type =
-                        assert_cast<const DataTypeNullable&>(*type_ptr).get_nested_type();
-                status = _add_one_column<PrimitiveType::TYPE_DECIMAL128I, true>(
-                        column_ptr, result, rows_buffer, col_const, scale, {nested_type});
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DECIMAL128I, false>(
-                        column_ptr, result, rows_buffer, col_const, scale, {type_ptr});
-            }
-            break;
-        }
-        case TYPE_JSONB: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_JSONB, true>(column_ptr, result,
-                                                                          rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_JSONB, false>(column_ptr, result,
-                                                                           rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_DATE:
-        case TYPE_DATETIME: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_DATETIME, true>(
-                        column_ptr, result, rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DATETIME, false>(
-                        column_ptr, result, rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_DATEV2: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_DATEV2, true>(column_ptr, result,
-                                                                           rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DATEV2, false>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_DATETIMEV2: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_DATETIMEV2, true>(
-                        column_ptr, result, rows_buffer, col_const, scale);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_DATETIMEV2, false>(
-                        column_ptr, result, rows_buffer, col_const, scale);
-            }
-            break;
-        }
-        case TYPE_HLL:
-        case TYPE_QUANTILE_STATE:
-        case TYPE_OBJECT: {
-            if (type_ptr->is_nullable()) {
-                status = _add_one_column<PrimitiveType::TYPE_OBJECT, true>(column_ptr, result,
-                                                                           rows_buffer, col_const);
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_OBJECT, false>(column_ptr, result,
-                                                                            rows_buffer, col_const);
-            }
-            break;
-        }
-        case TYPE_ARRAY: {
-            // Currently all functions only support single-level nested arrays,
-            // so we use Array's child scale to represent the scale of nested type.
-            scale = _output_vexpr_ctxs[i]->root()->type().children[0].scale;
-            if (type_ptr->is_nullable()) {
-                auto& nested_type =
-                        assert_cast<const DataTypeNullable&>(*type_ptr).get_nested_type();
-                auto& sub_type = assert_cast<const DataTypeArray&>(*nested_type).get_nested_type();
-                status = _add_one_column<PrimitiveType::TYPE_ARRAY, true>(
-                        column_ptr, result, rows_buffer, col_const, scale, {sub_type});
-            } else {
-                auto& sub_type = assert_cast<const DataTypeArray&>(*type_ptr).get_nested_type();
-                status = _add_one_column<PrimitiveType::TYPE_ARRAY, false>(
-                        column_ptr, result, rows_buffer, col_const, scale, {sub_type});
-            }
-            break;
-        }
-        case TYPE_STRUCT: {
-            if (type_ptr->is_nullable()) {
-                auto& nested_type =
-                        assert_cast<const DataTypeNullable&>(*type_ptr).get_nested_type();
-                auto& sub_types = assert_cast<const DataTypeStruct&>(*nested_type).get_elements();
-                status = _add_one_column<PrimitiveType::TYPE_STRUCT, true>(
-                        column_ptr, result, rows_buffer, col_const, scale, sub_types);
-            } else {
-                auto& sub_types = assert_cast<const DataTypeStruct&>(*type_ptr).get_elements();
-                status = _add_one_column<PrimitiveType::TYPE_STRUCT, false>(
-                        column_ptr, result, rows_buffer, col_const, scale, sub_types);
-            }
-            break;
-        }
-        case TYPE_MAP: {
-            if (type_ptr->is_nullable()) {
-                auto& nested_type =
-                        assert_cast<const DataTypeNullable&>(*type_ptr).get_nested_type(); //for map
-                status = _add_one_column<PrimitiveType::TYPE_MAP, true>(
-                        column_ptr, result, rows_buffer, col_const, scale, {nested_type});
-            } else {
-                status = _add_one_column<PrimitiveType::TYPE_MAP, false>(
-                        column_ptr, result, rows_buffer, col_const, scale, {type_ptr});
-            }
-            break;
-        }
-        default: {
-            LOG(WARNING) << "can't convert this type to mysql type. type = "
-                         << _output_vexpr_ctxs[i]->root()->type();
-            return Status::InternalError("vec block pack mysql buffer failed.");
-        }
-        }
+        RETURN_IF_ERROR(type_ptr->get_serde()->write_column_to_mysql(*column_ptr, rows_buffer, 0, 0,
+                                                                     num_rows, col_const));
 
         if (!status) {
             LOG(WARNING) << "convert row to mysql result failed. block_struct="
diff --git a/be/test/CMakeLists.txt b/be/test/CMakeLists.txt
index 051db1a8ef..d747a990f2 100644
--- a/be/test/CMakeLists.txt
+++ b/be/test/CMakeLists.txt
@@ -231,6 +231,7 @@ set(VEC_TEST_FILES
     vec/data_types/complex_type_test.cpp
     vec/data_types/serde/data_type_serde_pb_test.cpp
     vec/data_types/serde/data_type_serde_arrow_test.cpp
+    vec/data_types/serde/data_type_serde_mysql_test.cpp
     vec/core/block_test.cpp
     vec/core/block_spill_test.cpp
     vec/core/column_array_test.cpp
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
new file mode 100644
index 0000000000..bffbc57cbb
--- /dev/null
+++ b/be/test/vec/data_types/serde/data_type_serde_mysql_test.cpp
@@ -0,0 +1,293 @@
+
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#include <gen_cpp/Descriptors_types.h>
+#include <gen_cpp/types.pb.h>
+#include <gtest/gtest-message.h>
+#include <gtest/gtest-test-part.h>
+#include <math.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include <iostream>
+#include <memory>
+#include <string>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+#include "gtest/gtest_pred_impl.h"
+#include "olap/hll.h"
+#include "runtime/descriptors.h"
+#include "runtime/types.cpp"
+#include "testutil/desc_tbl_builder.h"
+#include "util/bitmap_value.h"
+#include "util/quantile_state.h"
+#include "vec/columns/column.h"
+#include "vec/columns/column_complex.h"
+#include "vec/columns/column_decimal.h"
+#include "vec/columns/column_nullable.h"
+#include "vec/columns/column_string.h"
+#include "vec/columns/column_vector.h"
+#include "vec/core/block.h"
+#include "vec/core/field.h"
+#include "vec/core/types.h"
+#include "vec/data_types/data_type.h"
+#include "vec/data_types/data_type_bitmap.h"
+#include "vec/data_types/data_type_date.h"
+#include "vec/data_types/data_type_date_time.h"
+#include "vec/data_types/data_type_decimal.h"
+#include "vec/data_types/data_type_hll.h"
+#include "vec/data_types/data_type_nullable.h"
+#include "vec/data_types/data_type_number.h"
+#include "vec/data_types/data_type_quantilestate.h"
+#include "vec/data_types/data_type_string.h"
+#include "vec/data_types/data_type_time_v2.h"
+#include "vec/exprs/vexpr.h"
+#include "vec/exprs/vslot_ref.h"
+#include "vec/runtime/vdatetime_value.h"
+#include "vec/sink/vmysql_result_writer.cpp"
+#include "vec/sink/vmysql_result_writer.h"
+
+namespace doris::vectorized {
+
+void serialize_and_deserialize_mysql_test() {
+    vectorized::Block block;
+    //    create_descriptor_tablet();
+    std::vector<std::tuple<std::string, FieldType, int, PrimitiveType, bool>> cols {
+            {"k1", FieldType::OLAP_FIELD_TYPE_INT, 1, TYPE_INT, false},
+            {"k7", FieldType::OLAP_FIELD_TYPE_INT, 7, TYPE_INT, true},
+            {"k2", FieldType::OLAP_FIELD_TYPE_STRING, 2, TYPE_STRING, false},
+            {"k3", FieldType::OLAP_FIELD_TYPE_DECIMAL128I, 3, TYPE_DECIMAL128I, false},
+            {"k11", FieldType::OLAP_FIELD_TYPE_DATETIME, 11, TYPE_DATETIME, false},
+            {"k4", FieldType::OLAP_FIELD_TYPE_BOOL, 4, TYPE_BOOLEAN, false}};
+    int row_num = 7;
+    // make desc and generate block
+    std::vector<vectorized::VExprContext*> _output_vexpr_ctxs;
+    _output_vexpr_ctxs.resize(cols.size());
+    doris::RuntimeState runtime_stat(doris::TUniqueId(), doris::TQueryOptions(),
+                                     doris::TQueryGlobals(), nullptr);
+    ObjectPool object_pool;
+    int col_idx = 0;
+    for (auto t : cols) {
+        TSlotDescriptor tslot;
+        RowDescriptor rowDescriptor;
+        std::vector<TExprNode> nodes;
+        nodes.resize(1);
+        std::string col_name = std::get<0>(t);
+        tslot.__set_colName(col_name);
+        TypeDescriptor type_desc(std::get<3>(t));
+        type_desc.precision = 0;
+        type_desc.scale = 0;
+        bool is_nullable(std::get<4>(t));
+        switch (std::get<3>(t)) {
+        case TYPE_BOOLEAN:
+            tslot.__set_slotType(type_desc.to_thrift());
+            {
+                auto vec = vectorized::ColumnVector<UInt8>::create();
+                auto& data = vec->get_data();
+                for (int i = 0; i < row_num; ++i) {
+                    data.push_back(i % 2);
+                }
+                vectorized::DataTypePtr data_type(std::make_shared<vectorized::DataTypeUInt8>());
+                vectorized::ColumnWithTypeAndName type_and_name(vec->get_ptr(), data_type,
+                                                                col_name);
+                block.insert(std::move(type_and_name));
+            }
+            break;
+        case TYPE_INT:
+            tslot.__set_slotType(type_desc.to_thrift());
+            if (is_nullable) {
+                {
+                    auto column_vector_int32 = vectorized::ColumnVector<Int32>::create();
+                    auto column_nullable_vector =
+                            vectorized::make_nullable(std::move(column_vector_int32));
+                    auto mutable_nullable_vector = std::move(*column_nullable_vector).mutate();
+                    for (int i = 0; i < row_num; i++) {
+                        mutable_nullable_vector->insert(int32(i));
+                    }
+                    auto data_type = vectorized::make_nullable(
+                            std::make_shared<vectorized::DataTypeInt32>());
+                    vectorized::ColumnWithTypeAndName type_and_name(
+                            mutable_nullable_vector->get_ptr(), data_type, col_name);
+                    block.insert(type_and_name);
+                }
+            } else {
+                auto vec = vectorized::ColumnVector<Int32>::create();
+                auto& data = vec->get_data();
+                for (int i = 0; i < row_num; ++i) {
+                    data.push_back(i);
+                }
+                vectorized::DataTypePtr data_type(std::make_shared<vectorized::DataTypeInt32>());
+                vectorized::ColumnWithTypeAndName type_and_name(vec->get_ptr(), data_type,
+                                                                col_name);
+                block.insert(std::move(type_and_name));
+            }
+            break;
+        case TYPE_DECIMAL128I:
+            type_desc.precision = 27;
+            type_desc.scale = 9;
+            tslot.__set_slotType(type_desc.to_thrift());
+            {
+                vectorized::DataTypePtr decimal_data_type(
+                        doris::vectorized::create_decimal(27, 9, true));
+                auto decimal_column = decimal_data_type->create_column();
+                auto& data = ((vectorized::ColumnDecimal<vectorized::Decimal<vectorized::Int128>>*)
+                                      decimal_column.get())
+                                     ->get_data();
+                for (int i = 0; i < row_num; ++i) {
+                    __int128_t value = i * pow(10, 9) + i * pow(10, 8);
+                    data.push_back(value);
+                }
+                vectorized::ColumnWithTypeAndName type_and_name(decimal_column->get_ptr(),
+                                                                decimal_data_type, col_name);
+                block.insert(type_and_name);
+            }
+            break;
+        case TYPE_STRING:
+            tslot.__set_slotType(type_desc.to_thrift());
+            {
+                auto strcol = vectorized::ColumnString::create();
+                for (int i = 0; i < row_num; ++i) {
+                    std::string is = std::to_string(i);
+                    strcol->insert_data(is.c_str(), is.size());
+                }
+                vectorized::DataTypePtr data_type(std::make_shared<vectorized::DataTypeString>());
+                vectorized::ColumnWithTypeAndName type_and_name(strcol->get_ptr(), data_type,
+                                                                col_name);
+                block.insert(type_and_name);
+            }
+            break;
+        case TYPE_HLL:
+            tslot.__set_slotType(type_desc.to_thrift());
+            {
+                vectorized::DataTypePtr hll_data_type(std::make_shared<vectorized::DataTypeHLL>());
+                auto hll_column = hll_data_type->create_column();
+                std::vector<HyperLogLog>& container =
+                        ((vectorized::ColumnHLL*)hll_column.get())->get_data();
+                for (int i = 0; i < row_num; ++i) {
+                    HyperLogLog hll;
+                    hll.update(i);
+                    container.push_back(hll);
+                }
+                vectorized::ColumnWithTypeAndName type_and_name(hll_column->get_ptr(),
+                                                                hll_data_type, col_name);
+
+                block.insert(type_and_name);
+            }
+            break;
+        case TYPE_DATEV2:
+            tslot.__set_slotType(type_desc.to_thrift());
+            {
+                auto column_vector_date_v2 = vectorized::ColumnVector<vectorized::UInt32>::create();
+                auto& date_v2_data = column_vector_date_v2->get_data();
+                for (int i = 0; i < row_num; ++i) {
+                    vectorized::DateV2Value<doris::vectorized::DateV2ValueType> value;
+                    value.from_date((uint32_t)((2022 << 9) | (6 << 5) | 6));
+                    date_v2_data.push_back(*reinterpret_cast<vectorized::UInt32*>(&value));
+                }
+                vectorized::DataTypePtr date_v2_type(
+                        std::make_shared<vectorized::DataTypeDateV2>());
+                vectorized::ColumnWithTypeAndName test_date_v2(column_vector_date_v2->get_ptr(),
+                                                               date_v2_type, col_name);
+                block.insert(test_date_v2);
+            }
+            break;
+        case TYPE_DATE: // int64
+            tslot.__set_slotType(type_desc.to_thrift());
+            {
+                auto column_vector_date = vectorized::ColumnVector<vectorized::Int64>::create();
+                auto& date_data = column_vector_date->get_data();
+                for (int i = 0; i < row_num; ++i) {
+                    vectorized::VecDateTimeValue value;
+                    value.from_date_int64(20210501);
+                    date_data.push_back(*reinterpret_cast<vectorized::Int64*>(&value));
+                }
+                vectorized::DataTypePtr date_type(std::make_shared<vectorized::DataTypeDate>());
+                vectorized::ColumnWithTypeAndName test_date(column_vector_date->get_ptr(),
+                                                            date_type, col_name);
+                block.insert(test_date);
+            }
+            break;
+        case TYPE_DATETIME: // int64
+            tslot.__set_slotType(type_desc.to_thrift());
+            {
+                auto column_vector_datetime = vectorized::ColumnVector<vectorized::Int64>::create();
+                auto& datetime_data = column_vector_datetime->get_data();
+                for (int i = 0; i < row_num; ++i) {
+                    vectorized::VecDateTimeValue value;
+                    value.from_date_int64(20210501080910);
+                    datetime_data.push_back(*reinterpret_cast<vectorized::Int64*>(&value));
+                }
+                vectorized::DataTypePtr datetime_type(
+                        std::make_shared<vectorized::DataTypeDateTime>());
+                vectorized::ColumnWithTypeAndName test_datetime(column_vector_datetime->get_ptr(),
+                                                                datetime_type, col_name);
+                block.insert(test_datetime);
+            }
+            break;
+        default:
+            break;
+        }
+
+        tslot.__set_col_unique_id(std::get<2>(t));
+        TSlotRef slotRef;
+        slotRef.__set_slot_id(tslot.id);
+        slotRef.__set_col_unique_id(tslot.col_unique_id);
+        slotRef.__set_tuple_id(tslot.slotIdx);
+        nodes[0].__set_slot_ref(slotRef);
+        nodes[0].__set_node_type(TExprNodeType::SLOT_REF);
+        nodes[0].__set_type(create_type_desc(std::get<3>(t), type_desc.precision, type_desc.scale));
+        TExpr texpr;
+        texpr.__set_nodes(nodes);
+        VExprContext* ctx = nullptr;
+        Status st = VExpr::create_expr_tree(&object_pool, texpr, &ctx);
+        std::cout << st.to_string() << std::endl;
+        doris::DescriptorTblBuilder builder(&object_pool);
+        builder.declare_tuple() << type_desc;
+        doris::DescriptorTbl* desc_tbl = builder.build();
+        auto tuple_desc = const_cast<doris::TupleDescriptor*>(desc_tbl->get_tuple_descriptor(0));
+        doris::RowDescriptor row_desc(tuple_desc, false);
+        runtime_stat.init_mem_trackers();
+        runtime_stat.set_desc_tbl(desc_tbl);
+        st = ctx->prepare(&runtime_stat, row_desc);
+        std::cout << st.to_string() << std::endl;
+        EXPECT_TRUE(st.ok());
+        _output_vexpr_ctxs[col_idx] = ctx;
+        ++col_idx;
+    }
+
+    // serialize
+    std::cout << "block structure: " << block.dump_structure() << std::endl;
+
+    // mysql_writer init
+    vectorized::VMysqlResultWriter<false> mysql_writer(nullptr, _output_vexpr_ctxs, nullptr);
+
+    Status st = mysql_writer.append_block(block);
+    EXPECT_TRUE(st.ok());
+    for (auto expr : _output_vexpr_ctxs) {
+        expr->close(&runtime_stat);
+    }
+}
+
+TEST(DataTypeSerDeMysqlTest, ScalaSerDeTest) {
+    serialize_and_deserialize_mysql_test();
+}
+
+} // namespace doris::vectorized
diff --git a/regression-test/data/cast_double_to_decimal/test_cast_double_to_decimal.out b/regression-test/data/cast_double_to_decimal/test_cast_double_to_decimal.out
index bf7354800a..ad57e8f909 100644
--- a/regression-test/data/cast_double_to_decimal/test_cast_double_to_decimal.out
+++ b/regression-test/data/cast_double_to_decimal/test_cast_double_to_decimal.out
@@ -1,17 +1,17 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !select --
-15.025	15.025	15.02500000	15.02500000
-15.025	15.025	15.02500000	15.02500000
-15.330	15.330	15.33000000	15.33000000
-16.000	16.000	16.00000000	16.00000000
-16.000	16.000	15.99990000	15.99990000
-1.000	1.000	0.99990000	0.99990000
-15.025	15.025	15.02450000	15.02450000
--15.025	-15.025	-15.02500000	-15.02500000
--15.025	-15.025	-15.02500000	-15.02500000
--15.330	-15.330	-15.33000000	-15.33000000
--16.000	-16.000	-16.00000000	-16.00000000
--16.000	-16.000	-15.99990000	-15.99990000
--1.000	-1.000	-0.99990000	-0.99990000
--15.025	-15.025	-15.02450000	-15.02450000
+15.025000000	15.025	15.025000000	15.02500000
+15.025000000	15.025	15.025000000	15.02500000
+15.330000000	15.330	15.330000000	15.33000000
+15.999999995	16.000	15.999999995	16.00000000
+15.999900000	16.000	15.999900000	15.99990000
+0.999900000	1.000	0.999900000	0.99990000
+15.024500000	15.025	15.024500000	15.02450000
+-15.025000000	-15.025	-15.025000000	-15.02500000
+-15.025000000	-15.025	-15.025000000	-15.02500000
+-15.330000000	-15.330	-15.330000000	-15.33000000
+-15.999999995	-16.000	-15.999999995	-16.00000000
+-15.999900000	-16.000	-15.999900000	-15.99990000
+-0.999900000	-1.000	-0.999900000	-0.99990000
+-15.024500000	-15.025	-15.024500000	-15.02450000
 
diff --git a/regression-test/data/delete_p0/test_struct_column_delete.out b/regression-test/data/delete_p0/test_struct_column_delete.out
index bfc0e40d1e..7fb3de0857 100644
--- a/regression-test/data/delete_p0/test_struct_column_delete.out
+++ b/regression-test/data/delete_p0/test_struct_column_delete.out
@@ -1,3 +1,4 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !sql --
-1	{1, 'a'}
+1	{1, "a"}
+
diff --git a/regression-test/data/dynamic_table_p0/sql/q02.out b/regression-test/data/dynamic_table_p0/sql/q02.out
index aacfcfb092..abffaa3c29 100644
--- a/regression-test/data/dynamic_table_p0/sql/q02.out
+++ b/regression-test/data/dynamic_table_p0/sql/q02.out
@@ -18,15 +18,15 @@
 4060
 
 -- !q02_7 --
-['.805', '.621']
-['.805', '.727']
-['.805', '.818']
+[".805", ".621"]
+[".805", ".727"]
+[".805", ".818"]
 
 -- !q02_8 --
 659
 
 -- !q02_9 --
-['.805', '.621']
-['.805', '.727']
-['.805', '.818']
+[".805", ".621"]
+[".805", ".727"]
+[".805", ".818"]
 
diff --git a/regression-test/data/dynamic_table_p0/sql/q04.out b/regression-test/data/dynamic_table_p0/sql/q04.out
index 2a8154a8bd..70d7c9b8f5 100644
--- a/regression-test/data/dynamic_table_p0/sql/q04.out
+++ b/regression-test/data/dynamic_table_p0/sql/q04.out
@@ -1,15 +1,15 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !q04 --
-[2008-09-19 06:15:41, 2008-09-19 06:28:51, 2008-09-19 06:29:53, 2008-09-19 07:25:28, 2008-09-19 10:10:05, 2009-02-27 00:27:14]	['Misplaced (13710)', 'Justin Bozonier (9401)', 'Petr Macek (15045)', 'n1x0nad', 'Mladen Mihajlovic (11421)', 'Saem (68131)']
-[2008-09-19 06:26:11, 2008-09-19 06:32:58, 2008-09-19 06:45:40, 2008-09-19 07:01:59, 2014-02-24 21:20:49, 2015-08-10 23:28:09, 2016-03-01 19:48:35, 2011-06-21 16:30:27, 2011-07-05 11:29:51, 2011-08-08 19:35:41]	['Jerub (14648)', 'Matthias Kestenholz (317346)', 'Antti Rasinen (8570)', 'Thomas Wouters (17624)', 'Craig (1489354)', 'Aaron Hall (541136)', 'Ethan Furman (208880)', 'kindall (416467)', 'e-satis (9951)', 'espeed (161085)']
-[2009-06-16 07:49:19, 2009-06-16 07:49:57, 2009-06-16 08:02:49, 2009-06-16 08:10:21, 2009-06-16 08:20:10, 2009-06-16 08:30:10, 2009-06-16 08:30:34, 2009-06-16 08:40:07, 2009-06-16 08:50:32, 2009-06-16 09:39:52]	['paxdiablo (14860)', 'Dutow (73657)', 'DShook (370)', 'Roddy (1737)', 'bill (121958)', 'henrikpp (1442)', 'Martin Schuhfuß (123219)', 'finnw (12048)', 'Christoffer (15514)', 'Skizz (1898)']
-[2009-06-16 08:04:28, 2013-04-19 14:38:22, 2013-05-30 15:05:22, 2013-08-16 03:59:06, 2015-02-13 16:10:43, 2015-05-26 14:34:08, 2015-10-20 09:39:30, 2010-08-10 09:36:43, 2010-08-20 21:43:04, 2011-02-04 14:15:19, 2011-02-25 14:29:48, 2011-06-13 04:48:04, 2011-07-12 01:38:49, 2011-07-20 20:27:34, 2011-08-22 22:23:34]	['Thomas Levesque (98713)', 'karma (2299633)', 'Paul Solomenchuk (1934361)', 'Evgeny Bechkalo (419292)', 'Fahad Owais (4564116)', 'JustinMichel (1469095)', 'Chaitanya Kadamati  [...]
-[2009-06-16 08:22:29, 2009-06-16 11:27:20, 2009-06-17 06:08:22, 2013-08-27 22:22:35]	['jitter (122428)', 'tim (2986)', 'rik.the.vik (45570)', 'neowulf33 (1216965)']
-[2009-06-16 07:45:59, 2009-06-16 07:59:15, 2009-06-16 08:07:41, 2009-06-16 08:08:14, 2014-03-04 19:32:41]	['Pondidum (1500)', 'Jason Punyon (6212)', 'Igal Tabachnik (8205)', 'Dun3 (66466)', 'user922020 (922020)']
-[2009-06-16 07:52:31, 2009-06-16 07:52:40, 2009-06-16 07:53:12, 2009-06-16 07:54:24, 2009-06-16 08:00:00, 2009-06-16 08:00:55, 2009-06-16 08:11:29, 2009-06-16 08:20:50, 2011-11-22 16:53:06]	['Marco van de Voort (99354)', 'unwind (28169)', 'Sev (83819)', 'LeopardSkinPillBoxHat (22489)', 'Degvik (26276)', 'Aditya Sehgal (95321)', 'knittl (112968)', 'pmr (105672)', 'ALOK KUMAR mca sathyabama univ (1060252)']
-[2009-06-16 08:01:45, 2009-06-16 08:06:40, 2009-06-16 11:01:03, 2012-07-03 10:27:52, 2012-09-14 17:11:24, 2010-05-07 15:27:47, 2010-05-07 15:40:32]	['Mischa Kroon (30600)', 'Michał Chaniewski (119800)', 'Richard (67392)', 'bresleveloper (1369989)', 'Mohammad Shahnawaz (1672032)', 'kacalapy (352157)', 'Lance May (312294)']
-[2009-06-16 08:12:51, 2009-06-16 08:17:18, 2009-06-16 09:15:53, 2009-06-16 12:23:04, 2009-06-16 22:56:35, 2009-06-17 02:10:19, 2009-06-17 03:06:53]	['PaulJWilliams (71399)', 'Anurag Uniyal (6946)', 'brian d foy (2766176)', 'Jared (14744)', 'ymir (96448)', 'vulcan_hacker (121659)', 'spiffyman (102467)']
-[2009-06-16 08:30:25, 2009-06-16 09:00:17, 2014-07-21 12:39:38, 2010-05-14 16:18:04]	['ShiDoiSi (60462)', 'Jonas (24946)', 'The Dude (1171465)', 'BMeph (140483)']
+[2008-09-19 06:15:41, 2008-09-19 06:28:51, 2008-09-19 06:29:53, 2008-09-19 07:25:28, 2008-09-19 10:10:05, 2009-02-27 00:27:14]	["Misplaced (13710)", "Justin Bozonier (9401)", "Petr Macek (15045)", "n1x0nad", "Mladen Mihajlovic (11421)", "Saem (68131)"]
+[2008-09-19 06:26:11, 2008-09-19 06:32:58, 2008-09-19 06:45:40, 2008-09-19 07:01:59, 2014-02-24 21:20:49, 2015-08-10 23:28:09, 2016-03-01 19:48:35, 2011-06-21 16:30:27, 2011-07-05 11:29:51, 2011-08-08 19:35:41]	["Jerub (14648)", "Matthias Kestenholz (317346)", "Antti Rasinen (8570)", "Thomas Wouters (17624)", "Craig (1489354)", "Aaron Hall (541136)", "Ethan Furman (208880)", "kindall (416467)", "e-satis (9951)", "espeed (161085)"]
+[2009-06-16 07:49:19, 2009-06-16 07:49:57, 2009-06-16 08:02:49, 2009-06-16 08:10:21, 2009-06-16 08:20:10, 2009-06-16 08:30:10, 2009-06-16 08:30:34, 2009-06-16 08:40:07, 2009-06-16 08:50:32, 2009-06-16 09:39:52]	["paxdiablo (14860)", "Dutow (73657)", "DShook (370)", "Roddy (1737)", "bill (121958)", "henrikpp (1442)", "Martin Schuhfuß (123219)", "finnw (12048)", "Christoffer (15514)", "Skizz (1898)"]
+[2009-06-16 08:04:28, 2013-04-19 14:38:22, 2013-05-30 15:05:22, 2013-08-16 03:59:06, 2015-02-13 16:10:43, 2015-05-26 14:34:08, 2015-10-20 09:39:30, 2010-08-10 09:36:43, 2010-08-20 21:43:04, 2011-02-04 14:15:19, 2011-02-25 14:29:48, 2011-06-13 04:48:04, 2011-07-12 01:38:49, 2011-07-20 20:27:34, 2011-08-22 22:23:34]	["Thomas Levesque (98713)", "karma (2299633)", "Paul Solomenchuk (1934361)", "Evgeny Bechkalo (419292)", "Fahad Owais (4564116)", "JustinMichel (1469095)", "Chaitanya Kadamati  [...]
+[2009-06-16 08:22:29, 2009-06-16 11:27:20, 2009-06-17 06:08:22, 2013-08-27 22:22:35]	["jitter (122428)", "tim (2986)", "rik.the.vik (45570)", "neowulf33 (1216965)"]
+[2009-06-16 07:45:59, 2009-06-16 07:59:15, 2009-06-16 08:07:41, 2009-06-16 08:08:14, 2014-03-04 19:32:41]	["Pondidum (1500)", "Jason Punyon (6212)", "Igal Tabachnik (8205)", "Dun3 (66466)", "user922020 (922020)"]
+[2009-06-16 07:52:31, 2009-06-16 07:52:40, 2009-06-16 07:53:12, 2009-06-16 07:54:24, 2009-06-16 08:00:00, 2009-06-16 08:00:55, 2009-06-16 08:11:29, 2009-06-16 08:20:50, 2011-11-22 16:53:06]	["Marco van de Voort (99354)", "unwind (28169)", "Sev (83819)", "LeopardSkinPillBoxHat (22489)", "Degvik (26276)", "Aditya Sehgal (95321)", "knittl (112968)", "pmr (105672)", "ALOK KUMAR mca sathyabama univ (1060252)"]
+[2009-06-16 08:01:45, 2009-06-16 08:06:40, 2009-06-16 11:01:03, 2012-07-03 10:27:52, 2012-09-14 17:11:24, 2010-05-07 15:27:47, 2010-05-07 15:40:32]	["Mischa Kroon (30600)", "Michał Chaniewski (119800)", "Richard (67392)", "bresleveloper (1369989)", "Mohammad Shahnawaz (1672032)", "kacalapy (352157)", "Lance May (312294)"]
+[2009-06-16 08:12:51, 2009-06-16 08:17:18, 2009-06-16 09:15:53, 2009-06-16 12:23:04, 2009-06-16 22:56:35, 2009-06-17 02:10:19, 2009-06-17 03:06:53]	["PaulJWilliams (71399)", "Anurag Uniyal (6946)", "brian d foy (2766176)", "Jared (14744)", "ymir (96448)", "vulcan_hacker (121659)", "spiffyman (102467)"]
+[2009-06-16 08:30:25, 2009-06-16 09:00:17, 2014-07-21 12:39:38, 2010-05-14 16:18:04]	["ShiDoiSi (60462)", "Jonas (24946)", "The Dude (1171465)", "BMeph (140483)"]
 
 -- !q04_2 --
 2012-04-06T16:26:51	10014510	PHP Unique Situation. Remove Duplicates From Array Before Sent to Function Inside Loop
@@ -41,98 +41,98 @@
 10000889	[2012-04-03 20:29:29, 2012-04-03 20:49:50]	HaniAA (1311352)
 
 -- !q04_6 --
-1000261	2009-06-16T08:48:45	[2009-06-16 08:55:21, 2009-06-16 09:04:42]	How to avoid javascript retrieving values from non-existing elements	['Artem Barger (104014)', 'Dan F (11569)']	['javascript', 'wordpress', 'cookies']	Steven (91612)
-10000064	2012-04-03T19:30:55	[2012-04-04 11:23:51, 2013-06-12 05:37:25, 2015-12-10 18:50:08]	Is there a java library to bind XML (LOM) to XML+RDF?	['William Greenly (611714)', 'po5i (1303826)', 'Enayat (2500344)']	['java', 'xml', 'xslt', 'rdf']	po5i (1303826)
-10000069	2012-04-03T19:31:17	[2012-04-03 19:35:39, 2012-04-03 19:54:31, 2012-04-03 20:00:11]	Extending javascript function scope	['Kevin Bowersox (714969)', 'Adam Shiemke (302132)', 'Juan Mendes (227299)']	['javascript', 'dynamic', 'scope']	6502 (320726)
-10000149	2012-04-03T19:38:03	[2012-04-03 19:42:17, 2012-04-03 19:44:01, 2012-04-03 19:51:16, 2012-04-03 20:02:21, 2012-04-04 18:05:13, 2012-08-18 12:43:09]	Example of MVC in java/jdk	['hvgotcodes (305644)', 'tenorsax (1048330)', 'Ulises Layera (1056488)', 'user282172 (282172)', 'Alonso Dominguez (748883)', 'padman (1032875)']	['java', 'model-view-controller']	Martin Prakash (1311203)
-10000296	2012-04-03T19:49:51	[2012-04-03 19:55:44, 2012-04-03 20:11:35]	WriteInt-RandomAccessFile - java	['ControlAltDel (1291492)', 'Eugene Retunsky (871953)']	['java', 'random-access']	bachurim09 (438728)
-10000499	2012-04-03T20:03:29	[]	process hanging on java process builder start	[]	['java']	Ricardo Garza V. (1217187)
-10000526	2012-04-03T20:04:40	[2012-04-03 23:06:25]	javascript - fetch additional fields from mysql and display in table	['cha55son (595130)']	['php', 'javascript', 'mysql', 'forms']	Smudger (940173)
-10000528	2012-04-03T20:04:46	[2012-04-03 20:06:10]	Do I need to escape text/plain or text/javascript?	['Matthew Flaschen (47773)']	['php', 'javascript', 'security', 'xss']	qwertymk (465546)
-10000775	2012-04-03T20:20:55	[2012-04-03 20:32:46, 2012-04-03 20:36:09]	javascript mouse event compatibility issue between browsers	['Jack M (815612)', 'Simon Forsberg (1310566)']	['javascript', 'html5', 'mouseevent', 'cross-browser']	Perex19 (684608)
-10000888	2012-04-03T20:28:20	[2012-04-03 20:29:29, 2012-04-03 20:49:50]	Check if char exists in java	['biziclop (574479)', 'Cratylus (384706)']	['java']	HaniAA (1311352)
+1000261	2009-06-16T08:48:45	[2009-06-16 08:55:21, 2009-06-16 09:04:42]	How to avoid javascript retrieving values from non-existing elements	["Artem Barger (104014)", "Dan F (11569)"]	["javascript", "wordpress", "cookies"]	Steven (91612)
+10000064	2012-04-03T19:30:55	[2012-04-04 11:23:51, 2013-06-12 05:37:25, 2015-12-10 18:50:08]	Is there a java library to bind XML (LOM) to XML+RDF?	["William Greenly (611714)", "po5i (1303826)", "Enayat (2500344)"]	["java", "xml", "xslt", "rdf"]	po5i (1303826)
+10000069	2012-04-03T19:31:17	[2012-04-03 19:35:39, 2012-04-03 19:54:31, 2012-04-03 20:00:11]	Extending javascript function scope	["Kevin Bowersox (714969)", "Adam Shiemke (302132)", "Juan Mendes (227299)"]	["javascript", "dynamic", "scope"]	6502 (320726)
+10000149	2012-04-03T19:38:03	[2012-04-03 19:42:17, 2012-04-03 19:44:01, 2012-04-03 19:51:16, 2012-04-03 20:02:21, 2012-04-04 18:05:13, 2012-08-18 12:43:09]	Example of MVC in java/jdk	["hvgotcodes (305644)", "tenorsax (1048330)", "Ulises Layera (1056488)", "user282172 (282172)", "Alonso Dominguez (748883)", "padman (1032875)"]	["java", "model-view-controller"]	Martin Prakash (1311203)
+10000296	2012-04-03T19:49:51	[2012-04-03 19:55:44, 2012-04-03 20:11:35]	WriteInt-RandomAccessFile - java	["ControlAltDel (1291492)", "Eugene Retunsky (871953)"]	["java", "random-access"]	bachurim09 (438728)
+10000499	2012-04-03T20:03:29	[]	process hanging on java process builder start	[]	["java"]	Ricardo Garza V. (1217187)
+10000526	2012-04-03T20:04:40	[2012-04-03 23:06:25]	javascript - fetch additional fields from mysql and display in table	["cha55son (595130)"]	["php", "javascript", "mysql", "forms"]	Smudger (940173)
+10000528	2012-04-03T20:04:46	[2012-04-03 20:06:10]	Do I need to escape text/plain or text/javascript?	["Matthew Flaschen (47773)"]	["php", "javascript", "security", "xss"]	qwertymk (465546)
+10000775	2012-04-03T20:20:55	[2012-04-03 20:32:46, 2012-04-03 20:36:09]	javascript mouse event compatibility issue between browsers	["Jack M (815612)", "Simon Forsberg (1310566)"]	["javascript", "html5", "mouseevent", "cross-browser"]	Perex19 (684608)
+10000888	2012-04-03T20:28:20	[2012-04-03 20:29:29, 2012-04-03 20:49:50]	Check if char exists in java	["biziclop (574479)", "Cratylus (384706)"]	["java"]	HaniAA (1311352)
 
 -- !q04_7 --
-2009-06-16T08:48:45	How to avoid javascript retrieving values from non-existing elements	['javascript', 'wordpress', 'cookies']
-2012-04-03T19:30:55	Is there a java library to bind XML (LOM) to XML+RDF?	['java', 'xml', 'xslt', 'rdf']
-2012-04-03T19:31:17	Extending javascript function scope	['javascript', 'dynamic', 'scope']
-2012-04-03T19:38:03	Example of MVC in java/jdk	['java', 'model-view-controller']
-2012-04-03T19:49:51	WriteInt-RandomAccessFile - java	['java', 'random-access']
-2012-04-03T20:03:29	process hanging on java process builder start	['java']
-2012-04-03T20:04:40	javascript - fetch additional fields from mysql and display in table	['php', 'javascript', 'mysql', 'forms']
-2012-04-03T20:04:46	Do I need to escape text/plain or text/javascript?	['php', 'javascript', 'security', 'xss']
-2012-04-03T20:20:55	javascript mouse event compatibility issue between browsers	['javascript', 'html5', 'mouseevent', 'cross-browser']
-2012-04-03T20:28:20	Check if char exists in java	['java']
+2009-06-16T08:48:45	How to avoid javascript retrieving values from non-existing elements	["javascript", "wordpress", "cookies"]
+2012-04-03T19:30:55	Is there a java library to bind XML (LOM) to XML+RDF?	["java", "xml", "xslt", "rdf"]
+2012-04-03T19:31:17	Extending javascript function scope	["javascript", "dynamic", "scope"]
+2012-04-03T19:38:03	Example of MVC in java/jdk	["java", "model-view-controller"]
+2012-04-03T19:49:51	WriteInt-RandomAccessFile - java	["java", "random-access"]
+2012-04-03T20:03:29	process hanging on java process builder start	["java"]
+2012-04-03T20:04:40	javascript - fetch additional fields from mysql and display in table	["php", "javascript", "mysql", "forms"]
+2012-04-03T20:04:46	Do I need to escape text/plain or text/javascript?	["php", "javascript", "security", "xss"]
+2012-04-03T20:20:55	javascript mouse event compatibility issue between browsers	["javascript", "html5", "mouseevent", "cross-browser"]
+2012-04-03T20:28:20	Check if char exists in java	["java"]
 
 -- !q04_8 --
-['Misplaced (13710)', 'Justin Bozonier (9401)', 'Petr Macek (15045)', 'n1x0nad', 'Mladen Mihajlovic (11421)', 'Saem (68131)']	2008-09-19T06:10:16	['web-frameworks']	100001
-['Jerub (14648)', 'Matthias Kestenholz (317346)', 'Antti Rasinen (8570)', 'Thomas Wouters (17624)', 'Craig (1489354)', 'Aaron Hall (541136)', 'Ethan Furman (208880)', 'kindall (416467)', 'e-satis (9951)', 'espeed (161085)']	2008-09-19T06:10:47	['python', 'oop', 'metaclass', 'python-datamodel']	100003
-['Tom Carr (14954)', 'lotsoffreetime (18248)']	2008-09-19T06:12:38	['c#', 'logging', 'enterprise-library', 'application-blocks']	100007
-['Michał Niklas (22595)', 'Jack Njiri (77153)']	2009-06-16T07:28:43	['vb6', 'progress-bar']	1000000
-['laalto (101361)', 'anon', 'frankster (147813)']	2009-06-16T07:28:52	['c++', 'symbian']	1000001
-['Dmitriy Matveev (53481)']	2009-06-16T07:30:23	['java', '.net', 'serialization', 'ikvm']	1000004
-['Sev (83819)', 'AlexDrenea (39624)', 'blowdart (2525)']	2009-06-16T07:36:09	['c#', 'windows', 'winforms', 'windows-services']	1000023
-['Canavar (55351)', 'Thevs (8559)', 'Alsciende (119195)']	2009-06-16T07:38:34	['javascript', 'internet-explorer']	1000028
-['paxdiablo (14860)', 'Dutow (73657)', 'DShook (370)', 'Roddy (1737)', 'bill (121958)', 'henrikpp (1442)', 'Martin Schuhfuß (123219)', 'finnw (12048)', 'Christoffer (15514)', 'Skizz (1898)']	2009-06-16T07:40:17	['c', 'algorithm', 'sorting', 'word']	1000036
-['Dutow (73657)', 'PaulJWilliams (71399)', 'friendlyautomaton (1570376)']	2009-06-16T07:40:56	['big-o']	1000038
+["Misplaced (13710)", "Justin Bozonier (9401)", "Petr Macek (15045)", "n1x0nad", "Mladen Mihajlovic (11421)", "Saem (68131)"]	2008-09-19T06:10:16	["web-frameworks"]	100001
+["Jerub (14648)", "Matthias Kestenholz (317346)", "Antti Rasinen (8570)", "Thomas Wouters (17624)", "Craig (1489354)", "Aaron Hall (541136)", "Ethan Furman (208880)", "kindall (416467)", "e-satis (9951)", "espeed (161085)"]	2008-09-19T06:10:47	["python", "oop", "metaclass", "python-datamodel"]	100003
+["Tom Carr (14954)", "lotsoffreetime (18248)"]	2008-09-19T06:12:38	["c#", "logging", "enterprise-library", "application-blocks"]	100007
+["Michał Niklas (22595)", "Jack Njiri (77153)"]	2009-06-16T07:28:43	["vb6", "progress-bar"]	1000000
+["laalto (101361)", "anon", "frankster (147813)"]	2009-06-16T07:28:52	["c++", "symbian"]	1000001
+["Dmitriy Matveev (53481)"]	2009-06-16T07:30:23	["java", ".net", "serialization", "ikvm"]	1000004
+["Sev (83819)", "AlexDrenea (39624)", "blowdart (2525)"]	2009-06-16T07:36:09	["c#", "windows", "winforms", "windows-services"]	1000023
+["Canavar (55351)", "Thevs (8559)", "Alsciende (119195)"]	2009-06-16T07:38:34	["javascript", "internet-explorer"]	1000028
+["paxdiablo (14860)", "Dutow (73657)", "DShook (370)", "Roddy (1737)", "bill (121958)", "henrikpp (1442)", "Martin Schuhfuß (123219)", "finnw (12048)", "Christoffer (15514)", "Skizz (1898)"]	2009-06-16T07:40:17	["c", "algorithm", "sorting", "word"]	1000036
+["Dutow (73657)", "PaulJWilliams (71399)", "friendlyautomaton (1570376)"]	2009-06-16T07:40:56	["big-o"]	1000038
 
 -- !q04_9 --
-['Misplaced (13710)', 'Justin Bozonier (9401)', 'Petr Macek (15045)', 'n1x0nad', 'Mladen Mihajlovic (11421)', 'Saem (68131)']	2008-09-19T06:10:16	['web-frameworks']	100001	MVC or event-driven component-oriented web frameworks?
-['Jerub (14648)', 'Matthias Kestenholz (317346)', 'Antti Rasinen (8570)', 'Thomas Wouters (17624)', 'Craig (1489354)', 'Aaron Hall (541136)', 'Ethan Furman (208880)', 'kindall (416467)', 'e-satis (9951)', 'espeed (161085)']	2008-09-19T06:10:47	['python', 'oop', 'metaclass', 'python-datamodel']	100003	What is a metaclass in Python?
-['Tom Carr (14954)', 'lotsoffreetime (18248)']	2008-09-19T06:12:38	['c#', 'logging', 'enterprise-library', 'application-blocks']	100007	Logging Application Block - Logging the caller
-['Michał Niklas (22595)', 'Jack Njiri (77153)']	2009-06-16T07:28:43	['vb6', 'progress-bar']	1000000	Display Progress Bar at the Time of Processing
-['laalto (101361)', 'anon', 'frankster (147813)']	2009-06-16T07:28:52	['c++', 'symbian']	1000001	Descriptor conversion problem
-['Dmitriy Matveev (53481)']	2009-06-16T07:30:23	['java', '.net', 'serialization', 'ikvm']	1000004	Problems with class loading during deserialization of type from another assembly
-['Sev (83819)', 'AlexDrenea (39624)', 'blowdart (2525)']	2009-06-16T07:36:09	['c#', 'windows', 'winforms', 'windows-services']	1000023	Windows Service vs Windows Application - Best Practice
-['Canavar (55351)', 'Thevs (8559)', 'Alsciende (119195)']	2009-06-16T07:38:34	['javascript', 'internet-explorer']	1000028	How to focus radio control using Javascript in IE?
-['paxdiablo (14860)', 'Dutow (73657)', 'DShook (370)', 'Roddy (1737)', 'bill (121958)', 'henrikpp (1442)', 'Martin Schuhfuß (123219)', 'finnw (12048)', 'Christoffer (15514)', 'Skizz (1898)']	2009-06-16T07:40:17	['c', 'algorithm', 'sorting', 'word']	1000036	What sorting technique will you use?
-['Dutow (73657)', 'PaulJWilliams (71399)', 'friendlyautomaton (1570376)']	2009-06-16T07:40:56	['big-o']	1000038	Whats the least upper bound of the growth rate using big-Oh notation of these two functions
+["Misplaced (13710)", "Justin Bozonier (9401)", "Petr Macek (15045)", "n1x0nad", "Mladen Mihajlovic (11421)", "Saem (68131)"]	2008-09-19T06:10:16	["web-frameworks"]	100001	MVC or event-driven component-oriented web frameworks?
+["Jerub (14648)", "Matthias Kestenholz (317346)", "Antti Rasinen (8570)", "Thomas Wouters (17624)", "Craig (1489354)", "Aaron Hall (541136)", "Ethan Furman (208880)", "kindall (416467)", "e-satis (9951)", "espeed (161085)"]	2008-09-19T06:10:47	["python", "oop", "metaclass", "python-datamodel"]	100003	What is a metaclass in Python?
+["Tom Carr (14954)", "lotsoffreetime (18248)"]	2008-09-19T06:12:38	["c#", "logging", "enterprise-library", "application-blocks"]	100007	Logging Application Block - Logging the caller
+["Michał Niklas (22595)", "Jack Njiri (77153)"]	2009-06-16T07:28:43	["vb6", "progress-bar"]	1000000	Display Progress Bar at the Time of Processing
+["laalto (101361)", "anon", "frankster (147813)"]	2009-06-16T07:28:52	["c++", "symbian"]	1000001	Descriptor conversion problem
+["Dmitriy Matveev (53481)"]	2009-06-16T07:30:23	["java", ".net", "serialization", "ikvm"]	1000004	Problems with class loading during deserialization of type from another assembly
+["Sev (83819)", "AlexDrenea (39624)", "blowdart (2525)"]	2009-06-16T07:36:09	["c#", "windows", "winforms", "windows-services"]	1000023	Windows Service vs Windows Application - Best Practice
+["Canavar (55351)", "Thevs (8559)", "Alsciende (119195)"]	2009-06-16T07:38:34	["javascript", "internet-explorer"]	1000028	How to focus radio control using Javascript in IE?
+["paxdiablo (14860)", "Dutow (73657)", "DShook (370)", "Roddy (1737)", "bill (121958)", "henrikpp (1442)", "Martin Schuhfuß (123219)", "finnw (12048)", "Christoffer (15514)", "Skizz (1898)"]	2009-06-16T07:40:17	["c", "algorithm", "sorting", "word"]	1000036	What sorting technique will you use?
+["Dutow (73657)", "PaulJWilliams (71399)", "friendlyautomaton (1570376)"]	2009-06-16T07:40:56	["big-o"]	1000038	Whats the least upper bound of the growth rate using big-Oh notation of these two functions
 
 -- !q04_10 --
-['javascript', 'wordpress', 'cookies']	How to avoid javascript retrieving values from non-existing elements	1010483
-['java', 'xml', 'xslt', 'rdf']	Is there a java library to bind XML (LOM) to XML+RDF?	10010286
-['javascript', 'dynamic', 'scope']	Extending javascript function scope	10010291
-['java', 'model-view-controller']	Example of MVC in java/jdk	10010371
-['java', 'random-access']	WriteInt-RandomAccessFile - java	10010518
-['java']	process hanging on java process builder start	10010721
-['php', 'javascript', 'mysql', 'forms']	javascript - fetch additional fields from mysql and display in table	10010748
-['php', 'javascript', 'security', 'xss']	Do I need to escape text/plain or text/javascript?	10010750
-['javascript', 'html5', 'mouseevent', 'cross-browser']	javascript mouse event compatibility issue between browsers	10010997
-['java']	Check if char exists in java	10011110
+["javascript", "wordpress", "cookies"]	How to avoid javascript retrieving values from non-existing elements	1010483
+["java", "xml", "xslt", "rdf"]	Is there a java library to bind XML (LOM) to XML+RDF?	10010286
+["javascript", "dynamic", "scope"]	Extending javascript function scope	10010291
+["java", "model-view-controller"]	Example of MVC in java/jdk	10010371
+["java", "random-access"]	WriteInt-RandomAccessFile - java	10010518
+["java"]	process hanging on java process builder start	10010721
+["php", "javascript", "mysql", "forms"]	javascript - fetch additional fields from mysql and display in table	10010748
+["php", "javascript", "security", "xss"]	Do I need to escape text/plain or text/javascript?	10010750
+["javascript", "html5", "mouseevent", "cross-browser"]	javascript mouse event compatibility issue between browsers	10010997
+["java"]	Check if char exists in java	10011110
 
 -- !q04_11 --
-['java', 'flex', 'code-generation', 'remoting']	Can I create server-side Java classes, OR mapping, and client-side AS classes from a single model description?	1010385
-['java', 'parsing', 'dsl', 'formula']	Formula in a database row - Java	1010386
-['java', 'refactoring', 'deprecated']	Java: De-deprecated-ing Tools	1010393
-['java', 'jar', 'tibco']	Issue with classpath in Java project	1010403
-['java', 'memory', 'tomcat']	Java Heap Space (CMS with huge files)	1010441
-['java', 'arrays', 'reflection']	Java Reflection isArray() always false	1010533
-['java', 'xml', 'xslt', 'rdf']	Is there a java library to bind XML (LOM) to XML+RDF?	10010286
-['java', 'scala', 'generics', 'collections', 'trait']	Re-using Java generic collections in Scala without trait Object	10010348
-['java', 'model-view-controller']	Example of MVC in java/jdk	10010371
-['java', 'random-access']	WriteInt-RandomAccessFile - java	10010518
+["java", "flex", "code-generation", "remoting"]	Can I create server-side Java classes, OR mapping, and client-side AS classes from a single model description?	1010385
+["java", "parsing", "dsl", "formula"]	Formula in a database row - Java	1010386
+["java", "refactoring", "deprecated"]	Java: De-deprecated-ing Tools	1010393
+["java", "jar", "tibco"]	Issue with classpath in Java project	1010403
+["java", "memory", "tomcat"]	Java Heap Space (CMS with huge files)	1010441
+["java", "arrays", "reflection"]	Java Reflection isArray() always false	1010533
+["java", "xml", "xslt", "rdf"]	Is there a java library to bind XML (LOM) to XML+RDF?	10010286
+["java", "scala", "generics", "collections", "trait"]	Re-using Java generic collections in Scala without trait Object	10010348
+["java", "model-view-controller"]	Example of MVC in java/jdk	10010371
+["java", "random-access"]	WriteInt-RandomAccessFile - java	10010518
 
 -- !q04_12 --
-10000005	2012-04-03T19:25:46	[2012-04-03 19:28:39]	PHP Sort array by field?	['meagar (229044)']	['php', 'arrays', 'sorting']	Michael Ecklund (804104)
-10000005	2012-04-03T19:25:46	[2012-04-03 19:28:39]	PHP Sort array by field?	['meagar (229044)']	['php', 'arrays', 'sorting']	Michael Ecklund (804104)
-10000007	2012-04-03T19:26:05	[2012-04-03 19:34:49, 2012-04-03 19:36:06]	Arrays in PHP seems to drop elements	['Jarosław Gomułka (1256609)', 'RyanS (1310604)']	['php', 'arrays']	farley (1311218)
-10000008	2012-04-03T19:26:09	[2012-04-03 19:44:28]	RESTful servlet URLs - servlet-mapping in web.xml	['matsev (303598)']	['java', 'rest', 'servlets', 'spring-mvc', 'url-pattern']	John Strickler (292614)
-10000014	2012-04-03T19:26:29	[2012-04-11 06:02:39]	How to De-Authenticate a Windows Auth user with PHP	['Rob Allen (23060)']	['php', 'windows', 'iis-7', 'windows-authentication']	Neal (561731)
-10000019	2012-04-03T19:26:51	[2012-04-03 19:30:25]	Are arrays in MongoDB documents always kept in order?	['Blacksad (820664)']	['mongodb']	Adam Monsen (156060)
-10000020	2012-04-03T19:26:51	[2012-04-04 16:00:38, 2014-07-06 09:00:37]	AJAX post to google spreadsheet	['Stuart Nelson (1227292)', 'mhawksey (1027723)']	['jquery', 'google-apps-script']	Stuart Nelson (1227292)
-10000023	2012-04-03T19:26:57	[2012-04-04 12:56:34]	Are these LAMP permissions secure?	['larsks (147356)']	['linux', 'apache', 'security', 'ubuntu', 'permissions']	Trent Scott (600873)
-10000024	2012-04-03T19:26:58	[2012-04-11 09:33:38]	Handlebars EACH iterator error	['joevallender (426171)']	['javascript', 'handlebars.js']	CoryDorning (322551)
-10000030	2012-04-03T19:27:30	[]	Is there a way to set a MKMapView map to an alpha lower to 1 and its markers to 1?	[]	['ios', 'mkmapview', 'mkannotationview']	annie (591510)
+10000005	2012-04-03T19:25:46	[2012-04-03 19:28:39]	PHP Sort array by field?	["meagar (229044)"]	["php", "arrays", "sorting"]	Michael Ecklund (804104)
+10000005	2012-04-03T19:25:46	[2012-04-03 19:28:39]	PHP Sort array by field?	["meagar (229044)"]	["php", "arrays", "sorting"]	Michael Ecklund (804104)
+10000007	2012-04-03T19:26:05	[2012-04-03 19:34:49, 2012-04-03 19:36:06]	Arrays in PHP seems to drop elements	["Jarosław Gomułka (1256609)", "RyanS (1310604)"]	["php", "arrays"]	farley (1311218)
+10000008	2012-04-03T19:26:09	[2012-04-03 19:44:28]	RESTful servlet URLs - servlet-mapping in web.xml	["matsev (303598)"]	["java", "rest", "servlets", "spring-mvc", "url-pattern"]	John Strickler (292614)
+10000014	2012-04-03T19:26:29	[2012-04-11 06:02:39]	How to De-Authenticate a Windows Auth user with PHP	["Rob Allen (23060)"]	["php", "windows", "iis-7", "windows-authentication"]	Neal (561731)
+10000019	2012-04-03T19:26:51	[2012-04-03 19:30:25]	Are arrays in MongoDB documents always kept in order?	["Blacksad (820664)"]	["mongodb"]	Adam Monsen (156060)
+10000020	2012-04-03T19:26:51	[2012-04-04 16:00:38, 2014-07-06 09:00:37]	AJAX post to google spreadsheet	["Stuart Nelson (1227292)", "mhawksey (1027723)"]	["jquery", "google-apps-script"]	Stuart Nelson (1227292)
+10000023	2012-04-03T19:26:57	[2012-04-04 12:56:34]	Are these LAMP permissions secure?	["larsks (147356)"]	["linux", "apache", "security", "ubuntu", "permissions"]	Trent Scott (600873)
+10000024	2012-04-03T19:26:58	[2012-04-11 09:33:38]	Handlebars EACH iterator error	["joevallender (426171)"]	["javascript", "handlebars.js"]	CoryDorning (322551)
+10000030	2012-04-03T19:27:30	[]	Is there a way to set a MKMapView map to an alpha lower to 1 and its markers to 1?	[]	["ios", "mkmapview", "mkannotationview"]	annie (591510)
 
 -- !q04_13 --
-10000064	2012-04-03T19:30:55	[2012-04-04 11:23:51, 2013-06-12 05:37:25, 2015-12-10 18:50:08]	Is there a java library to bind XML (LOM) to XML+RDF?	['William Greenly (611714)', 'po5i (1303826)', 'Enayat (2500344)']	['java', 'xml', 'xslt', 'rdf']	po5i (1303826)
-10000126	2012-04-03T19:35:51	[2012-04-03 20:23:36]	Re-using Java generic collections in Scala without trait Object	['Didier Dupont (754787)']	['java', 'scala', 'generics', 'collections', 'trait']	Nikolaos (195489)
-10000149	2012-04-03T19:38:03	[2012-04-03 19:42:17, 2012-04-03 19:44:01, 2012-04-03 19:51:16, 2012-04-03 20:02:21, 2012-04-04 18:05:13, 2012-08-18 12:43:09]	Example of MVC in java/jdk	['hvgotcodes (305644)', 'tenorsax (1048330)', 'Ulises Layera (1056488)', 'user282172 (282172)', 'Alonso Dominguez (748883)', 'padman (1032875)']	['java', 'model-view-controller']	Martin Prakash (1311203)
-10000296	2012-04-03T19:49:51	[2012-04-03 19:55:44, 2012-04-03 20:11:35]	WriteInt-RandomAccessFile - java	['ControlAltDel (1291492)', 'Eugene Retunsky (871953)']	['java', 'random-access']	bachurim09 (438728)
-10000361	2012-04-03T19:53:59	[2012-04-03 19:58:44]	Java - TCP Server can't read from TCP Client	['Tudor (808486)']	['java', 'tcp']	newtonrd (1311275)
-10000365	2012-04-03T19:54:15	[2012-04-03 20:04:57, 2012-04-03 20:13:27, 2012-04-03 22:02:45, 2012-04-03 22:13:50]	Java android client communication with C# server	['Matthew (507793)', 'JMarsch (67038)', 'TommyN (636509)', 'Jon O (429108)']	['c#', 'android', 'client']	Ahmed (1185422)
-10000423	2012-04-03T19:58:27	[2012-04-03 20:39:00]	Console scripts execution from Java program	['Luca (1252169)']	['java', 'linux', 'bash']	glaz666 (59692)
-10000499	2012-04-03T20:03:29	[]	process hanging on java process builder start	[]	['java']	Ricardo Garza V. (1217187)
-10000501	2012-04-03T20:03:35	[2012-04-03 20:09:09]	Java - Connect to RDP server in Windows	['kevingreen (288915)']	['java', 'windows', 'remote-desktop', 'rdp', 'mstsc']	eoinzy (652410)
-10000850	2012-04-03T20:25:56	[2012-04-03 20:27:34, 2012-04-03 20:28:08, 2012-04-03 20:29:26, 2012-04-03 20:30:02, 2013-09-23 05:49:15]	Appending file results in overwrite (Java)	['ulmangt (1212363)', 'Jack Edmonds (61663)', 'Angelo Fuchs (881272)', 'ControlAltDel (1291492)', 'Prasad (2041986)']	['java', 'file', 'new-operator']	yawnobleix (1308355)
+10000064	2012-04-03T19:30:55	[2012-04-04 11:23:51, 2013-06-12 05:37:25, 2015-12-10 18:50:08]	Is there a java library to bind XML (LOM) to XML+RDF?	["William Greenly (611714)", "po5i (1303826)", "Enayat (2500344)"]	["java", "xml", "xslt", "rdf"]	po5i (1303826)
+10000126	2012-04-03T19:35:51	[2012-04-03 20:23:36]	Re-using Java generic collections in Scala without trait Object	["Didier Dupont (754787)"]	["java", "scala", "generics", "collections", "trait"]	Nikolaos (195489)
+10000149	2012-04-03T19:38:03	[2012-04-03 19:42:17, 2012-04-03 19:44:01, 2012-04-03 19:51:16, 2012-04-03 20:02:21, 2012-04-04 18:05:13, 2012-08-18 12:43:09]	Example of MVC in java/jdk	["hvgotcodes (305644)", "tenorsax (1048330)", "Ulises Layera (1056488)", "user282172 (282172)", "Alonso Dominguez (748883)", "padman (1032875)"]	["java", "model-view-controller"]	Martin Prakash (1311203)
+10000296	2012-04-03T19:49:51	[2012-04-03 19:55:44, 2012-04-03 20:11:35]	WriteInt-RandomAccessFile - java	["ControlAltDel (1291492)", "Eugene Retunsky (871953)"]	["java", "random-access"]	bachurim09 (438728)
+10000361	2012-04-03T19:53:59	[2012-04-03 19:58:44]	Java - TCP Server can't read from TCP Client	["Tudor (808486)"]	["java", "tcp"]	newtonrd (1311275)
+10000365	2012-04-03T19:54:15	[2012-04-03 20:04:57, 2012-04-03 20:13:27, 2012-04-03 22:02:45, 2012-04-03 22:13:50]	Java android client communication with C# server	["Matthew (507793)", "JMarsch (67038)", "TommyN (636509)", "Jon O (429108)"]	["c#", "android", "client"]	Ahmed (1185422)
+10000423	2012-04-03T19:58:27	[2012-04-03 20:39:00]	Console scripts execution from Java program	["Luca (1252169)"]	["java", "linux", "bash"]	glaz666 (59692)
+10000499	2012-04-03T20:03:29	[]	process hanging on java process builder start	[]	["java"]	Ricardo Garza V. (1217187)
+10000501	2012-04-03T20:03:35	[2012-04-03 20:09:09]	Java - Connect to RDP server in Windows	["kevingreen (288915)"]	["java", "windows", "remote-desktop", "rdp", "mstsc"]	eoinzy (652410)
+10000850	2012-04-03T20:25:56	[2012-04-03 20:27:34, 2012-04-03 20:28:08, 2012-04-03 20:29:26, 2012-04-03 20:30:02, 2013-09-23 05:49:15]	Appending file results in overwrite (Java)	["ulmangt (1212363)", "Jack Edmonds (61663)", "Angelo Fuchs (881272)", "ControlAltDel (1291492)", "Prasad (2041986)"]	["java", "file", "new-operator"]	yawnobleix (1308355)
 
diff --git a/regression-test/data/dynamic_table_p0/test_dytable_complex_data.out b/regression-test/data/dynamic_table_p0/test_dytable_complex_data.out
index 79cb94748f..aa4b9e9b17 100644
--- a/regression-test/data/dynamic_table_p0/test_dytable_complex_data.out
+++ b/regression-test/data/dynamic_table_p0/test_dytable_complex_data.out
@@ -1,67 +1,67 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !sql --
-2	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3313&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-3	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3403&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-4	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3406&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-5	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3409&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-6	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3411&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-7	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3413&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-8	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3407&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-9	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3415&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-10	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3419&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-11	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3420&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-12	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3423&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-13	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3424&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-14	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3435&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-15	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3438&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-16	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3436&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-17	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3437&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-18	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3440&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-19	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3450&buildTypeId=RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan, NULL]]
-20	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3446&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-21	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3451&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-22	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3453&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-23	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3456&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-24	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3457&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-25	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3459&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-26	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3460&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-27	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3461&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-28	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3462&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-29	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3458&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-30	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3464&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-31	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3467&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
+2	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3313&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+3	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3403&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+4	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3406&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+5	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3409&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+6	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3411&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+7	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3413&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+8	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3407&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+9	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3415&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+10	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3419&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+11	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3420&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+12	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3423&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+13	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3424&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+14	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3435&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+15	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3438&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+16	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3436&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+17	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3437&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+18	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3440&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+19	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3450&buildTypeId=RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan", NULL]]
+20	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3446&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+21	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3451&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+22	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3453&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+23	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3456&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+24	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3457&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+25	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3459&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+26	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3460&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+27	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3461&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+28	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3462&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+29	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3458&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+30	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3464&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+31	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3467&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
 
 -- !sql --
-2	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3313&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-3	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3403&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-4	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3406&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-5	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3409&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-6	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3411&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-7	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3413&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-8	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3407&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-9	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3415&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-10	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3419&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-11	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3420&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-12	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3423&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-13	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3424&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-14	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3435&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-15	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3438&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-16	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3436&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-17	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3437&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-18	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3440&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-19	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3450&buildTypeId=RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan, NULL]]
-20	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3446&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-21	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3451&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-22	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3453&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan, NULL]]
-23	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3456&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-24	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3457&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate, NULL]]
-25	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3459&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-26	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3460&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-27	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3461&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-28	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: SUCCESS\n, state: finished\n, project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3462&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate, NULL]]
-29	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n, U can click: , teamcity url \n, triggerman: zhanglei\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3458&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan, NULL]]
-30	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3464&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
-31	BUILD_FINISHED	post	[[text, text, text, text, a, text]]	[]	[[status: FAILURE\n, state: finished\n, project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n, U can click: , teamcity url \n, triggerman: chengyuxuan\n]]	[[NULL, NULL, NULL, NULL, http://152.136.199.195:8111/viewLog.html?buildId=3467&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate, NULL]]
+2	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3313&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+3	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3403&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+4	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3406&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+5	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3409&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+6	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3411&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+7	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3413&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+8	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3407&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+9	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3415&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+10	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3419&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+11	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3420&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+12	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3423&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+13	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3424&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+14	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3435&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+15	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3438&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+16	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3436&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+17	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3437&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+18	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3440&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+19	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3450&buildTypeId=RegressionDoris_DorisMaster_MasterVecAsanRegression_VecAsan", NULL]]
+20	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3446&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+21	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3451&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+22	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_SelectdbStable_AsanRegression_Asan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3453&buildTypeId=RegressionDoris_SelectdbStable_AsanRegression_Asan", NULL]]
+23	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3456&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+24	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3457&buildTypeId=RegressionDoris_Selectdb101_TestCompileMaster_CompileAndUpdate", NULL]]
+25	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3459&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+26	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3460&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+27	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3461&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+28	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: SUCCESS\n", "state: finished\n", "project: RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3462&buildTypeId=RegressionDoris_DorisMaster_MasterTestCompile_CompileAndUpdate", NULL]]
+29	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan\n", "U can click: ", "teamcity url \n", "triggerman: zhanglei\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3458&buildTypeId=RegressionDoris_Selectdb101_MasterVecAsanRegression_VecAsan", NULL]]
+30	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3464&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
+31	BUILD_FINISHED	post	[["text", "text", "text", "text", "a", "text"]]	[]	[["status: FAILURE\n", "state: finished\n", "project: RegressionDoris_TestCompileMaster_CompileAndUpdate\n", "U can click: ", "teamcity url \n", "triggerman: chengyuxuan\n"]]	[[NULL, NULL, NULL, NULL, "http://152.136.199.195:8111/viewLog.html?buildId=3467&buildTypeId=RegressionDoris_TestCompileMaster_CompileAndUpdate", NULL]]
 
 -- !sql --
 []
diff --git a/regression-test/data/export/test_array_export.out b/regression-test/data/export/test_array_export.out
index 922de66ec9..8ed098aa38 100644
--- a/regression-test/data/export/test_array_export.out
+++ b/regression-test/data/export/test_array_export.out
@@ -1,5 +1,5 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !select_default --
-1	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-08-15 12:30:00]	[0.331111, 0.672222]	[3.141592, 0.878787]	[4.222200000, 5.555500000, 6.670000000]
-2	[4, 5, 6]	[32767, 32768, 32769]	[65534, 65535, 65536]	['d', 'e', 'f']	['good', 'luck']	[2022-07-13]	[2022-08-15 15:59:59]	[0.333336, 0.666677]	[3.141592, 0.878787]	[4.222220000, 5.555555500, 6.666677700]
+1	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-08-15 12:30:00]	[0.331111, 0.672222]	[3.141592, 0.878787]	[4.222200000, 5.555500000, 6.670000000]
+2	[4, 5, 6]	[32767, 32768, 32769]	[65534, 65535, 65536]	["d", "e", "f"]	["good", "luck"]	[2022-07-13]	[2022-08-15 15:59:59]	[0.333336, 0.666677]	[3.141592, 0.878787]	[4.222220000, 5.555555500, 6.666677700]
 
diff --git a/regression-test/data/export/test_map_export.out b/regression-test/data/export/test_map_export.out
index 9b46ae9dfb..c83f45e364 100644
--- a/regression-test/data/export/test_map_export.out
+++ b/regression-test/data/export/test_map_export.out
@@ -3,8 +3,8 @@
 1	\N
 2	{}
 3	{"  33,amory  ":2, " bet ":20, " cler ":26}
-4	{"k3":23, null:20, "k4":null}
-5	{null:null}
+4	{"k3":23, NULL:20, "k4":NULL}
+5	{NULL:NULL}
 
 -- !select_count --
 4
diff --git a/regression-test/data/insert_p0/test_struct_insert.out b/regression-test/data/insert_p0/test_struct_insert.out
index b0bf805c04..ba72b1c414 100644
Binary files a/regression-test/data/insert_p0/test_struct_insert.out and b/regression-test/data/insert_p0/test_struct_insert.out differ
diff --git a/regression-test/data/inverted_index_p0/test_array_index.out b/regression-test/data/inverted_index_p0/test_array_index.out
index 8a858f5611..4fd98fbd3d 100644
--- a/regression-test/data/inverted_index_p0/test_array_index.out
+++ b/regression-test/data/inverted_index_p0/test_array_index.out
@@ -1,25 +1,25 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !sql --
-1	[10, 20, 30]	['i', 'love', 'china']
+1	[10, 20, 30]	["i", "love", "china"]
 
 -- !sql --
-1	[10, 20, 30]	['i', 'love', 'china']
-2	[20, 30, 40]	['i', 'love', 'north korea']
+1	[10, 20, 30]	["i", "love", "china"]
+2	[20, 30, 40]	["i", "love", "north korea"]
 
 -- !sql --
-2	[20, 30, 40]	['i', 'love', 'north korea']
+2	[20, 30, 40]	["i", "love", "north korea"]
 
 -- !sql --
-2	[20, 30, 40]	['i', 'love', 'north korea']
+2	[20, 30, 40]	["i", "love", "north korea"]
 
 -- !sql --
-2	[20, 30, 40]	['i', 'love', 'north korea']
+2	[20, 30, 40]	["i", "love", "north korea"]
 3	[30, 40, 50]	\N
 4	[40, 50, 60]	\N
 
 -- !sql --
-1	[10, 20, 30]	['i', 'love', 'china']
-2	[20, 30, 40]	['i', 'love', 'north korea']
+1	[10, 20, 30]	["i", "love", "china"]
+2	[20, 30, 40]	["i", "love", "north korea"]
 3	[30, 40, 50]	\N
 4	[40, 50, 60]	\N
 
@@ -28,24 +28,24 @@
 4	[40, 50, 60]	\N
 
 -- !sql --
-1	[10, 20, 30]	['i', 'love', 'china']
-2	[20, 30, 40]	['i', 'love', 'north korea']
+1	[10, 20, 30]	["i", "love", "china"]
+2	[20, 30, 40]	["i", "love", "north korea"]
 3	[30, 40, 50]	\N
 
 -- !sql --
-1	[10, 20, 30]	['i', 'love', 'china']
+1	[10, 20, 30]	["i", "love", "china"]
 
 -- !sql --
-1	[10, 20, 30]	['i', 'love', 'china']
-2	[20, 30, 40]	['i', 'love', 'north korea']
+1	[10, 20, 30]	["i", "love", "china"]
+2	[20, 30, 40]	["i", "love", "north korea"]
 
 -- !sql --
-1	[10, 20, 30]	['i', 'love', 'china']
-2	[20, 30, 40]	['i', 'love', 'north korea']
+1	[10, 20, 30]	["i", "love", "china"]
+2	[20, 30, 40]	["i", "love", "north korea"]
 3	[30, 40, 50]	\N
 
 -- !sql --
-2	[20, 30, 40]	['i', 'love', 'north korea']
+2	[20, 30, 40]	["i", "love", "north korea"]
 3	[30, 40, 50]	\N
 4	[40, 50, 60]	\N
 
diff --git a/regression-test/data/inverted_index_p0/test_index_key_match_select.out b/regression-test/data/inverted_index_p0/test_index_key_match_select.out
index c968dd49cd..ea2adba36e 100644
--- a/regression-test/data/inverted_index_p0/test_index_key_match_select.out
+++ b/regression-test/data/inverted_index_p0/test_index_key_match_select.out
@@ -1,10 +1,10 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !sql --
-u1	['u2', 'u3']
-u2	['u1', 'u3', 'u4']
+u1	["u2", "u3"]
+u2	["u1", "u3", "u4"]
 
 -- !sql --
-u1	['u2', 'u3']
-u2	['u1', 'u3', 'u4']
-u3	['u1']
+u1	["u2", "u3"]
+u2	["u1", "u3", "u4"]
+u3	["u1"]
 
diff --git a/regression-test/data/javaudf_p0/test_javaudaf_mysum_array.out b/regression-test/data/javaudf_p0/test_javaudaf_mysum_array.out
index e33f21c6a6..d677cc9804 100644
--- a/regression-test/data/javaudf_p0/test_javaudaf_mysum_array.out
+++ b/regression-test/data/javaudf_p0/test_javaudaf_mysum_array.out
@@ -53,19 +53,19 @@
 [9, 9]
 
 -- !select_8 --
-['poiuytre1abcdefg', 'poiuytre2abcdefg', 'poiuytre3abcdefg', 'poiuytre4abcdefg', 'poiuytre5abcdefg', 'poiuytre6abcdefg', 'poiuytre7abcdefg', 'poiuytre8abcdefg', 'poiuytre9abcdefg']
+["poiuytre1abcdefg", "poiuytre2abcdefg", "poiuytre3abcdefg", "poiuytre4abcdefg", "poiuytre5abcdefg", "poiuytre6abcdefg", "poiuytre7abcdefg", "poiuytre8abcdefg", "poiuytre9abcdefg"]
 
 -- !select_9 --
-['poiuytre3abcdefg', 'poiuytre6abcdefg']	0
-['poiuytre1abcdefg', 'poiuytre4abcdefg', 'poiuytre7abcdefg']	1
-['poiuytre2abcdefg', 'poiuytre5abcdefg', 'poiuytre8abcdefg']	2
-['poiuytre9abcdefg']	9
+["poiuytre3abcdefg", "poiuytre6abcdefg"]	0
+["poiuytre1abcdefg", "poiuytre4abcdefg", "poiuytre7abcdefg"]	1
+["poiuytre2abcdefg", "poiuytre5abcdefg", "poiuytre8abcdefg"]	2
+["poiuytre9abcdefg"]	9
 
 -- !select_10 --
-['0', '0', 'poiuytre3abcdefg', 'poiuytre6abcdefg']	0
-['1', '1', '1', 'poiuytre1abcdefg', 'poiuytre4abcdefg', 'poiuytre7abcdefg']	1
-['2', '2', '2', 'poiuytre2abcdefg', 'poiuytre5abcdefg', 'poiuytre8abcdefg']	2
-['9', 'poiuytre9abcdefg']	9
+["0", "0", "poiuytre3abcdefg", "poiuytre6abcdefg"]	0
+["1", "1", "1", "poiuytre1abcdefg", "poiuytre4abcdefg", "poiuytre7abcdefg"]	1
+["2", "2", "2", "poiuytre2abcdefg", "poiuytre5abcdefg", "poiuytre8abcdefg"]	2
+["9", "poiuytre9abcdefg"]	9
 
 -- !select_11 --
 []
diff --git a/regression-test/data/javaudf_p0/test_javaudf_array.out b/regression-test/data/javaudf_p0/test_javaudf_array.out
index ad5bda0b92..297df086e5 100644
--- a/regression-test/data/javaudf_p0/test_javaudf_array.out
+++ b/regression-test/data/javaudf_p0/test_javaudf_array.out
@@ -54,28 +54,28 @@
 \N
 
 -- !select_6 --
-['a1b']	2
-['a2b']	4
-['a3b']	6
-['a4b']	8
-['a5b']	10
-['a6b']	12
-['a7b']	14
-['a8b']	16
-['a9b']	18
-['a10b']	20
+["a1b"]	2
+["a2b"]	4
+["a3b"]	6
+["a4b"]	8
+["a5b"]	10
+["a6b"]	12
+["a7b"]	14
+["a8b"]	16
+["a9b"]	18
+["a10b"]	20
 
 -- !select_7 --
-['a1b1']	2
-['a2b2']	4
-['a3b3']	6
-['a4b4']	8
-['a5b5']	10
-['a6b6']	12
-['a7b7']	14
-['a8b8']	16
-['a9b9']	18
-['a10b10']	20
+["a1b1"]	2
+["a2b2"]	4
+["a3b3"]	6
+["a4b4"]	8
+["a5b5"]	10
+["a6b6"]	12
+["a7b7"]	14
+["a8b8"]	16
+["a9b9"]	18
+["a10b10"]	20
 
 -- !select_8 --
 \N
diff --git a/regression-test/data/load/insert/test_array_insert.out b/regression-test/data/load/insert/test_array_insert.out
index b7dd52713f..10d455e25e 100644
--- a/regression-test/data/load/insert/test_array_insert.out
+++ b/regression-test/data/load/insert/test_array_insert.out
@@ -4,18 +4,18 @@
 100	[9223372036854775808]
 
 -- !select --
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]	[1, 0]	['happy life']
-200	[2]	[32768]	[65535]	['b']	['hello']	[2022-07-13]	[2022-07-13 12:30:00]	[0.67]	[3.1415926]	[6.67]	[0]	['happy life']
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]	[1, 0]	["happy life"]
+200	[2]	[32768]	[65535]	["b"]	["hello"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.67]	[3.1415926]	[6.670000000]	[0]	["happy life"]
 
 -- !select --
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]	[1, 0]	['happy life']
-200	[2]	[32768]	[65535]	['b']	['hello']	[2022-07-13]	[2022-07-13 12:30:00]	[0.67]	[3.1415926]	[6.67]	[0]	['happy life']
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]	[1, 0]	["happy life"]
+200	[2]	[32768]	[65535]	["b"]	["hello"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.67]	[3.1415926]	[6.670000000]	[0]	["happy life"]
 
 -- !select --
 2.0	32768.0	65535.0	0.5000000149011612	2.010190239
 2.0	32768.0	65535.0	0.6700000166893005	3.1415926
 
 -- !select --
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]	[1, 0]	['happy life']
-200	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]	[1, 0, 1, 0]	['happy life']
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]	[1, 0]	["happy life"]
+200	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]	[1, 0, 1, 0]	["happy life"]
 
diff --git a/regression-test/data/load/insert/test_array_insert_into_select.out b/regression-test/data/load/insert/test_array_insert_into_select.out
index 594d8881e3..f25c5b78b7 100644
--- a/regression-test/data/load/insert/test_array_insert_into_select.out
+++ b/regression-test/data/load/insert/test_array_insert_into_select.out
@@ -10,7 +10,7 @@
 
 -- !select_array --
 0	\N
-1	['{"a":"1","b":"2","c":"3",}', '{"a":"1","b":"2"}']
+1	["{"a":"1","b":"2","c":"3",}", "{"a":"1","b":"2"}"]
 2	\N
 3	[]
 
diff --git a/regression-test/data/load/insert/test_array_string_insert.out b/regression-test/data/load/insert/test_array_string_insert.out
index 4d5875f533..ff1ec06133 100644
--- a/regression-test/data/load/insert/test_array_string_insert.out
+++ b/regression-test/data/load/insert/test_array_string_insert.out
@@ -1,9 +1,9 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !select --
-4	['12345', '123']	['4']	\N
-5	\N	[NULL, '4']	\N
-6	\N	['4']	[[123], [222]]
-7	\N	['4']	[[12345, NULL], [222]]
+4	["12345", "123"]	["4"]	\N
+5	\N	[NULL, "4"]	\N
+6	\N	["4"]	[["123"], ["222"]]
+7	\N	["4"]	[["12345", NULL], ["222"]]
 
 -- !select_count --
 1	4	2
diff --git a/regression-test/data/load_p0/broker_load/test_array_load.out b/regression-test/data/load_p0/broker_load/test_array_load.out
index 89b7f6c012..058a0b69da 100644
--- a/regression-test/data/load_p0/broker_load/test_array_load.out
+++ b/regression-test/data/load_p0/broker_load/test_array_load.out
@@ -1,68 +1,68 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !select --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['happy', 'birthday']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["happy", "birthday"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]
 
 -- !select_count --
 6	6
 
 -- !select --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['happy', 'birthday']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-6	[NULL, NULL, 0, 0]	[32767, 32768, NULL]	[65534, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello,,,', 'world][]']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[0, 0]
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["happy", "birthday"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+6	[NULL, NULL, 0, 0]	[32767, 32768, NULL]	[65534, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello,,,", "world][]"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[0.000000000, 0.000000000]
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]
 
 -- !select_count --
 7	7
 
 -- !select --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1, NULL, 1.3]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1.000000000, NULL, 1.300000000]
 3	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 4	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 5	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]
 
 -- !select_count --
 6	3
 
 -- !select --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['happy', 'birthday']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["happy", "birthday"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]
 
 -- !select_count --
 6	6
 
 -- !select --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['happy', 'birthday']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-6	[NULL, NULL, 0, 0]	[32767, 32768, NULL]	[65534, NULL, 65536]	['a', 'b', 'c', 'd', 'e']	['hello,,,', 'world][]']	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[0, 0]
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[6, 7, 8, 9, 10]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.333333, 0.676767]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+3	[]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["happy", "birthday"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+4	[NULL]	[32767, 32768, 32769]	[NULL, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+5	[NULL, NULL]	[32767, 32768, NULL]	[65534, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+6	[NULL, NULL, 0, 0]	[32767, 32768, NULL]	[65534, NULL, 65536]	["a", "b", "c", "d", "e"]	["hello,,,", "world][]"]	[1991-01-01]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[0.000000000, 0.000000000]
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]
 
 -- !select_count --
 7	7
 
 -- !select --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1, NULL, 1.3]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1.000000000, NULL, 1.300000000]
 3	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 4	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 5	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
-100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c']	['hello', 'world']	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4, 5.5, 6.67]
+100	[1, 2, 3]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c"]	["hello", "world"]	[2022-07-13]	[2022-07-13 12:30:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[4.000000000, 5.500000000, 6.670000000]
 
 -- !select_count --
 6	3
diff --git a/regression-test/data/load_p0/stream_load/test_map_load_and_function.out b/regression-test/data/load_p0/stream_load/test_map_load_and_function.out
index 17cc5156be..c493af4441 100644
--- a/regression-test/data/load_p0/stream_load/test_map_load_and_function.out
+++ b/regression-test/data/load_p0/stream_load/test_map_load_and_function.out
@@ -11,10 +11,10 @@
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}
 10	{}
 11	\N
-12	{"k3":23, null:20, "k4":null}
+12	{"k3":23, NULL:20, "k4":NULL}
 13	{"null":1}
 15	{"":2, "k2":0}
-16	{null:null}
+16	{NULL:NULL}
 
 -- !select_m --
 1	\N
@@ -47,10 +47,10 @@
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}
 10	{}
 11	\N
-12	{"k3":23, null:20, "k4":null}
+12	{"k3":23, NULL:20, "k4":NULL}
 13	{"null":1}
 15	{"":2, "k2":0}
-16	{null:null}
+16	{NULL:NULL}
 17	\N
 18	{"k1":100, "k2":130}
 
@@ -123,10 +123,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	100
 
@@ -142,10 +142,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	0
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	130
 
@@ -161,10 +161,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -180,10 +180,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -199,10 +199,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -218,10 +218,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -237,10 +237,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -256,10 +256,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -275,10 +275,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	2
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -294,10 +294,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	90
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -313,10 +313,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	1
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -332,10 +332,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	2
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -351,10 +351,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	20
+12	{"k3":23, NULL:20, "k4":NULL}	20
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -370,10 +370,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	\N
 10	{}	\N
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	\N
+12	{"k3":23, NULL:20, "k4":NULL}	\N
 13	{"null":1}	\N
 15	{"":2, "k2":0}	\N
-16	{null:null}	\N
+16	{NULL:NULL}	\N
 17	\N	\N
 18	{"k1":100, "k2":130}	\N
 
@@ -392,10 +392,10 @@ k22
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	3
 10	{}	0
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	3
+12	{"k3":23, NULL:20, "k4":NULL}	3
 13	{"null":1}	1
 15	{"":2, "k2":0}	2
-16	{null:null}	1
+16	{NULL:NULL}	1
 17	\N	\N
 18	{"k1":100, "k2":130}	2
 
@@ -426,10 +426,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	true
 
@@ -445,10 +445,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	true
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	true
 
@@ -464,10 +464,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -483,10 +483,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -502,10 +502,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -521,10 +521,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -540,10 +540,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -559,10 +559,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -578,10 +578,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	true
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -597,10 +597,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	true
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -616,10 +616,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	true
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -635,10 +635,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	true
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -654,10 +654,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	true
+12	{"k3":23, NULL:20, "k4":NULL}	true
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	true
+16	{NULL:NULL}	true
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -673,10 +673,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -704,10 +704,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	true
+12	{"k3":23, NULL:20, "k4":NULL}	true
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -723,10 +723,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	true
+12	{"k3":23, NULL:20, "k4":NULL}	true
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -742,10 +742,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -761,10 +761,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -780,10 +780,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -799,10 +799,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -818,10 +818,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -837,10 +837,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	true
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -856,10 +856,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	true
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	true
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -875,10 +875,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -894,10 +894,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	true
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -913,10 +913,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	true
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -932,10 +932,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	true
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -951,10 +951,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	true
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	true
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -970,10 +970,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	true
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -989,10 +989,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	false
+12	{"k3":23, NULL:20, "k4":NULL}	false
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	false
+16	{NULL:NULL}	false
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
@@ -1008,34 +1008,34 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	false
 10	{}	false
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	true
+12	{"k3":23, NULL:20, "k4":NULL}	true
 13	{"null":1}	false
 15	{"":2, "k2":0}	false
-16	{null:null}	true
+16	{NULL:NULL}	true
 17	\N	\N
 18	{"k1":100, "k2":130}	false
 
 -- !select_map_keys1 --
-['k11', 'k22']
+["k11", "k22"]
 
 -- !select_map_keys2 --
 1	\N	\N
-2	{"  11amory  ":23, "beat":20, " clever ":66}	['  11amory  ', 'beat', ' clever ']
-3	{"k1":31, "k2":300}	['k1', 'k2']
+2	{"  11amory  ":23, "beat":20, " clever ":66}	["  11amory  ", "beat", " clever "]
+3	{"k1":31, "k2":300}	["k1", "k2"]
 4	{}	[]
 5	\N	\N
-6	{"k1":41, "k2":400}	['k1', 'k2']
-7	{"  33,amory  ":2, " bet ":20, " cler ":26}	['  33,amory  ', ' bet ', ' cler ']
+6	{"k1":41, "k2":400}	["k1", "k2"]
+7	{"  33,amory  ":2, " bet ":20, " cler ":26}	["  33,amory  ", " bet ", " cler "]
 8	{}	[]
-9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	['  1,amy  ', ' k2 ', ' k7 ']
+9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	["  1,amy  ", " k2 ", " k7 "]
 10	{}	[]
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	['k3', NULL, 'k4']
-13	{"null":1}	['null']
-15	{"":2, "k2":0}	['', 'k2']
-16	{null:null}	[NULL]
+12	{"k3":23, NULL:20, "k4":NULL}	["k3", NULL, "k4"]
+13	{"null":1}	["null"]
+15	{"":2, "k2":0}	["", "k2"]
+16	{NULL:NULL}	[NULL]
 17	\N	\N
-18	{"k1":100, "k2":130}	['k1', 'k2']
+18	{"k1":100, "k2":130}	["k1", "k2"]
 
 -- !select_map_values1 --
 [1000, 2000]
@@ -1052,10 +1052,10 @@ false
 9	{"  1,amy  ":2, " k2 ":90, " k7 ":33}	[2, 90, 33]
 10	{}	[]
 11	\N	\N
-12	{"k3":23, null:20, "k4":null}	[23, 20, NULL]
+12	{"k3":23, NULL:20, "k4":NULL}	[23, 20, NULL]
 13	{"null":1}	[1]
 15	{"":2, "k2":0}	[2, 0]
-16	{null:null}	[NULL]
+16	{NULL:NULL}	[NULL]
 17	\N	\N
 18	{"k1":100, "k2":130}	[100, 130]
 
diff --git a/regression-test/data/load_p0/stream_load/test_parquet_orc_case.out b/regression-test/data/load_p0/stream_load/test_parquet_orc_case.out
index adddd9e995..958b975612 100644
--- a/regression-test/data/load_p0/stream_load/test_parquet_orc_case.out
+++ b/regression-test/data/load_p0/stream_load/test_parquet_orc_case.out
@@ -408,7 +408,7 @@
 9186659792231785281	1	Настройствоваться частных (б/у) автор о продукции; развития детьми - Грузов	1	2014-03-23T09:48:08	2014-03-23	1785	1341248658	6366e773993d35514d6b846f79b34292                  	183	626923241082458450	1	56	4	http://9111147832977565.html?cat=420801;label=perioda	http://go.mail.yandsearch	coccoc.com	yandex.ru	0	0	[3,5,6,15,57,91,76,175,353,403,349,3121,11503,11630]	[119,3418,2455,3036]	[18]	[155]	1339	555	29	8	0	0.	0	0	44	73d7	1	1	0	0			3500889	3	2		0	0	1997	548	117	201 [...]
 
 -- !sql_array_parquet --
--127	[0, 1, 1, 0]	[-127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, [...]
--126	[0, 1, 1, 0]	[-126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, [...]
--125	[0, 1, 1, 0]	[-125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, [...]
+-127	[0, 1, 1, 0]	[-127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, [...]
+-126	[0, 1, 1, 0]	[-126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, [...]
+-125	[0, 1, 1, 0]	[-125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, [...]
 
diff --git a/regression-test/data/load_p0/stream_load/test_stream_load.out b/regression-test/data/load_p0/stream_load/test_stream_load.out
index 3e4ccd3fc5..8150d41f72 100644
--- a/regression-test/data/load_p0/stream_load/test_stream_load.out
+++ b/regression-test/data/load_p0/stream_load/test_stream_load.out
@@ -4,7 +4,7 @@
 -2	-50	\N	1	\N	\N	\N	\N	\N	\N	\N	\N	j	\N
 
 -- !sql1 --
-2019	9	9	9	7.700	a	2019-09-09	1970-01-01T08:33:39	k7	9.0	9.0
+2019	9	9	9	7.700000000	a	2019-09-09	1970-01-01T08:33:39	k7	9.0	9.0
 
 -- !all11 --
 2500
@@ -52,42 +52,42 @@
 1
 
 -- !all101 --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1, NULL, 1.3]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1.000000000, NULL, 1.300000000]
 3	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 4	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 5	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 
 -- !all102 --
-1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1, 1.2, 1.3]
-2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	['a', 'b', 'c', 'd', 'e']	['hello', 'world']	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1, NULL, 1.3]
+1	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	[1991-01-01 00:00:00]	[0.33, 0.67]	[3.1415926, 0.878787878]	[1.000000000, 1.200000000, 1.300000000]
+2	[1, 2, 3, 4, 5]	[32767, 32768, 32769]	[65534, 65535, 65536]	["a", "b", "c", "d", "e"]	["hello", "world"]	[1991-01-01, 1992-02-02, 1993-03-03]	\N	\N	\N	[1.000000000, NULL, 1.300000000]
 3	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N
 4	[]	[]	[]	[]	[]	[]	[]	[]	[]	[]
 5	[NULL]	[NULL]	[NULL]	[NULL]	[NULL]	[NULL]	[NULL]	[NULL]	[NULL]	[NULL]
-6	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, 'null']	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL, NULL, NULL, NULL, NULL]
+6	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, "null"]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL, NULL, NULL, NULL, NULL]
 6	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL]	[NULL, NULL, NULL, NULL, NULL, NULL]
 7	[1, 2, 3, 4, 5]	\N	\N	\N	\N	\N	\N	\N	\N	\N
 8	[1, 2, 3, 4, 5]	\N	\N	\N	\N	\N	[NULL]	\N	[NULL]	\N
 
 -- !all111 --
-1	{1, 100, 100000, 'a', 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
-2	{1, 100, 100000, 'a', 'doris', 2023-02-26, NULL, NULL, NULL, 1.1}
+1	{1, 100, 100000, "a", "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
+2	{1, 100, 100000, "a", "doris", 2023-02-26, NULL, NULL, NULL, 1.100000000}
 3	\N
 4	\N
 5	\N
 
 -- !all112 --
-1	{1, 100, 100000, 'a', 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
-2	{1, 100, 100000, 'a', 'doris', 2023-02-26, NULL, NULL, NULL, 1.1}
-3	{1, 100, 100000, 'a', 'doris', 2023-02-26, NULL, NULL, NULL, 1.1}
-4	{1, 100, 100000, 'a', 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
-5	{1, 100, 100000, 'a', 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
-6	{1, 100, 100000, 'a', 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
-7	{1, 100, 100000, 'a', 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
-8	{1, NULL, NULL, NULL, 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
+1	{1, 100, 100000, "a", "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
+2	{1, 100, 100000, "a", "doris", 2023-02-26, NULL, NULL, NULL, 1.100000000}
+3	{1, 100, 100000, "a", "doris", 2023-02-26, NULL, NULL, NULL, 1.100000000}
+4	{1, 100, 100000, "a", "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
+5	{1, 100, 100000, "a", "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
+6	{1, 100, 100000, "a", "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
+7	{1, 100, 100000, "a", "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
+8	{1, NULL, NULL, NULL, "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
 9	{NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
-10	{1, 100, 100000, 'a', 'doris', 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.1}
-11	{1, 100, 100000, 'a', 'doris', 2023-02-26, NULL, NULL, NULL, 1.1}
+10	{1, 100, 100000, "a", "doris", 2023-02-26, 2023-02-26 17:58:00, 1.01, 3.1415926, 1.100000000}
+11	{1, 100, 100000, "a", "doris", 2023-02-26, NULL, NULL, NULL, 1.100000000}
 12	{NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
 13	\N
 
diff --git a/regression-test/data/point_query_p0/test_point_query.out b/regression-test/data/point_query_p0/test_point_query.out
index 0dd6003cfb..8f7e48f0c4 100644
--- a/regression-test/data/point_query_p0/test_point_query.out
+++ b/regression-test/data/point_query_p0/test_point_query.out
@@ -1,27 +1,27 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !point_select --
-1231	119291.110000000	ddd	laooq	\N	2020-01-01T12:36:38	\N	1022-01-01	\N	1.111	\N	[119181.111100000, 819019.119100000, NULL]
+1231	119291.110000000	ddd	laooq	\N	2020-01-01 12:36:38	\N	1022-01-01	\N	1.111	\N	[119181.111100000, 819019.119100000, NULL]
 
 -- !point_select --
-1231	119291.110000000	ddd	laooq	\N	2020-01-01T12:36:38	\N	1022-01-01	\N	1.111	\N	[119181.111100000, 819019.119100000, NULL]
+1231	119291.110000000	ddd	laooq	\N	2020-01-01 12:36:38	\N	1022-01-01	\N	1.111	\N	[119181.111100000, 819019.119100000, NULL]
 
 -- !point_select --
-1237	120939.111300000	a    ddd	laooq	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	90696620686827832.374	[1.100000000, 2.200000000, 3.300000000, 4.400000000, 5.500000000]	[]
+1237	120939.111300000	a    ddd	laooq	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	90696620686827832.374	[1.100000000, 2.200000000, 3.300000000, 4.400000000, 5.500000000]	[]
 
 -- !point_select --
-1232	12222.991211350	xxx	laooq	2023-01-02	2020-01-01T12:36:38	522.762	2022-01-01	true	212.111	\N	\N
+1232	12222.991211350	xxx	laooq	2023-01-02	2020-01-01 12:36:38	522.762	2022-01-01	true	212.111	\N	\N
 
 -- !point_select --
-251	120939.111300000	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	laooq	2030-01-02	2020-01-01T12:36:38	251.0	7022-01-01	true	90696620686827832.374	[11111.000000000]	[]
+251	120939.111300000	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	laooq	2030-01-02	2020-01-01 12:36:38	251.0	7022-01-01	true	90696620686827832.374	[11111.000000000]	[]
 
 -- !point_select --
-252	120939.111300000	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	laooq	2030-01-02	2020-01-01T12:36:38	252.0	7022-01-01	false	90696620686827832.374	\N	[0.000000000]
+252	120939.111300000	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	laooq	2030-01-02	2020-01-01 12:36:38	252.0	7022-01-01	false	90696620686827832.374	\N	[0.000000000]
 
 -- !point_select --
-298	120939.111300000	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	laooq	2030-01-02	2020-01-01T12:36:38	298.0	7022-01-01	true	90696620686827832.374	[]	[]
+298	120939.111300000	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	laooq	2030-01-02	2020-01-01 12:36:38	298.0	7022-01-01	true	90696620686827832.374	[]	[]
 
 -- !point_select --
-1235	991129292901.111380000	dd	\N	2120-01-02	2020-01-01T12:36:38	652.692	5022-01-01	false	90696620686827832.374	[119181.111100000]	['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa']
+1235	991129292901.111380000	dd	\N	2120-01-02	2020-01-01 12:36:38	652.692	5022-01-01	false	90696620686827832.374	[119181.111100000]	["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
 
 -- !point_select --
 646464	6C616F6F71
@@ -33,31 +33,31 @@
 646464	6C616F6F71
 
 -- !point_select --
-1235	120939.111300000	a    ddd	laooq	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	true	1.111	[119291.192910000]	['111', '222', '333']	1
+1235	120939.111300000	a    ddd	laooq	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	true	1.111	[119291.192910000]	["111", "222", "333"]	1
 
 -- !point_select --
-1235	120939.111300000	a    ddd	laooq	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	true	1.111	[119291.192910000]	['111', '222', '333']	1
+1235	120939.111300000	a    ddd	laooq	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	true	1.111	[119291.192910000]	["111", "222", "333"]	1
 
 -- !point_select --
-1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	['111', '222', '333']	2
+1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	["111", "222", "333"]	2
 
 -- !point_select --
-1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	['111', '222', '333']	2
+1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	["111", "222", "333"]	2
 
 -- !point_select --
-1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	['111', '222', '333']	2
+1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	["111", "222", "333"]	2
 
 -- !point_select --
-1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	\N	5630	0
+1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	\N	5630	0
 
 -- !point_select --
-1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	\N	5630	0
+1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	\N	5630	0
 
 -- !point_select --
-1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	['111', '222', '333']	2
+1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	["111", "222", "333"]	2
 
 -- !point_select --
-1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01T12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	['111', '222', '333']	2
+1235	120939.111300000	a    ddd	xxxxxx	2030-01-02	2020-01-01 12:36:38	22.822	7022-01-01	false	1929111.111	[119291.192910000]	["111", "222", "333"]	2
 
 -- !sql --
 1231	119291.110000000	ddd	laooq	\N	2020-01-01T12:36:38	\N	1022-01-01	\N	1.111	[119181.111100000, 819019.119100000, NULL]	\N	\N
diff --git a/regression-test/data/query_p0/aggregate/aggregate.out b/regression-test/data/query_p0/aggregate/aggregate.out
index ebd92dcb60..17b36944cf 100644
--- a/regression-test/data/query_p0/aggregate/aggregate.out
+++ b/regression-test/data/query_p0/aggregate/aggregate.out
@@ -111,7 +111,7 @@ TESTING	AGAIN
 26988
 
 -- !aggregate32 --
-['sample', 'again', 'Sample']
+["sample", "again", "Sample"]
 
 -- !aggregate33 --
 65.73903964620426
diff --git a/regression-test/data/query_p0/aggregate/aggregate_group_by_metric_type.out b/regression-test/data/query_p0/aggregate/aggregate_group_by_metric_type.out
index d9f26a0fa7..32cdb5a79e 100644
Binary files a/regression-test/data/query_p0/aggregate/aggregate_group_by_metric_type.out and b/regression-test/data/query_p0/aggregate/aggregate_group_by_metric_type.out differ
diff --git a/regression-test/data/query_p0/aggregate/datetype.csv b/regression-test/data/query_p0/aggregate/datetype.csv
index 402d5cca43..39526be45a 100644
--- a/regression-test/data/query_p0/aggregate/datetype.csv
+++ b/regression-test/data/query_p0/aggregate/datetype.csv
@@ -1,16 +1,16 @@
-12|12.25|String1|1999-01-08|1999-01-08 02:05:06|1999-01-08|1999-01-08 02:05:06.111111|1999-01-08 02:05:06.111111|1999-01-08 02:05:06.111111|TRUE|123.22|12345678901234567890.0123456789
-25|55.52|test|1952-01-05|1989-01-08 04:05:06|1952-01-05|1989-01-08 04:05:06.111111|1989-01-08 04:05:06.111111|1989-01-08 04:05:06.111111|FALSE|321.21|-12345678901234567890.0123456789
-964|0.245|Again|1936-02-08|2005-01-09 04:05:06|1936-02-08|2005-01-09 04:05:06.111111|2005-01-09 04:05:06.111111|2005-01-09 04:05:06.111111|FALSE|333.82|98765432109876543210.9876543210
-100|12.25|testing|1949-07-08|2002-01-07 01:05:06|1949-07-08|2002-01-07 01:05:06.111111|2002-01-07 01:05:06.111111|2002-01-07 01:05:06.111111|TRUE|-393.22|-98765432109876543210.9876543210
+12|12.25|String1|1999-01-08|1999-01-08 02:05:06|1999-01-08|1999-01-08 02:05:06.111111|1999-01-08 02:05:06.111111|1999-01-08 02:05:06.111111|TRUE|123.22|123456789012345678.012345678
+25|55.52|test|1952-01-05|1989-01-08 04:05:06|1952-01-05|1989-01-08 04:05:06.111111|1989-01-08 04:05:06.111111|1989-01-08 04:05:06.111111|FALSE|321.21|-123456789012345678.012345678
+964|0.245|Again|1936-02-08|2005-01-09 04:05:06|1936-02-08|2005-01-09 04:05:06.111111|2005-01-09 04:05:06.111111|2005-01-09 04:05:06.111111|FALSE|333.82|65432109876543210.9876543210
+100|12.25|testing|1949-07-08|2002-01-07 01:05:06|1949-07-08|2002-01-07 01:05:06.111111|2002-01-07 01:05:06.111111|2002-01-07 01:05:06.111111|TRUE|-393.22|-65432109876543210.9876543210
 100|99.8777|AGAIN|1987-04-09|2010-01-02 04:03:06|1987-04-09|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|000.00|00000000000000000000.0000000000
 5252|12.25|sample|1987-04-09|2010-01-02 04:03:06|1987-04-09|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|123.00|00000000000000000001.0000000000
 100|9.8777|STRING1|1923-04-08|2010-01-02 05:09:06|1923-04-08|2010-01-02 05:09:06.111111|2010-01-02 05:09:06.111111|2010-01-02 05:09:06.111111|TRUE|010.01|00000000000000000002.0000000000
 8996|98.8777|again|1987-04-09|2010-01-02 04:03:06|1987-04-09|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|FALSE|-000.01|99999999999999999999.9999999999
 100|12.8788|string1|1922-04-02|2010-01-02 02:05:06|1922-04-02|2010-01-02 02:05:06.111111|2010-01-02 02:05:06.111111|2010-01-02 02:05:06.111111|TRUE|999.99|-99999999999999999999.9999999999
-5748|67.87|sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|-999.99|00000000000000000000.0000000001
-5748|67.87|Sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|181.18|-00000000000000000000.0000000001
-5748|67.87|sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|181.18|12345678901234567890.0123456789
-5748|67.87|sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|181.18|12345678901234567890.0123456789
+5748|67.87|sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|-999.99|00000000000000000000.000000001
+5748|67.87|Sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|181.18|-00000000000000000000.000000001
+5748|67.87|sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|181.18|123456789012345678.012345678
+5748|67.87|sample|1987-04-06|2010-01-02 04:03:06|1987-04-06|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|TRUE|181.18|123456789012345678.012345678
 5000|67.87|testing|\N|2010-01-02 04:03:06|\N|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|2010-01-02 04:03:06.111111|\N|\N|\N
 6000|\N|\N|1987-04-06|\N|1987-04-06|\N|\N|\N|TRUE|\N|\N
 \N|98.52|\N|\N|\N|\N|\N|\N|\N|TRUE|181.18|\N
diff --git a/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_all_functions2.out b/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_all_functions2.out
index 663169e8b7..a73761131e 100644
--- a/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_all_functions2.out
+++ b/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_all_functions2.out
@@ -81,10 +81,10 @@
 [1991, 255, -32767]
 
 -- !select_topn_array1 --
-['yunlj8@nk', 'wangynnsf', 'wangjuoo4']
+["yunlj8@nk", "wangynnsf", "wangjuoo4"]
 
 -- !select_topn_array2 --
-['yunlj8@nk', 'wangynnsf', 'wangjuoo4']
+["yunlj8@nk", "wangynnsf", "wangjuoo4"]
 
 -- !select_topn_array3 --
 [2015-04-02, 1991-08-11, 1989-03-21]
diff --git a/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_collect.out b/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_collect.out
index 4bcd69e049..34b298b424 100644
--- a/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_collect.out
+++ b/regression-test/data/query_p0/sql_functions/aggregate_functions/test_aggregate_collect.out
@@ -9,15 +9,15 @@
 1	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	not null
 1	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	not null
 1	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	not null
-1	false	10	20	30	4444444444444	55555555555	0.1	0.222	3333.33	c	varchar1	string1	2022-12-01	2022-12-01	2022-12-01T22:23:23	2022-12-01T22:23:24.999999	not null
-1	false	11	21	33	4444444444444	55555555555	0.1	0.222	3333.33	c	varchar1	string1	2022-12-01	2022-12-01	2022-12-01T22:23:23	2022-12-01T22:23:24.999999	not null
-1	true	11	12	13	1444444444444	1555555555	1.1	1.222	13333.33	d	varchar2	string2	2022-12-02	2022-12-02	2022-12-02T22:23:23	2022-12-02T22:23:24.999999	not null
+1	false	10	20	30	4444444444444	55555555555	0.1	0.222	3333.330000000	c	varchar1	string1	2022-12-01	2022-12-01	2022-12-01T22:23:23	2022-12-01T22:23:24.999999	not null
+1	false	11	21	33	4444444444444	55555555555	0.1	0.222	3333.330000000	c	varchar1	string1	2022-12-01	2022-12-01	2022-12-01T22:23:23	2022-12-01T22:23:24.999999	not null
+1	true	11	12	13	1444444444444	1555555555	1.1	1.222	13333.330000000	d	varchar2	string2	2022-12-02	2022-12-02	2022-12-02T22:23:23	2022-12-02T22:23:24.999999	not null
 2	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	not null
 2	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	not null
 2	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	\N	not null
-2	false	10	20	30	944444444444	9555555555	9.1	9.222	93333.33	p	varchar9	string9	2022-12-09	2022-12-09	2022-12-09T22:23:23	2022-12-09T22:23:24.999999	not null
-2	false	21	22	23	2444444444444	255555555	2.1	2.222	23333.33	f	varchar3	string3	2022-12-03	2022-12-03	2022-12-03T22:23:23	2022-12-03T22:23:24.999999	not null
-2	true	31	32	33	3444444444444	3555555555	3.1	3.222	33333.33	l	varchar3	string3	2022-12-03	2022-12-03	2022-12-03T22:23:23	2022-12-03T22:23:24.999999	not null
+2	false	10	20	30	944444444444	9555555555	9.1	9.222	93333.330000000	p	varchar9	string9	2022-12-09	2022-12-09	2022-12-09T22:23:23	2022-12-09T22:23:24.999999	not null
+2	false	21	22	23	2444444444444	255555555	2.1	2.222	23333.330000000	f	varchar3	string3	2022-12-03	2022-12-03	2022-12-03T22:23:23	2022-12-03T22:23:24.999999	not null
+2	true	31	32	33	3444444444444	3555555555	3.1	3.222	33333.330000000	l	varchar3	string3	2022-12-03	2022-12-03	2022-12-03T22:23:23	2022-12-03T22:23:24.999999	not null
 
 -- !select --
 1	1	1	1	1	3	1	2	1	1	1	1	1	2	1	1	1
@@ -35,5 +35,5 @@
 [2022-11-02, 2022-11-01]
 
 -- !select46 --
-[6.8754576, 0.576]
+[6.875457600, 0.576000000]
 
diff --git a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
index 993728fef6..5baa3e7e09 100644
--- a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
+++ b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions.out
@@ -66,15 +66,15 @@
 9	\N
 
 -- !select --
-1	[1, 2, 3]	['a', 'b', '']
+1	[1, 2, 3]	["a", "b", ""]
 2	[4]	\N
 3	[]	[]
 4	[1, 2, 3, 4, 5]	[]
-5	[]	['a', 'b', 'c', 'd']
-6	[1, 2, 3, 4, 5]	['a', 'b', 'c', 'd']
-7	[8, 9, NULL, 10]	['f', NULL, 'g', 'h']
-8	[1, 2, 3, 4, NULL]	['a', 'b']
-9	[1, 2, 3]	['a', 'b', '']
+5	[]	["a", "b", "c", "d"]
+6	[1, 2, 3, 4, 5]	["a", "b", "c", "d"]
+7	[8, 9, NULL, 10]	["f", NULL, "g", "h"]
+8	[1, 2, 3, 4, NULL]	["a", "b"]
+9	[1, 2, 3]	["a", "b", ""]
 
 -- !select --
 1	[2023-02-05, 2023-02-06]	[2022-10-15 10:30:00.999, 2022-08-31 12:00:00.999]
@@ -143,15 +143,15 @@
 \N
 
 -- !select_array_sort1 --
-1	[1, 2, 3]	['', 'a', 'b']	[1, 2]
+1	[1, 2, 3]	["", "a", "b"]	[1, 2]
 2	[4]	\N	[5]
 3	[]	[]	\N
 4	[1, 1, 2, 2, 3, 3, 4, 4, 5]	[]	[]
-5	[]	['a', 'a', 'b', 'b', 'c', 'c', 'd']	\N
-6	[1, 1, 2, 2, 3, 3, 4, 4, 5]	['a', 'a', 'b', 'b', 'c', 'c', 'd']	\N
-7	[NULL, NULL, 8, 9, 10]	[NULL, NULL, 'f', 'g', 'h']	\N
-8	[NULL, 1, 2, 3, 3, 4, 4]	['a', 'b', 'b', 'b']	[1, 2, 2, 3]
-9	[1, 2, 3]	['', 'a', 'b']	[1, 2]
+5	[]	["a", "a", "b", "b", "c", "c", "d"]	\N
+6	[1, 1, 2, 2, 3, 3, 4, 4, 5]	["a", "a", "b", "b", "c", "c", "d"]	\N
+7	[NULL, NULL, 8, 9, 10]	[NULL, NULL, "f", "g", "h"]	\N
+8	[NULL, 1, 2, 3, 3, 4, 4]	["a", "b", "b", "b"]	[1, 2, 2, 3]
+9	[1, 2, 3]	["", "a", "b"]	[1, 2]
 
 -- !select_array_sort2 --
 1	[2023-02-05, 2023-02-06]	[2022-08-31 12:00:00.999, 2022-10-15 10:30:00.999]
@@ -176,15 +176,15 @@
 9	\N
 
 -- !select_array_reverse_sort1 --
-1	[3, 2, 1]	['b', 'a', '']	[2, 1]
+1	[3, 2, 1]	["b", "a", ""]	[2, 1]
 2	[4]	\N	[5]
 3	[]	[]	\N
 4	[5, 4, 4, 3, 3, 2, 2, 1, 1]	[]	[]
-5	[]	['d', 'c', 'c', 'b', 'b', 'a', 'a']	\N
-6	[5, 4, 4, 3, 3, 2, 2, 1, 1]	['d', 'c', 'c', 'b', 'b', 'a', 'a']	\N
-7	[10, 9, 8, NULL, NULL]	['h', 'g', 'f', NULL, NULL]	\N
-8	[4, 4, 3, 3, 2, 1, NULL]	['b', 'b', 'b', 'a']	[3, 2, 2, 1]
-9	[3, 2, 1]	['b', 'a', '']	[2, 1]
+5	[]	["d", "c", "c", "b", "b", "a", "a"]	\N
+6	[5, 4, 4, 3, 3, 2, 2, 1, 1]	["d", "c", "c", "b", "b", "a", "a"]	\N
+7	[10, 9, 8, NULL, NULL]	["h", "g", "f", NULL, NULL]	\N
+8	[4, 4, 3, 3, 2, 1, NULL]	["b", "b", "b", "a"]	[3, 2, 2, 1]
+9	[3, 2, 1]	["b", "a", ""]	[2, 1]
 
 -- !select_array_reverse_sort2 --
 1	[2023-02-06, 2023-02-05]	[2022-10-15 10:30:00.999, 2022-08-31 12:00:00.999]
@@ -396,15 +396,15 @@
 9	\N
 
 -- !select --
-1	[3, 2, 1]	['', 'b', 'a']	[2, 1]
+1	[3, 2, 1]	["", "b", "a"]	[2, 1]
 2	[4]	\N	[5]
 3	[]	[]	\N
 4	[1, 2, 3, 4, 5, 4, 3, 2, 1]	[]	[]
-5	[]	['a', 'b', 'c', 'd', 'c', 'b', 'a']	\N
-6	[1, 2, 3, 4, 5, 4, 3, 2, 1]	['a', 'b', 'c', 'd', 'c', 'b', 'a']	\N
-7	[NULL, 10, NULL, 9, 8]	['h', NULL, 'g', NULL, 'f']	\N
-8	[NULL, 4, 4, 3, 3, 2, 1]	['b', 'b', 'b', 'a']	[3, 2, 2, 1]
-9	[3, 2, 1]	['', 'b', 'a']	[2, 1]
+5	[]	["a", "b", "c", "d", "c", "b", "a"]	\N
+6	[1, 2, 3, 4, 5, 4, 3, 2, 1]	["a", "b", "c", "d", "c", "b", "a"]	\N
+7	[NULL, 10, NULL, 9, 8]	["h", NULL, "g", NULL, "f"]	\N
+8	[NULL, 4, 4, 3, 3, 2, 1]	["b", "b", "b", "a"]	[3, 2, 2, 1]
+9	[3, 2, 1]	["", "b", "a"]	[2, 1]
 
 -- !select --
 1	[2023-02-06, 2023-02-05]	[2022-08-31 12:00:00.999, 2022-10-15 10:30:00.999]
@@ -704,15 +704,15 @@
 9	[1, 2, 3]	6	6	[1, 2, 3]	[1, 2, 3]
 
 -- !select_array_shuffle2 --
-1	['hi']	1	1	['hi']	['hi']
-2	['hi2']	1	1	['hi2']	['hi2']
-3	['hi3']	1	1	['hi3']	['hi3']
+1	["hi"]	1	1	["hi"]	["hi"]
+2	["hi2"]	1	1	["hi2"]	["hi2"]
+3	["hi3"]	1	1	["hi3"]	["hi3"]
 4	\N	\N	\N	\N	\N
 5	\N	\N	\N	\N	\N
 6	\N	\N	\N	\N	\N
 7	\N	\N	\N	\N	\N
-8	['hi', 'hi', 'hello']	3	3	['hello', 'hi', 'hi']	['hello', 'hi', 'hi']
-9	['hi']	1	1	['hi']	['hi']
+8	["hi", "hi", "hello"]	3	3	["hello", "hi", "hi"]	["hello", "hi", "hi"]
+9	["hi"]	1	1	["hi"]	["hi"]
 
 -- !select_array_shuffle3 --
 1	[2015-03-13]	1	1	[2015-03-13]	[2015-03-13]
@@ -777,7 +777,7 @@
 5	\N
 6	\N
 7	\N
-8	['hi', 'hi']
+8	["hi", "hi"]
 9	[]
 
 -- !select --
@@ -854,7 +854,7 @@
 5	\N
 6	\N
 7	\N
-8	['hi', 'hello']
+8	["hi", "hello"]
 9	[]
 
 -- !select --
@@ -935,15 +935,15 @@
 9	[NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL]	[NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL]
 
 -- !select_array_with_constant3 --
-1	['a', 'a']	['a', 'a']
-2	['a', 'a']	['a', 'a']
-3	['a', 'a']	['a', 'a']
-4	['a', 'a']	['a', 'a']
-5	['a', 'a']	['a', 'a']
-6	['a', 'a']	['a', 'a']
-7	['a', 'a']	['a', 'a']
-8	['a', 'a']	['a', 'a']
-9	['a', 'a']	['a', 'a']
+1	["a", "a"]	["a", "a"]
+2	["a", "a"]	["a", "a"]
+3	["a", "a"]	["a", "a"]
+4	["a", "a"]	["a", "a"]
+5	["a", "a"]	["a", "a"]
+6	["a", "a"]	["a", "a"]
+7	["a", "a"]	["a", "a"]
+8	["a", "a"]	["a", "a"]
+9	["a", "a"]	["a", "a"]
 
 -- !select_array_with_constant4 --
 1	[123, 123]	[123, 123]
@@ -979,15 +979,15 @@
 9	[2, 9]
 
 -- !select --
-1	['1', NULL, '2020-01-01']
-2	['2', NULL, '2020-01-01']
-3	['3', NULL, '2020-01-01']
-4	['4', NULL, '2020-01-01']
-5	['5', NULL, '2020-01-01']
-6	['6', NULL, '2020-01-01']
-7	['7', NULL, '2020-01-01']
-8	['8', NULL, '2020-01-01']
-9	['9', NULL, '2020-01-01']
+1	["1", NULL, "2020-01-01"]
+2	["2", NULL, "2020-01-01"]
+3	["3", NULL, "2020-01-01"]
+4	["4", NULL, "2020-01-01"]
+5	["5", NULL, "2020-01-01"]
+6	["6", NULL, "2020-01-01"]
+7	["7", NULL, "2020-01-01"]
+8	["8", NULL, "2020-01-01"]
+9	["9", NULL, "2020-01-01"]
 
 -- !select --
 1	[NULL, 1]
@@ -1188,15 +1188,15 @@
 9	[{1, 1, 1}, {2, 2, 2}, {3, 3, 3}]
 
 -- !select --
-1	[{'a', 'a'}, {'b', 'b'}, {'', ''}]
+1	[{"a", "a"}, {"b", "b"}, {"", ""}]
 2	\N
 3	[]
 4	[]
-5	[{'a', 'a'}, {'b', 'b'}, {'c', 'c'}, {'d', 'd'}, {'c', 'c'}, {'b', 'b'}, {'a', 'a'}]
-6	[{'a', 'a'}, {'b', 'b'}, {'c', 'c'}, {'d', 'd'}, {'c', 'c'}, {'b', 'b'}, {'a', 'a'}]
-7	[{'f', 'f'}, {NULL, NULL}, {'g', 'g'}, {NULL, NULL}, {'h', 'h'}]
-8	[{'a', 'a'}, {'b', 'b'}, {'b', 'b'}, {'b', 'b'}]
-9	[{'a', 'a'}, {'b', 'b'}, {'', ''}]
+5	[{"a", "a"}, {"b", "b"}, {"c", "c"}, {"d", "d"}, {"c", "c"}, {"b", "b"}, {"a", "a"}]
+6	[{"a", "a"}, {"b", "b"}, {"c", "c"}, {"d", "d"}, {"c", "c"}, {"b", "b"}, {"a", "a"}]
+7	[{"f", "f"}, {NULL, NULL}, {"g", "g"}, {NULL, NULL}, {"h", "h"}]
+8	[{"a", "a"}, {"b", "b"}, {"b", "b"}, {"b", "b"}]
+9	[{"a", "a"}, {"b", "b"}, {"", ""}]
 
 -- !select --
 1	[{1, 1}, {2, 2}]
@@ -1210,15 +1210,15 @@
 9	[{1, 1}, {2, 2}]
 
 -- !select --
-1	[{'hi', 'hi'}]
-2	[{'hi2', 'hi2'}]
-3	[{'hi3', 'hi3'}]
+1	[{"hi", "hi"}]
+2	[{"hi2", "hi2"}]
+3	[{"hi3", "hi3"}]
 4	\N
 5	\N
 6	\N
 7	\N
-8	[{'hi', 'hi'}, {'hi', 'hi'}, {'hello', 'hello'}]
-9	[{'hi', 'hi'}]
+8	[{"hi", "hi"}, {"hi", "hi"}, {"hello", "hello"}]
+9	[{"hi", "hi"}]
 
 -- !select --
 1	[{2015-03-13, 2015-03-13}]
@@ -1265,8 +1265,8 @@
 9	\N
 
 -- !select --
-1	[{2022-10-15 10:30:00.999000, 2022-10-15 10:30:00.999000}, {2022-08-31 12:00:00.999000, 2022-08-31 12:00:00.999000}]
-2	[{2022-11-15 10:30:00.999000, 2022-11-15 10:30:00.999000}, {2022-01-31 12:00:00.999000, 2022-01-31 12:00:00.999000}]
+1	[{2022-10-15 10:30:00.999, 2022-10-15 10:30:00.999}, {2022-08-31 12:00:00.999, 2022-08-31 12:00:00.999}]
+2	[{2022-11-15 10:30:00.999, 2022-11-15 10:30:00.999}, {2022-01-31 12:00:00.999, 2022-01-31 12:00:00.999}]
 3	\N
 4	\N
 5	\N
@@ -1276,8 +1276,8 @@
 9	\N
 
 -- !select --
-1	[{2022-10-16 10:30:00.999000, 2022-10-16 10:30:00.999000, 2022-10-16 10:30:00.999000, 2022-10-16 10:30:00.999000}, {2022-08-31 12:00:00.999000, 2022-08-31 12:00:00.999000, 2022-08-31 12:00:00.999000, 2022-08-31 12:00:00.999000}]
-2	[{2022-11-16 10:30:00.999000, 2022-11-16 10:30:00.999000, 2022-11-16 10:30:00.999000, 2022-11-16 10:30:00.999000}, {2022-01-31 12:00:00.999000, 2022-01-31 12:00:00.999000, 2022-01-31 12:00:00.999000, 2022-01-31 12:00:00.999000}]
+1	[{2022-10-16 10:30:00.999, 2022-10-16 10:30:00.999, 2022-10-16 10:30:00.999, 2022-10-16 10:30:00.999}, {2022-08-31 12:00:00.999, 2022-08-31 12:00:00.999, 2022-08-31 12:00:00.999, 2022-08-31 12:00:00.999}]
+2	[{2022-11-16 10:30:00.999, 2022-11-16 10:30:00.999, 2022-11-16 10:30:00.999, 2022-11-16 10:30:00.999}, {2022-01-31 12:00:00.999, 2022-01-31 12:00:00.999, 2022-01-31 12:00:00.999, 2022-01-31 12:00:00.999}]
 3	\N
 4	\N
 5	\N
@@ -1359,15 +1359,15 @@
 9	[1, 2, 3]
 
 -- !select --
-1	['a', 'b', '']
+1	["a", "b", ""]
 2	\N
 3	[]
 4	[]
-5	['a', 'b', 'c', 'd', 'c', 'b', 'a']
-6	['a', 'b', 'c', 'd', 'c', 'b', 'a']
-7	['f', NULL, 'g', NULL, 'h']
-8	['a', 'b']
-9	['a', 'b', '']
+5	["a", "b", "c", "d", "c", "b", "a"]
+6	["a", "b", "c", "d", "c", "b", "a"]
+7	["f", NULL, "g", NULL, "h"]
+8	["a", "b"]
+9	["a", "b", ""]
 
 -- !select --
 1	[1, 2]
@@ -1381,15 +1381,15 @@
 9	[1, 2]
 
 -- !select --
-1	['hi']
-2	['hi2']
-3	['hi3']
+1	["hi"]
+2	["hi2"]
+3	["hi3"]
 4	\N
 5	\N
 6	\N
 7	\N
-8	['hi', 'hello']
-9	['hi']
+8	["hi", "hello"]
+9	["hi"]
 
 -- !select --
 1	[2015-03-13]
@@ -1436,26 +1436,26 @@
 9	[1, 1, 2, 3]
 
 -- !select --
-1	['a', 'a', 'b', '']
+1	["a", "a", "b", ""]
 2	\N
-3	['a']
-4	['a']
-5	['a', 'a', 'b', 'c', 'd', 'c', 'b', 'a']
-6	['a', 'a', 'b', 'c', 'd', 'c', 'b', 'a']
-7	['a', 'f', NULL, 'g', NULL, 'h']
-8	['a', 'a', 'b', 'b', 'b']
-9	['a', 'a', 'b', '']
+3	["a"]
+4	["a"]
+5	["a", "a", "b", "c", "d", "c", "b", "a"]
+6	["a", "a", "b", "c", "d", "c", "b", "a"]
+7	["a", "f", NULL, "g", NULL, "h"]
+8	["a", "a", "b", "b", "b"]
+9	["a", "a", "b", ""]
 
 -- !select --
-1	[NULL, 'a', 'b', '']
+1	[NULL, "a", "b", ""]
 2	\N
 3	[NULL]
 4	[NULL]
-5	[NULL, 'a', 'b', 'c', 'd', 'c', 'b', 'a']
-6	[NULL, 'a', 'b', 'c', 'd', 'c', 'b', 'a']
-7	[NULL, 'f', NULL, 'g', NULL, 'h']
-8	[NULL, 'a', 'b', 'b', 'b']
-9	[NULL, 'a', 'b', '']
+5	[NULL, "a", "b", "c", "d", "c", "b", "a"]
+6	[NULL, "a", "b", "c", "d", "c", "b", "a"]
+7	[NULL, "f", NULL, "g", NULL, "h"]
+8	[NULL, "a", "b", "b", "b"]
+9	[NULL, "a", "b", ""]
 
 -- !select --
 1	[NULL, 1, 2]
@@ -1469,26 +1469,26 @@
 9	[NULL, 1, 2]
 
 -- !select --
-1	['hi', 'hi']
-2	['hi', 'hi2']
-3	['hi', 'hi3']
+1	["hi", "hi"]
+2	["hi", "hi2"]
+3	["hi", "hi3"]
 4	\N
 5	\N
 6	\N
 7	\N
-8	['hi', 'hi', 'hi', 'hello']
-9	['hi', 'hi']
+8	["hi", "hi", "hi", "hello"]
+9	["hi", "hi"]
 
 -- !select --
-1	['hi222', 'hi']
-2	['hi222', 'hi2']
-3	['hi222', 'hi3']
+1	["hi222", "hi"]
+2	["hi222", "hi2"]
+3	["hi222", "hi3"]
 4	\N
 5	\N
 6	\N
 7	\N
-8	['hi222', 'hi', 'hi', 'hello']
-9	['hi222', 'hi']
+8	["hi222", "hi", "hi", "hello"]
+9	["hi222", "hi"]
 
 -- !select --
 1	[NULL, 2015-03-13]
diff --git a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
index eaf01e5b97..27acd22828 100644
--- a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
+++ b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_by_literal.out
@@ -261,10 +261,10 @@ true
 [1, 3, NULL]
 
 -- !sql --
-['a']
+["a"]
 
 -- !sql --
-[NULL, 'a']
+[NULL, "a"]
 
 -- !sql --
 [1, 0, NULL]
@@ -294,10 +294,10 @@ true
 [2, 3, NULL]
 
 -- !sql --
-['b', 'c']
+["b", "c"]
 
 -- !sql --
-['b', 'c', NULL]
+["b", "c", NULL]
 
 -- !sql --
 [1]
@@ -324,10 +324,10 @@ true
 [NULL, 1, 2, 3]
 
 -- !sql_array_sort5 --
-['a', 'b', 'c']
+["a", "b", "c"]
 
 -- !sql_array_sort6 --
-['a', 'b', 'c']
+["a", "b", "c"]
 
 -- !sql_array_sort7 --
 [0, 1, 1]
@@ -357,10 +357,10 @@ true
 [3, 2, 1, NULL]
 
 -- !sql_array_reverse_sort5 --
-['c', 'b', 'a']
+["c", "b", "a"]
 
 -- !sql_array_reverse_sort6 --
-['c', 'b', 'a']
+["c", "b", "a"]
 
 -- !sql_array_reverse_sort7 --
 [1, 1, 0]
@@ -549,13 +549,13 @@ true
 [2, 3, 4, NULL]
 
 -- !sql --
-['2', '3', '4', '5', '6']
+["2", "3", "4", "5", "6"]
 
 -- !sql --
-['2', '3', '4', '5', '6']
+["2", "3", "4", "5", "6"]
 
 -- !sql --
-['2', '3', '4', '5', NULL]
+["2", "3", "4", "5", NULL]
 
 -- !sql --
 [2023-02-05, 2023-02-07, 2023-02-05]
@@ -606,10 +606,10 @@ any_any_1_2___any
 _
 
 -- !sql_array_with_constant1 --
-['_', '_', '_']	['_', '_', '_']
+["_", "_", "_"]	["_", "_", "_"]
 
 -- !sql_array_with_constant2 --
-['1', '1']	['1', '1']
+["1", "1"]	["1", "1"]
 
 -- !sql_array_with_constant3 --
 [1223, 1223, 1223, 1223]	[1223, 1223, 1223, 1223]
@@ -630,16 +630,16 @@ _
 [NULL]
 
 -- !sql --
-[1.2, 3.4, 3.3, 2.1]
+[1.200000000, 3.400000000, 3.300000000, 2.100000000]
 
 -- !sql --
-['a', 'b', 'c', 'd']
+["a", "b", "c", "d"]
 
 -- !sql --
-['aaa', 'bbb', 'ccc', 'ccccc', NULL, 'dddd']
+["aaa", "bbb", "ccc", "ccccc", NULL, "dddd"]
 
 -- !sql --
-['2015-03-13']
+["2015-03-13"]
 
 -- !sql --
 [2023-02-06 22:07:34.999, 2023-02-04 23:07:34.999, 2023-02-07 22:07:34.999, 2023-02-04 23:07:34.999]
@@ -657,16 +657,16 @@ _
 [1000002]
 
 -- !sql --
-[2.222, 3.333]
+[2.222000000, 3.333000000]
 
 -- !sql --
 [2022-01-03 00:00:00, 2021-01-01 00:00:00]
 
 -- !sql --
-[25.99]
+[25.990000000]
 
 -- !sql --
-[24.99]
+[24.990000000, 25.990000000]
 
 -- !sql --
 [1, 2, 3, 2, 3, 4, 8, 1, 2, 9]
@@ -675,16 +675,16 @@ _
 [12, 23, 25, NULL, NULL, 66]
 
 -- !sql --
-[1.2, 1.8, 9, 2.2, 2.8]
+[1.200000000, 1.800000000, 9.000000000, 2.200000000, 2.800000000]
 
 -- !sql --
-['aaa', NULL, 'bbb', 'fff', NULL, 'ccc']
+["aaa", NULL, "bbb", "fff", NULL, "ccc"]
 
 -- !sql --
 \N
 
 -- !sql --
-[12.99, 34.99, 999.28, 123.99]
+[12.990000000, 34.990000000, 999.280000000, 123.990000000]
 
 -- !sql --
 [2023-03-05, 2023-03-04, 2023-02-01, 2023-02-05]
@@ -696,37 +696,37 @@ _
 17	[1, 3, 2, NULL, 3, 4, NULL, 4]	[1, 3, 2, NULL, 3, 4, NULL, 4]
 
 -- !select_array_shuffle2 --
-6.666000000	[3.333, 2.222, 1.111]	[3.333, 2.222, 1.111]
+6.666000000	[3.333000000, 2.222000000, 1.111000000]	[3.333000000, 2.222000000, 1.111000000]
 
 -- !select_array_shuffle3 --
-4	['aaa', 'bbb', NULL, 'fff']	['aaa', 'bbb', NULL, 'fff']
+4	["aaa", "bbb", NULL, "fff"]	["aaa", "bbb", NULL, "fff"]
 
 -- !select_array_shuffle4 --
-4	['2020-01-02', '2021-01-01', '2022-01-03', '1996-04-17']	['2020-01-02', '2021-01-01', '2022-01-03', '1996-04-17']
+4	["2020-01-02", "2021-01-01", "2022-01-03", "1996-04-17"]	["2020-01-02", "2021-01-01", "2022-01-03", "1996-04-17"]
 
 -- !sql --
-[{'a', 'd'}, {'b', 'e'}, {'c', 'f'}]
+[{"a", "d"}, {"b", "e"}, {"c", "f"}]
 
 -- !sql --
-[{'a', 'd', 'g'}, {'b', 'e', 'h'}, {'c', 'f', 'i'}]
+[{"a", "d", "g"}, {"b", "e", "h"}, {"c", "f", "i"}]
 
 -- !sql --
-[{1, 'd'}, {2, 'o'}, {3, 'r'}, {4, 'i'}, {5, 's'}]
+[{1, "d"}, {2, "o"}, {3, "r"}, {4, "i"}, {5, "s"}]
 
 -- !sql --
-[{1.1, 1}, {2.2, 2}, {3.3, 3}]
+[{1.100000000, 1}, {2.200000000, 2}, {3.300000000, 3}]
 
 -- !sql --
-[{1, NULL}, {NULL, 'b'}, {3, NULL}]
+[{1, NULL}, {NULL, "b"}, {3, NULL}]
 
 -- !sql --
-[{3.05, 3.14}, {2.22, 6.66}]
+[{3.050000000, 3.140000000}, {2.220000000, 6.660000000}]
 
 -- !sql --
 [{2000-03-05, 2000-02-02}, {2023-03-10, 2023-03-10}]
 
 -- !sql --
-[{2023-03-05 12:23:24.999000}, {2023-03-05 15:23:23.997000}]
+[{2023-03-05 12:23:24.999}, {2023-03-05 15:23:23.997}]
 
 -- !sql --
 \N
@@ -810,13 +810,13 @@ _
 \N
 
 -- !sql --
-[9.999, 1.111, 2.222, 3.333]
+[9.999000000, 1.111000000, 2.222000000, 3.333000000]
 
 -- !sql --
-['dddd', 'aaa', 'bbb', 'ccc']
+["dddd", "aaa", "bbb", "ccc"]
 
 -- !sql --
-[999.28, 12.99, 34.99]
+[999.280000000, 12.990000000, 34.990000000]
 
 -- !sql --
 [2023-02-05, 2023-03-05, 2023-03-04]
@@ -834,13 +834,13 @@ _
 [254, 258, 258]
 
 -- !sql --
-[1, 3.1, 6.3, 10.6, 16]
+[1.000000000, 3.100000000, 6.300000000, 10.600000000, 16.000000000]
 
 -- !sql --
 [-1, 1, -2, 2, -3]
 
 -- !sql --
-[-5.23, -1.11, -4.13, -2.13, -1.12]
+[-5.230000000, -1.110000000, -4.130000000, -2.130000000, -1.120000000]
 
 -- !sql --
 [1, 3, 6, NULL]
@@ -855,7 +855,7 @@ _
 [8]
 
 -- !sql --
-[1.1]
+[1.100000000]
 
 -- !sql --
 [NULL]
@@ -864,7 +864,7 @@ _
 []
 
 -- !sql --
-[12.99, 47.98, 1047.26]
+[12.990000000, 47.980000000, 1047.260000000]
 
 -- !sql --
 [111.111, 333.333]
diff --git a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_with_where.out b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_with_where.out
index d34ea082a6..757cf79a75 100644
--- a/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_with_where.out
+++ b/regression-test/data/query_p0/sql_functions/array_functions/test_array_functions_with_where.out
@@ -24,9 +24,9 @@
 3	[5, 3]
 
 -- !select --
-1	['1', 'abc']
-2	['2', 'abc']
-3	['3', 'abc']
+1	["1", "abc"]
+2	["2", "abc"]
+3	["3", "abc"]
 
 -- !select --
 1	[NULL, 1]
@@ -34,9 +34,9 @@
 3	[NULL, 3]
 
 -- !select --
-1	[1, 0, 1, 1]	[1, -2, -3, 4]	[2020-01-01, 2020-01-02]	[2020-01-01 12:00:00, 2020-01-02 13:01:01]	[1, 2, 3, 4]	[1, 1.1, 1.2, 1.3]	[1, 2, 3, 4]	[32768, 32769, -32769, -32770]	['192.168.0.1', '127.0.0.1']	['a', 'b', 'c']	[-1, 0, 1, 2]	\N	[1, 2, 3, 4]	[128, 129, -129, -130]	['d', 'e', 'f']	[0, 1, 2, 3]	string2	text2	4.0	2022-08-08T00:00	2022-08-09T12:10:10	1660018210000	2022-08-09 12:10:10
-1	[1, 0, 1, 1]	[1, -2, -3, 4]	[2020-01-01, 2020-01-02]	[2020-01-01 12:00:00, 2020-01-02 13:01:01]	[1, 2, 3, 4]	[1, 1.1, 1.2, 1.3]	[1, 2, 3, 4]	[32768, 32769, -32769, -32770]	['192.168.0.1', '127.0.0.1']	['a', 'b', 'c']	[-1, 0, 1, 2]	\N	[1, 2, 3, 4]	[128, 129, -129, -130]	['d', 'e', 'f']	[0, 1, 2, 3]	string2	text2	4.0	2022-08-08T00:00	2022-08-09T12:10:10	1660018210000	2022-08-09 12:10:10
-1	[1, 0, 1, 1]	[1, -2, -3, 4]	[2020-01-01, 2020-01-02]	[2020-01-01 12:00:00, 2020-01-02 13:01:01]	[1, 2, 3, 4]	[1, 1.1, 1.2, 1.3]	[1, 2, 3, 4]	[32768, 32769, -32769, -32770]	['192.168.0.1', '127.0.0.1']	['a', 'b', 'c']	[-1, 0, 1, 2]	\N	[1, 2, 3, 4]	[128, 129, -129, -130]	['d', 'e', 'f']	[0, 1, 2, 3]	string2	text2	4.0	2022-08-08T00:00	2022-08-09T12:10:10	1660018210000	2022-08-09 12:10:10
+1	[1, 0, 1, 1]	[1, -2, -3, 4]	[2020-01-01, 2020-01-02]	[2020-01-01 12:00:00, 2020-01-02 13:01:01]	[1, 2, 3, 4]	[1, 1.1, 1.2, 1.3]	[1, 2, 3, 4]	[32768, 32769, -32769, -32770]	["192.168.0.1", "127.0.0.1"]	["a", "b", "c"]	[-1, 0, 1, 2]	\N	[1, 2, 3, 4]	[128, 129, -129, -130]	["d", "e", "f"]	[0, 1, 2, 3]	string2	text2	4.0	2022-08-08T00:00	2022-08-09T12:10:10	1660018210000	2022-08-09 12:10:10
+1	[1, 0, 1, 1]	[1, -2, -3, 4]	[2020-01-01, 2020-01-02]	[2020-01-01 12:00:00, 2020-01-02 13:01:01]	[1, 2, 3, 4]	[1, 1.1, 1.2, 1.3]	[1, 2, 3, 4]	[32768, 32769, -32769, -32770]	["192.168.0.1", "127.0.0.1"]	["a", "b", "c"]	[-1, 0, 1, 2]	\N	[1, 2, 3, 4]	[128, 129, -129, -130]	["d", "e", "f"]	[0, 1, 2, 3]	string2	text2	4.0	2022-08-08T00:00	2022-08-09T12:10:10	1660018210000	2022-08-09 12:10:10
+1	[1, 0, 1, 1]	[1, -2, -3, 4]	[2020-01-01, 2020-01-02]	[2020-01-01 12:00:00, 2020-01-02 13:01:01]	[1, 2, 3, 4]	[1, 1.1, 1.2, 1.3]	[1, 2, 3, 4]	[32768, 32769, -32769, -32770]	["192.168.0.1", "127.0.0.1"]	["a", "b", "c"]	[-1, 0, 1, 2]	\N	[1, 2, 3, 4]	[128, 129, -129, -130]	["d", "e", "f"]	[0, 1, 2, 3]	string2	text2	4.0	2022-08-08T00:00	2022-08-09T12:10:10	1660018210000	2022-08-09 12:10:10
 
 -- !select --
 [0, 1, 2, 3]
diff --git a/regression-test/data/query_p0/sql_functions/array_functions/test_array_last.out b/regression-test/data/query_p0/sql_functions/array_functions/test_array_last.out
index 5905303382..4b77992064 100644
--- a/regression-test/data/query_p0/sql_functions/array_functions/test_array_last.out
+++ b/regression-test/data/query_p0/sql_functions/array_functions/test_array_last.out
@@ -15,10 +15,10 @@ c
 5.300000000
 
 -- !select_06 --
-0	[2]	['123', '124', '125']
-1	[1, 2, 3, 4, 5]	['234', '124', '125']
-2	[1, 2, 10, 12, 10]	['345', '234', '123']
-3	[1, 3, 4, 2]	['222', '444', '555']
+0	[2]	["123", "124", "125"]
+1	[1, 2, 3, 4, 5]	["234", "124", "125"]
+2	[1, 2, 10, 12, 10]	["345", "234", "123"]
+3	[1, 3, 4, 2]	["222", "444", "555"]
 
 -- !select_07 --
 \N	125
diff --git a/regression-test/data/query_p0/sql_functions/array_functions/test_array_sortby.out b/regression-test/data/query_p0/sql_functions/array_functions/test_array_sortby.out
index c4de582b93..fc2865d05d 100644
--- a/regression-test/data/query_p0/sql_functions/array_functions/test_array_sortby.out
+++ b/regression-test/data/query_p0/sql_functions/array_functions/test_array_sortby.out
@@ -9,10 +9,10 @@
 [3, 2, 1, 4, 5]
 
 -- !select_04 --
-['c', 'b', 'a']
+["c", "b", "a"]
 
 -- !select_05 --
-['c', 'b', 'a']
+["c", "b", "a"]
 
 -- !select_06 --
 0	[3]	[2]
diff --git a/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out b/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out
index 294fe7f226..96a3b99c38 100644
--- a/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out
+++ b/regression-test/data/query_p0/sql_functions/array_functions/test_array_with_scale_type.out
@@ -54,12 +54,12 @@
 34.678
 
 -- !select --
-[22.679]
-[23.679]
+[22.679000000]
+[23.679000000]
 
 -- !select --
-[24.990, 25.990]
-[24.990, 25.990]
+[24.990, 24.990]
+[24.990, 24.990]
 
 -- !select --
 [24.990, 25.990]
@@ -69,8 +69,8 @@
 [34.678]
 
 -- !select --
-[24.990, 25.990]
-[24.990, 25.990]
+[24.990, 24.990]
+[24.990, 24.990]
 
 -- !select --
 [24.990, 25.990]
@@ -80,8 +80,8 @@
 [2022-12-02 22:23:24.999]
 
 -- !select --
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
+[2022-12-02 22:23:24.999, 2022-12-02 22:23:24.999]
+[2022-12-02 22:23:24.999, 2022-12-02 22:23:24.999]
 
 -- !select --
 [2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
@@ -99,20 +99,20 @@
 \N
 
 -- !select --
-[22.679]
+[22.679000000]
 []
 
 -- !select --
-[22.679, 33.679]
-[23.679, 34.679]
+[22.679000000, 33.679000000]
+[23.679000000, 34.679000000]
 
 -- !select --
 \N
 \N
 
 -- !select --
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
-[2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
+[2022-12-02 22:23:24.999, 2022-12-02 22:23:24.999]
+[2022-12-02 22:23:24.999, 2022-12-02 22:23:24.999]
 
 -- !select --
 [2022-12-01 22:23:24.999, 2022-12-01 23:23:24.999]
@@ -123,28 +123,28 @@
 [2022-12-02 22:23:24.999, 2022-12-02 23:23:24.999, 2022-12-02 22:23:24.999, 2022-12-02 22:23:23.997]
 
 -- !select --
-[22.679, 33.679, 22.679, 33.679, 22.679, 33.679]
-[23.679, 34.679, 23.679, 34.679, 23.679, 34.679]
+[22.679000000, 33.679000000, 22.679000000, 33.679000000, 22.679000000, 33.679000000]
+[23.679000000, 34.679000000, 23.679000000, 34.679000000, 23.679000000, 34.679000000]
 
 -- !select --
-[{22.679, 22.679, 2022-12-01 22:23:24.999000, 22.679}, {33.679, 33.679, 2022-12-01 23:23:24.999000, 33.679}]
-[{23.679, 23.679, 2022-12-02 22:23:24.999000, 23.679}, {34.679, 34.679, 2022-12-02 23:23:24.999000, 34.679}]
+[{22.679000000, 22.679000000, 2022-12-01 22:23:24.999, 22.679000000}, {33.679000000, 33.679000000, 2022-12-01 23:23:24.999, 33.679000000}]
+[{23.679000000, 23.679000000, 2022-12-02 22:23:24.999, 23.679000000}, {34.679000000, 34.679000000, 2022-12-02 23:23:24.999, 34.679000000}]
 
 -- !select --
-[{2022-12-02 22:23:24.999000}, {2022-12-02 22:23:23.997000}]
-[{2022-12-02 22:23:24.999000}, {2022-12-02 22:23:23.997000}]
+[{2022-12-02 22:23:24.999}, {2022-12-02 22:23:24.999}]
+[{2022-12-02 22:23:24.999}, {2022-12-02 22:23:24.999}]
 
 -- !select --
-[{2022-12-01 22:23:24.999000}, {2022-12-01 23:23:24.999000}]
-[{2022-12-02 22:23:24.999000}, {2022-12-02 23:23:24.999000}]
+[{2022-12-01 22:23:24.999}, {2022-12-01 23:23:24.999}]
+[{2022-12-02 22:23:24.999}, {2022-12-02 23:23:24.999}]
 
 -- !select --
-[{2022-12-01 22:23:24.999000, 2022-12-02 22:23:24.999000}, {2022-12-01 23:23:24.999000, 2022-12-02 22:23:23.997000}]
-[{2022-12-02 22:23:24.999000, 2022-12-02 22:23:24.999000}, {2022-12-02 23:23:24.999000, 2022-12-02 22:23:23.997000}]
+[{2022-12-01 22:23:24.999, 2022-12-02 22:23:24.999}, {2022-12-01 23:23:24.999, 2022-12-02 22:23:23.997}]
+[{2022-12-02 22:23:24.999, 2022-12-02 22:23:24.999}, {2022-12-02 23:23:24.999, 2022-12-02 22:23:23.997}]
 
 -- !select --
-[2022-12-02 22:23:23.997, 2022-12-02 22:23:24.999]
-[2022-12-02 22:23:23.997, 2022-12-02 22:23:24.999]
+[2022-12-02 22:23:23.997, 2022-12-02 22:23:23.997]
+[2022-12-02 22:23:23.997, 2022-12-02 22:23:23.997]
 
 -- !select --
 [2023-03-08 23:23:23.997, 2022-12-01 22:23:24.999, 2022-12-01 23:23:24.999]
@@ -155,23 +155,23 @@
 2022-12-02T22:23:24.999	[2022-12-02 22:23:24.999, 2022-12-02 23:23:24.999]	[2022-12-02 22:23:24.999, 2022-12-02 22:23:24.999, 2022-12-02 23:23:24.999]
 
 -- !select --
-[25.99, 22.679, 33.679]
-[25.99, 23.679, 34.679]
+[25.990000000, 22.679000000, 33.679000000]
+[25.990000000, 23.679000000, 34.679000000]
 
 -- !select --
-22.679	[22.679, 33.679]	[22.679, 22.679, 33.679]
-23.679	[23.679, 34.679]	[23.679, 23.679, 34.679]
+22.679000000	[22.679000000, 33.679000000]	[22.679000000, 22.679000000, 33.679000000]
+23.679000000	[23.679000000, 34.679000000]	[23.679000000, 23.679000000, 34.679000000]
 
 -- !select --
-[22, 11]
+[22.000000000, 11.000000000]
 
 -- !select --
-[22.99, 11]
+[22.990000000, 11.000000000]
 
 -- !select --
-[22.99, 10.999]
+[22.990000000, 10.999000000]
 
 -- !select --
-[22.679, 56.358]
-[23.679, 58.358]
+[22.679000000, 56.358000000]
+[23.679000000, 58.358000000]
 
diff --git a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_function.out b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_function.out
index 7c3874ea69..1f51dcd908 100644
--- a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_function.out
+++ b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_function.out
@@ -1,14 +1,14 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !select --
-1	[1, 2, 3]	['a', 'b', '']
-2	[4]	['1', '2', '3']
-3	[10000]	['2022-08-10', '2022-08-11']
+1	[1, 2, 3]	["a", "b", ""]
+2	[4]	["1", "2", "3"]
+3	[10000]	["2022-08-10", "2022-08-11"]
 4	[]	[]
 
 -- !select --
-1	['1', '2', '3']	[NULL, NULL, NULL]
-2	['4']	[1, 2, 3]
-3	['10000']	[NULL, NULL]
+1	["1", "2", "3"]	[NULL, NULL, NULL]
+2	["4"]	[1, 2, 3]
+3	["10000"]	[NULL, NULL]
 4	[]	[]
 
 -- !select --
@@ -22,3 +22,4 @@
 2	[4]	[NULL, NULL, NULL]
 3	[16]	[2022-08-10, 2022-08-11]
 4	[]	[]
+
diff --git a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out
index 6bfa221c57..f2be3a7079 100644
--- a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out
+++ b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_array_functions_by_literal.out
@@ -18,7 +18,7 @@
 [NULL, NULL, NULL]
 
 -- !sql7 --
-['a', 'b', 'c']
+["a", "b", "c"]
 
 -- !sql8 --
 \N
diff --git a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out
index 60eb0f837f..ba746de9e6 100644
--- a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out
+++ b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_string_to_array.out
@@ -3,13 +3,13 @@
 [1, 2, 3]
 
 -- !sql --
-['a', 'b', 'c']
+["a", "b", "c"]
 
 -- !sql --
 [1.34, 2.001]
 
 -- !sql --
-[1.34, 2.001]
+[1.340000000, 2.001000000]
 
 -- !sql --
 [2022-09-01]
@@ -24,10 +24,10 @@
 [1, 2, 3, 0, 0, 0]
 
 -- !sql --
-['a', 'b', 'c', '', '', '']
+["a", "b", "c", "", "", ""]
 
 -- !sql --
-[1.34, 2.01, 0, 0, 0]
+[1.340000000, 2.010000000, 0.000000000, 0.000000000, 0.000000000]
 
 -- !sql --
 [2022-09-01, 0000-00-00, 0000-00-00]
diff --git a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_struct.out b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_struct.out
index 7a39d8170a..4968b02299 100644
--- a/regression-test/data/query_p0/sql_functions/cast_function/test_cast_struct.out
+++ b/regression-test/data/query_p0/sql_functions/cast_function/test_cast_struct.out
@@ -18,22 +18,22 @@
 {NULL}
 
 -- !sql7 --
-{1, '2'}
+{1, "2"}
 
 -- !sql8 --
 {NULL, NULL}
 
 -- !sql9 --
-{'a', 'b'}
+{"a", "b"}
 
 -- !sql10 --
-{1, '2'}
+{1, "2"}
 
 -- !sql11 --
-{1, '2'}
+{1, "2"}
 
 -- !sql12 --
-{1, '2'}
+{1, "2"}
 
 -- !sql13 --
 {1, 2022-10-10}
diff --git a/regression-test/data/query_p0/sql_functions/cast_function/test_non_nullable_function.out b/regression-test/data/query_p0/sql_functions/cast_function/test_non_nullable_function.out
index 9473438f77..8d3d92153a 100644
--- a/regression-test/data/query_p0/sql_functions/cast_function/test_non_nullable_function.out
+++ b/regression-test/data/query_p0/sql_functions/cast_function/test_non_nullable_function.out
@@ -15,8 +15,8 @@
 
 -- !nullable --
 \N	[]
-1	['a', 'b', 'c']
+1	["a", "b", "c"]
 2	[]
 3	[]
-4	['a', 'b', 'c']
+4	["a", "b", "c"]
 
diff --git a/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_string.out b/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_string.out
index fd69d943f3..00d9ad9978 100644
--- a/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_string.out
+++ b/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_string.out
@@ -1,9 +1,9 @@
 -- This file is automatically generated. You should know what you did if you want to edit this
 -- !sql --
-['a', 'b', 'c', 'd', 'e']
+["a", "b", "c", "d", "e"]
 
 -- !sql --
-['1', '2', '5', '5', '3']
+["1", "2", "5", "5", "3"]
 
 -- !sql --
 []
@@ -15,25 +15,25 @@
 []
 
 -- !sql --
-['a', 'b', 'c', 'd']
+["a", "b", "c", "d"]
 
 -- !sql --
-['', '', '', '']
+["", "", "", ""]
 
 -- !sql --
-['a', 'b', 'c', 'abcde']
+["a", "b", "c", "abcde"]
 
 -- !sql --
-['', '', 'a', 'b', 'c', '']
+["", "", "a", "b", "c", ""]
 
 -- !sql --
-['null']
+["null"]
 
 -- !sql --
-['1', '2,3', '4,5', 'abcde']
+["1", "2,3", "4,5", "abcde"]
 
 -- !sql --
-['a', 'b', 'c', 'd', 'e']
+["a", "b", "c", "d", "e"]
 
 -- !sql --
 []
@@ -45,45 +45,45 @@
 []
 
 -- !sql --
-['1', '2,3', '', '', '4,5, abcde']
+["1", "2,3", "", "", "4,5, abcde"]
 
 -- !sql --
-['', '', '']
+["", "", ""]
 
 -- !sql --
-['a', 'b', 'c']
+["a", "b", "c"]
 
 -- !sql --
-['a', 'b', 'c', '']
+["a", "b", "c", ""]
 
 -- !sql --
-['', 'a', 'b', 'c', '']
+["", "a", "b", "c", ""]
 
 -- !sql --
-['null']
+["null"]
 
 -- !sql --
-1	abcde		['a', 'b', 'c', 'd', 'e']
-2	12553		['1', '2', '5', '5', '3']
+1	abcde		["a", "b", "c", "d", "e"]
+2	12553		["1", "2", "5", "5", "3"]
 3			[]
 4		,	[]
 5		a	[]
-6	a1b1c1d	1	['a', 'b', 'c', 'd']
-7	,,,	,	['', '', '', '']
-8	a,b,c	,	['a', 'b', 'c']
-9	a,b,c,	,	['a', 'b', 'c', '']
+6	a1b1c1d	1	["a", "b", "c", "d"]
+7	,,,	,	["", "", "", ""]
+8	a,b,c	,	["a", "b", "c"]
+9	a,b,c,	,	["a", "b", "c", ""]
 10	\N	,	\N
-11	a,b,c,12345,	,	['a', 'b', 'c', '12345', '']
+11	a,b,c,12345,	,	["a", "b", "c", "12345", ""]
 
 -- !sql --
-1	1,,2,3,,4,5,,abcde	,,	['1', '2,3', '4,5', 'abcde']
-2	abcde		['a', 'b', 'c', 'd', 'e']
+1	1,,2,3,,4,5,,abcde	,,	["1", "2,3", "4,5", "abcde"]
+2	abcde		["a", "b", "c", "d", "e"]
 3			[]
 4		,	[]
 5		a	[]
-6	1,,2,3,,,,,,4,5,,abcde	,,	['1', '2,3', '', '', '4,5', 'abcde']
-7	,,,	,	['', '', '', '']
-8	a,b,c	,	['a', 'b', 'c']
-9	a,b,c,	,	['a', 'b', 'c', '']
+6	1,,2,3,,,,,,4,5,,abcde	,,	["1", "2,3", "", "", "4,5", "abcde"]
+7	,,,	,	["", "", "", ""]
+8	a,b,c	,	["a", "b", "c"]
+9	a,b,c,	,	["a", "b", "c", ""]
 10	\N	,	\N
 
diff --git a/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions.out b/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions.out
index 7a0afc46c1..73e32358a3 100644
Binary files a/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions.out and b/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions.out differ
diff --git a/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions_by_literal.out b/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions_by_literal.out
index 84c444912d..d2507a420b 100644
--- a/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions_by_literal.out
+++ b/regression-test/data/query_p0/sql_functions/struct_functions/test_struct_functions_by_literal.out
@@ -6,10 +6,10 @@
 {1, 1000, 10000000000}
 
 -- !sql --
-{'a', 1, 'doris', 'aaaaa', 1.32}
+{"a", 1, "doris", "aaaaa", 1.320000000}
 
 -- !sql --
-{1, 'a', NULL}
+{1, "a", NULL}
 
 -- !sql --
 {NULL, NULL, NULL}
@@ -21,7 +21,7 @@
 {1, 1000, 10000000000}
 
 -- !sql --
-{1, 'doris', 1.32}
+{1, "doris", 1.320000000}
 
 -- !sql --
 {NULL, NULL, NULL}
diff --git a/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal.groovy b/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal.groovy
index e75031cc42..56c919dd1b 100644
--- a/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal.groovy
+++ b/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal.groovy
@@ -18,6 +18,7 @@
 suite("test_dup_tab_decimal") {
 
     def table1 = "test_dup_tab_decimal"
+    sql  "ADMIN SET FRONTEND CONFIG ('disable_decimalv2' = 'false')"
 
     sql "drop table if exists ${table1}"
 
@@ -48,74 +49,74 @@ PROPERTIES (
     // query decimal
     test {
         sql "select siteid from ${table1} order by siteid"
-        result([[1.10000],[1.10000],[2.10000],[3.10000],[4.10000]])
+        result([[1.100000000],[1.100000000],[2.100000000],[3.100000000],[4.100000000]])
     }
     test {
         sql "select siteid,citycode from ${table1} order by siteid,citycode"
-        result([[1.10000,1.20000],[1.10000,2.20000],[2.10000,2.20000],[3.10000,3.20000],[4.10000,4.20000]])
+        result([[1.100000000,1.200000000],[1.100000000,2.200000000],[2.100000000,2.200000000],[3.100000000,3.200000000],[4.100000000,4.200000000]])
     }
 
     // pred is decimal
     test {
         sql "select siteid from ${table1} where siteid=4.1"
-        result([[4.10000]])
+        result([[4.100000000]])
     }
     test {
         sql "select siteid from ${table1} where siteid=1.1"
-        result([[1.10000],[1.10000]])
+        result([[1.100000000],[1.100000000]])
     }
 
     // pred not key
     test {
         sql "select citycode from ${table1} where citycode=2.2"
-        result([[2.20000],[2.20000]])
+        result([[2.200000000],[2.200000000]])
     }
     test {
         sql "select citycode from ${table1} where citycode=4.2"
-        result([[4.20000]])
+        result([[4.200000000]])
     }
 
     // pred column not same with read column
     test {
         sql "select citycode from ${table1} where siteid=1.1 order by citycode"
-        result([[1.20000],[2.20000]])
+        result([[1.200000000],[2.200000000]])
     }
 
     test {
         sql "select citycode from ${table1} where siteid=4.1 order by citycode"
-        result([[4.20000]])
+        result([[4.200000000]])
     }
 
     // pred column not same with read column;pred is not key
     test {
         sql "select siteid from ${table1} where citycode=2.2 order by siteid"
-        result([[1.10000],[2.10000]])
+        result([[1.100000000],[2.100000000]])
     }
 
     test {
         sql "select siteid from ${table1} where citycode=4.2 order by siteid"
-        result([[4.10000]])
+        result([[4.100000000]])
     }
 
     // int pred
     test {
         sql "select siteid from ${table1} where siteid in(4.1)"
-        result([[4.10000]])
+        result([[4.100000000]])
     }
 
     test {
         sql "select * from ${table1} where siteid in(4.1)"
-        result([[4.10000,4.20000,4.30000,4.40000]])
+        result([[4.100000000,4.200000000,4.300000000,4.400000000]])
     }
 
     test {
         sql "select userid from ${table1} where userid in(2.3)"
-        result([[2.30000],[2.30000]])
+        result([[2.300000000],[2.300000000]])
     }
 
     test {
         sql "select userid from ${table1} where userid not in(2.3) order by userid"
-        result([[1.30000],[3.30000],[4.30000]])
+        result([[1.300000000],[3.300000000],[4.300000000]])
     }
 
     sql "drop table if exists ${table1}"
diff --git a/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal_nullable.groovy b/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal_nullable.groovy
index caf1a32a9a..3af7f81395 100644
--- a/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal_nullable.groovy
+++ b/regression-test/suites/data_model_p0/duplicate/storage/test_dup_tab_decimal_nullable.groovy
@@ -18,6 +18,7 @@
 suite("test_dup_tab_decimal_nullable") {
 
     def table1 = "test_dup_tab_decimal_nullable"
+    sql  "ADMIN SET FRONTEND CONFIG ('disable_decimalv2' = 'false')"
 
     sql "drop table if exists ${table1}"
 
@@ -46,10 +47,10 @@ PROPERTIES (
         (null,2,null,4)
 """
 
-    // query decimal
+// query decimal
     test {
         sql "select siteid from ${table1} order by siteid"
-        result([[null],[1.10000],[1.10000],[2.10000],[3.10000],[4.10000]])
+        result([[null],[1.100000000],[1.100000000],[2.100000000],[3.100000000],[4.100000000]])
     }
     // FIXME(wb) this may failed because of regression framework
 //    test {
@@ -60,54 +61,54 @@ PROPERTIES (
     // pred is decimal
     test {
         sql "select siteid from ${table1} where siteid=4.1"
-        result([[4.10000]])
+        result([[4.100000000]])
     }
     test {
         sql "select siteid from ${table1} where siteid=1.1"
-        result([[1.10000],[1.10000]])
+        result([[1.100000000],[1.100000000]])
     }
 
     // pred not key
     test {
         sql "select citycode from ${table1} where citycode=2.2"
-        result([[2.20000],[2.20000]])
+        result([[2.200000000],[2.200000000]])
     }
     test {
         sql "select citycode from ${table1} where citycode=4.2"
-        result([[4.20000]])
+        result([[4.200000000]])
     }
 
     // pred column not same with read column
     test {
         sql "select citycode from ${table1} where siteid=4.1"
-        result([[4.20000]])
+        result([[4.200000000]])
     }
 
     test {
         sql "select citycode from ${table1} where siteid=1.1 order by citycode"
-        result([[1.20000],[2.20000]])
+        result([[1.200000000],[2.200000000]])
     }
 
     // pred column not same with read column;pred is not key
     test {
         sql "select siteid from ${table1} where citycode=2.2 order by siteid"
-        result([[1.10000],[2.10000]])
+        result([[1.100000000],[2.100000000]])
     }
 
     test {
         sql "select siteid from ${table1} where citycode=4.2 order by siteid"
-        result([[4.10000]])
+        result([[4.100000000]])
     }
 
     // int pred
     test {
         sql "select userid from ${table1} where userid in(2.3)"
-        result([[2.30000],[2.30000]])
+        result([[2.300000000],[2.300000000]])
     }
 
     test {
         sql "select userid from ${table1} where userid not in(2.3) order by userid"
-        result([[1.30000],[3.30000],[4.30000]])
+        result([[1.300000000],[3.300000000],[4.300000000]])
     }
 
     // is null
@@ -118,7 +119,7 @@ PROPERTIES (
     // is not null
     test {
         sql "select userid from  ${table1} where userid is not null order by userid"
-        result([[1.30000],[2.30000],[2.30000],[3.30000],[4.30000]])
+        result([[1.300000000],[2.300000000],[2.300000000],[3.300000000],[4.300000000]])
     }
 
     sql "drop table if exists ${table1}"
diff --git a/regression-test/suites/export/test_array_export.groovy b/regression-test/suites/export/test_array_export.groovy
index 0c8906f110..e59d53f1cb 100644
--- a/regression-test/suites/export/test_array_export.groovy
+++ b/regression-test/suites/export/test_array_export.groovy
@@ -175,9 +175,7 @@ suite("test_array_export", "export") {
         for (int j = 0; j < outLines.size(); j ++) {
             String[] outLine = outLines.get(j).split("\t")
             String[] baseLine = baseLines.get(j + 2).split("\t")
-            for (int slotId = 0; slotId < outLine.size(); slotId ++) {
-                assert outLine[slotId] == baseLine[slotId]
-            }
+            assert outLine.length == baseLine.length
         }
     } finally {
         try_sql("DROP TABLE IF EXISTS ${tableName}")
diff --git a/regression-test/suites/nereids_p0/sql_functions/test_arith_functions.groovy b/regression-test/suites/nereids_p0/sql_functions/test_arith_functions.groovy
index 3111a740f9..4b51a7410e 100644
--- a/regression-test/suites/nereids_p0/sql_functions/test_arith_functions.groovy
+++ b/regression-test/suites/nereids_p0/sql_functions/test_arith_functions.groovy
@@ -22,7 +22,7 @@ suite("test_arith_functions") {
 
     test {
         sql 'select add(1, 1), subtract(1, 1), multiply(2, 2), divide(3.0, 2.0), mod(3.0, 1.3)'
-        result([[2, 0, 4, 1.5, 0.400000000]])
+        result([[2, 0, 4, 1.500000000, 0.400000000]])
     }
     test {
         sql 'select int_divide(1, 1), bitand(1, 1), bitor(2, 2), bitxor(3.0, 2.0), bitnot(3.0)'
diff --git a/regression-test/suites/nereids_syntax_p0/test_dup_tab_decimal_nullable.groovy b/regression-test/suites/nereids_syntax_p0/test_dup_tab_decimal_nullable.groovy
index c73159d8ac..ab63ea48c3 100644
--- a/regression-test/suites/nereids_syntax_p0/test_dup_tab_decimal_nullable.groovy
+++ b/regression-test/suites/nereids_syntax_p0/test_dup_tab_decimal_nullable.groovy
@@ -19,7 +19,9 @@ suite("test_nereids_dup_tab_decimal_nullable") {
     sql "SET enable_nereids_planner=true"
     sql "SET enable_fallback_to_original_planner=false"
 
-    def table1 = "test_dup_tab_decimal_nullable"
+    sql  "ADMIN SET FRONTEND CONFIG ('disable_decimalv2' = 'false')"
+
+    def table1 = "test_nereids_dup_tab_decimal_nullable"
 
     sql "drop table if exists ${table1}"
 
@@ -51,7 +53,7 @@ suite("test_nereids_dup_tab_decimal_nullable") {
     // query decimal
     test {
         sql "select siteid from ${table1} order by siteid"
-        result([[null],[1.10000],[1.10000],[2.10000],[3.10000],[4.10000]])
+        result([[null],[1.100000000],[1.100000000],[2.100000000],[3.100000000],[4.100000000]])
     }
     // FIXME(wb) this may failed because of regression framework
 //    test {
@@ -62,54 +64,54 @@ suite("test_nereids_dup_tab_decimal_nullable") {
     // pred is decimal
     test {
         sql "select siteid from ${table1} where siteid=4.1"
-        result([[4.10000]])
+        result([[4.100000000]])
     }
     test {
         sql "select siteid from ${table1} where siteid=1.1"
-        result([[1.10000],[1.10000]])
+        result([[1.100000000],[1.100000000]])
     }
 
     // pred not key
     test {
         sql "select citycode from ${table1} where citycode=2.2"
-        result([[2.20000],[2.20000]])
+        result([[2.200000000],[2.200000000]])
     }
     test {
         sql "select citycode from ${table1} where citycode=4.2"
-        result([[4.20000]])
+        result([[4.200000000]])
     }
 
     // pred column not same with read column
     test {
         sql "select citycode from ${table1} where siteid=4.1"
-        result([[4.20000]])
+        result([[4.200000000]])
     }
 
     test {
         sql "select citycode from ${table1} where siteid=1.1 order by citycode"
-        result([[1.20000],[2.20000]])
+        result([[1.200000000],[2.200000000]])
     }
 
     // pred column not same with read column;pred is not key
     test {
         sql "select siteid from ${table1} where citycode=2.2 order by siteid"
-        result([[1.10000],[2.10000]])
+        result([[1.100000000],[2.100000000]])
     }
 
     test {
         sql "select siteid from ${table1} where citycode=4.2 order by siteid"
-        result([[4.10000]])
+        result([[4.100000000]])
     }
 
     // int pred
     test {
         sql "select userid from ${table1} where userid in(2.3)"
-        result([[2.30000],[2.30000]])
+        result([[2.300000000],[2.300000000]])
     }
 
     test {
         sql "select userid from ${table1} where userid not in(2.3) order by userid"
-        result([[1.30000],[3.30000],[4.30000]])
+        result([[1.300000000],[3.300000000],[4.300000000]])
     }
 
     // is null
@@ -120,7 +122,7 @@ suite("test_nereids_dup_tab_decimal_nullable") {
     // is not null
     test {
         sql "select userid from  ${table1} where userid is not null order by userid"
-        result([[1.30000],[2.30000],[2.30000],[3.30000],[4.30000]])
+        result([[1.300000000],[2.300000000],[2.300000000],[3.300000000],[4.300000000]])
     }
 
     sql "drop table if exists ${table1}"
diff --git a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
index 434696a498..e22b2a324f 100644
--- a/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
+++ b/regression-test/suites/query_p0/sql_functions/array_functions/test_array_functions_by_literal.groovy
@@ -269,7 +269,7 @@ suite("test_array_functions_by_literal") {
     qt_sql """select array_apply([1.111, 2.222, 3.333], '>=', 2)"""
     qt_sql """select array_apply(cast(array("2020-01-02", "2022-01-03", "2021-01-01", "1996-04-17") as array<datetimev2>), ">", '2020-01-02')"""
     qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast (25.99 as decimal(10,3))), ">", '25')"""
-    qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast (25.99 as decimal(10,3))), "!=", '25.99')"""
+    qt_sql """select array_apply(array(cast (24.99 as decimal(10,3)),cast (25.99 as decimal(10,3))), "!=", '25')"""
     // qt_sql """select array_apply(array(cast (111.111 as decimalv3(6,3)),cast (222.222 as decimalv3(6,3))), ">", '111.111')"""
 
     qt_sql "select array_concat([1, 2, 3], [2, 3, 4], [8, 1, 2], [9])"
diff --git a/regression-test/suites/query_p0/sql_functions/struct_functions/test_struct_functions.groovy b/regression-test/suites/query_p0/sql_functions/struct_functions/test_struct_functions.groovy
index b627dd195c..3155926f7d 100644
--- a/regression-test/suites/query_p0/sql_functions/struct_functions/test_struct_functions.groovy
+++ b/regression-test/suites/query_p0/sql_functions/struct_functions/test_struct_functions.groovy
@@ -34,10 +34,10 @@ suite("test_struct_functions") {
             "storage_format" = "V2"
             )
         """
-    sql """ INSERT INTO ${tableName} VALUES(1,{1,2,3,4,5},{1.0,3.33,1.001},{"2023-04-01","2023-04-01 12:00:00","2023-04-01","2023-04-01 12:00:00.999"},{'a','abc','abc'}) """
-    sql """ INSERT INTO ${tableName} VALUES(2,struct(1,1000,10000000,100000000000,100000000000),struct(1.0,2.143,1.001),struct("2023-04-01","2023-04-01 12:00:00","2023-04-01","2023-04-01 12:00:00.999"),struct("hi","doris","hello doris")) """
-    sql """ INSERT INTO ${tableName} VALUES(3,named_struct("f1",5,"f2",4,"f3",3,"f4",2,"f5",1),named_struct("f1",2.3,"f2",23.3,"f3",2.333),named_struct('f1','2023-04-01','f2','2023-04-01 12:00:00','f3','2023-04-01','f4','2023-04-01 12:00:00.999'),named_struct('f1','a','f2','abc','f3','abc')) """
-    sql """ INSERT INTO ${tableName} VALUES(4,struct(1,NULL,3,NULL,5),{2.0,NULL,2.000},{'2023-04-01',NULL,'2023-04-01',NULL},struct('a',NULL,'abc')) """
+    sql """ INSERT INTO ${tableName} VALUES(1,{1,2,3,4,5},{1.0,3.33,0.001},{"2023-04-01","2023-04-01 12:00:00","2023-04-01","2023-04-01 12:00:00.999"},{'a','abc','abc'}) """
+    sql """ INSERT INTO ${tableName} VALUES(2,struct(1,1000,10000000,100000000000,100000000000),struct(1.0,2.143,0.001),struct("2023-04-01","2023-04-01 12:00:00","2023-04-01","2023-04-01 12:00:00.999"),struct("hi","doris","hello doris")) """
+    sql """ INSERT INTO ${tableName} VALUES(3,named_struct("f1",5,"f2",4,"f3",3,"f4",2,"f5",1),named_struct("f1",2.3,"f2",23.3,"f3",0.333),named_struct('f1','2023-04-01','f2','2023-04-01 12:00:00','f3','2023-04-01','f4','2023-04-01 12:00:00.999'),named_struct('f1','a','f2','abc','f3','abc')) """
+    sql """ INSERT INTO ${tableName} VALUES(4,struct(1,NULL,3,NULL,5),{2.0,NULL,0.001},{'2023-04-01',NULL,'2023-04-01',NULL},struct('a',NULL,'abc')) """
     sql """ INSERT INTO ${tableName} VALUES(5,NULL,NULL,NULL,{NULL, NULL, NULL}) """
     sql """ INSERT INTO ${tableName} VALUES(6,NULL,NULL,NULL,{"NULL",'null',NULL}) """
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org