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