This is an automated email from the ASF dual-hosted git repository.
panxiaolei 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 8d85f5bf7a4 [chore](SerDe) remove date_olap_format in FormatOptions
(#51260)
8d85f5bf7a4 is described below
commit 8d85f5bf7a4ec1cda566c8cd79b2277c9412374d
Author: Mryange <[email protected]>
AuthorDate: Tue Jun 10 09:01:21 2025 +0800
[chore](SerDe) remove date_olap_format in FormatOptions (#51260)
remove date_olap_format in FormatOptions
---
.../data_types/serde/data_type_date64_serde.cpp | 70 ++++------------------
.../serde/data_type_datetimev2_serde.cpp | 31 ++--------
.../data_types/serde/data_type_datev2_serde.cpp | 10 +---
be/src/vec/data_types/serde/data_type_serde.h | 5 --
.../serde/data_type_serde_agg_state_test.cpp | 6 --
.../serde/data_type_serde_bitmap_test.cpp | 2 -
.../data_types/serde/data_type_serde_csv_test.cpp | 53 +++++++++-------
.../data_type_serde_fixed_length_object_test.cpp | 3 -
.../data_types/serde/data_type_serde_hll_test.cpp | 2 -
.../serde/data_type_serde_quantile_state_test.cpp | 2 -
.../data_types/serde/data_type_serde_text_test.cpp | 53 +++++++++-------
11 files changed, 79 insertions(+), 158 deletions(-)
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 27834c656fa..9ac37d20755 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
@@ -43,23 +43,11 @@ Status DataTypeDate64SerDe<T>::serialize_one_cell_to_json(
bw.write('"');
}
Int64 int_val = assert_cast<const
ColumnVector<T>&>(*ptr).get_element(row_num);
- if (options.date_olap_format) {
- tm time_tm;
- memset(&time_tm, 0, sizeof(time_tm));
- time_tm.tm_mday = static_cast<int>(int_val & 31);
- time_tm.tm_mon = static_cast<int>(int_val >> 5 & 15) - 1;
- time_tm.tm_year = static_cast<int>(int_val >> 9) - 1900;
- char buf[20] = {'\0'};
- strftime(buf, sizeof(buf), "%Y-%m-%d", &time_tm);
- std::string s = std::string(buf);
- bw.write(s.c_str(), s.length());
- } else {
- doris::VecDateTimeValue value = binary_cast<Int64,
doris::VecDateTimeValue>(int_val);
+ doris::VecDateTimeValue value = binary_cast<Int64,
doris::VecDateTimeValue>(int_val);
- char buf[64];
- char* pos = value.to_string(buf);
- bw.write(buf, pos - buf - 1);
- }
+ char buf[64];
+ char* pos = value.to_string(buf);
+ bw.write(buf, pos - buf - 1);
if (DataTypeNumberSerDe<T>::_nesting_level > 1) {
bw.write('"');
}
@@ -83,16 +71,7 @@ Status
DataTypeDate64SerDe<T>::deserialize_one_cell_from_json(
slice.trim_quote();
}
Int64 val = 0;
- if (options.date_olap_format) {
- tm time_tm;
- char* res = strptime(slice.data, "%Y-%m-%d", &time_tm);
- if (nullptr != res) {
- val = (time_tm.tm_year + 1900) * 16 * 32 + (time_tm.tm_mon + 1) *
32 + time_tm.tm_mday;
- } else {
- // 1400 - 01 - 01
- val = 716833;
- }
- } else if (ReadBuffer rb(slice.data, slice.size);
!read_date_text_impl<Int64>(val, rb)) {
+ if (ReadBuffer rb(slice.data, slice.size);
!read_date_text_impl<Int64>(val, rb)) {
return Status::InvalidArgument("parse date fail, string: '{}'",
std::string(rb.position(),
rb.count()).c_str());
}
@@ -113,28 +92,11 @@ Status
DataTypeDateTimeSerDe::serialize_one_cell_to_json(const IColumn& column,
row_num = result.second;
Int64 int_val = assert_cast<const
ColumnDateTime&>(*ptr).get_element(row_num);
- if (options.date_olap_format) {
- tm time_tm;
- int64 part1 = (int_val / 1000000L);
- int64 part2 = (int_val - part1 * 1000000L);
- time_tm.tm_year = static_cast<int>((part1 / 10000L) % 10000) - 1900;
- time_tm.tm_mon = static_cast<int>((part1 / 100) % 100) - 1;
- time_tm.tm_mday = static_cast<int>(part1 % 100);
-
- time_tm.tm_hour = static_cast<int>((part2 / 10000L) % 10000);
- time_tm.tm_min = static_cast<int>((part2 / 100) % 100);
- time_tm.tm_sec = static_cast<int>(part2 % 100);
- char buf[20] = {'\0'};
- strftime(buf, 20, "%Y-%m-%d %H:%M:%S", &time_tm);
- std::string s = std::string(buf);
- bw.write(s.c_str(), s.length());
- } else {
- doris::VecDateTimeValue value = binary_cast<Int64,
doris::VecDateTimeValue>(int_val);
+ doris::VecDateTimeValue value = binary_cast<Int64,
doris::VecDateTimeValue>(int_val);
- char buf[64];
- char* pos = value.to_string(buf);
- bw.write(buf, pos - buf - 1);
- }
+ char buf[64];
+ char* pos = value.to_string(buf);
+ bw.write(buf, pos - buf - 1);
return Status::OK();
}
@@ -149,19 +111,7 @@ Status
DataTypeDateTimeSerDe::deserialize_one_cell_from_json(IColumn& column, Sl
const
FormatOptions& options) const {
auto& column_data = assert_cast<ColumnDateTime&>(column);
Int64 val = 0;
- if (options.date_olap_format) {
- tm time_tm;
- char* res = strptime(slice.data, "%Y-%m-%d %H:%M:%S", &time_tm);
- if (nullptr != res) {
- val = ((time_tm.tm_year + 1900) * 10000L + (time_tm.tm_mon + 1) *
100L +
- time_tm.tm_mday) *
- 1000000L +
- time_tm.tm_hour * 10000L + time_tm.tm_min * 100L +
time_tm.tm_sec;
- } else {
- // 1400 - 01 - 01
- val = 14000101000000L;
- }
- } else if (ReadBuffer rb(slice.data, slice.size);
!read_datetime_text_impl<Int64>(val, rb)) {
+ if (ReadBuffer rb(slice.data, slice.size);
!read_datetime_text_impl<Int64>(val, rb)) {
return Status::InvalidArgument("parse datetime fail, string: '{}'",
std::string(rb.position(),
rb.count()).c_str());
}
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 fcf9dbc0651..06bd9635f95 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
@@ -57,18 +57,10 @@ Status
DataTypeDateTimeV2SerDe::serialize_one_cell_to_json(const IColumn& column
DateV2Value<DateTimeV2ValueType> val =
binary_cast<UInt64, DateV2Value<DateTimeV2ValueType>>(int_val);
- if (options.date_olap_format) {
- std::string format = "%Y-%m-%d %H:%i:%s.%f";
- char buf[30 + SAFE_FORMAT_STRING_MARGIN];
- val.to_format_string_conservative(format.c_str(),
cast_set<int>(format.size()), buf,
- 30 + SAFE_FORMAT_STRING_MARGIN);
- std::string s = std::string(buf);
- bw.write(s.c_str(), s.length());
- } else {
- char buf[64];
- char* pos = val.to_string(buf);
- bw.write(buf, pos - buf - 1);
- }
+ char buf[64];
+ char* pos = val.to_string(buf);
+ bw.write(buf, pos - buf - 1);
+
if (_nesting_level > 1) {
bw.write('"');
}
@@ -88,19 +80,8 @@ Status
DataTypeDateTimeV2SerDe::deserialize_one_cell_from_json(IColumn& column,
slice.trim_quote();
}
UInt64 val = 0;
- if (options.date_olap_format) {
- DateV2Value<DateTimeV2ValueType> datetimev2_value;
- std::string date_format = "%Y-%m-%d %H:%i:%s.%f";
- if (datetimev2_value.from_date_format_str(date_format.data(),
-
cast_set<int>(date_format.size()), slice.data,
- slice.size)) {
- val = datetimev2_value.to_date_int_val();
- } else {
- val = MIN_DATETIME_V2;
- }
-
- } else if (ReadBuffer rb(slice.data, slice.size);
- !read_datetime_v2_text_impl<UInt64>(val, rb, scale)) {
+ if (ReadBuffer rb(slice.data, slice.size);
+ !read_datetime_v2_text_impl<UInt64>(val, rb, scale)) {
return Status::InvalidArgument("parse date fail, string: '{}'",
std::string(rb.position(),
rb.count()).c_str());
}
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 ac2e8943038..381c8c1764a 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
@@ -75,15 +75,7 @@ Status
DataTypeDateV2SerDe::deserialize_one_cell_from_json(IColumn& column, Slic
}
auto& column_data = assert_cast<ColumnDateV2&>(column);
UInt32 val = 0;
- if (options.date_olap_format) {
- tm time_tm;
- char* res = strptime(slice.data, "%Y-%m-%d", &time_tm);
- if (nullptr != res) {
- val = ((time_tm.tm_year + 1900) << 9) | ((time_tm.tm_mon + 1) <<
5) | time_tm.tm_mday;
- } else {
- val = MIN_DATE_V2;
- }
- } else if (ReadBuffer rb(slice.data, slice.size);
!read_date_v2_text_impl<UInt32>(val, rb)) {
+ if (ReadBuffer rb(slice.data, slice.size);
!read_date_v2_text_impl<UInt32>(val, rb)) {
return Status::InvalidArgument("parse date fail, string: '{}'",
std::string(rb.position(),
rb.count()).c_str());
}
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 ae3c0426c70..75915b2dcc8 100644
--- a/be/src/vec/data_types/serde/data_type_serde.h
+++ b/be/src/vec/data_types/serde/data_type_serde.h
@@ -127,11 +127,6 @@ public:
// Text serialization/deserialization of data types depend on some
settings witch we define
// in formatOptions.
struct FormatOptions {
- /**
- * if true, we will use olap format which defined in src/olap/types.h,
but we do not suggest
- * use this format in olap, because it is more slower, keep this
option is for compatibility.
- */
- bool date_olap_format = false;
/**
* field delimiter is used to separate fields in one row
*/
diff --git a/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
index 981d94f42d6..6e9a03edf3a 100644
--- a/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
@@ -209,7 +209,6 @@ TEST_F(AggStateSerdeTest, serializeOneCellToJson) {
*((int64_t*)&(column_fixed_length->get_data()[column_fixed_length->item_size()]))
= 22;
ASSERT_EQ(column_fixed_length->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = datatype_agg_state_serde_count->serialize_one_cell_to_json(
@@ -249,7 +248,6 @@ TEST_F(AggStateSerdeTest, serializeOneCellToJson2) {
column_string->insert_data(str2.c_str(), str2.size());
ASSERT_EQ(column_string->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = datatype_agg_state_serde_hll_union->serialize_one_cell_to_json(
@@ -288,7 +286,6 @@ TEST_F(AggStateSerdeTest, serializeColumnToJson) {
*((int64_t*)&(column_fixed_length->get_data()[column_fixed_length->item_size()]))
= 22;
ASSERT_EQ(column_fixed_length->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = datatype_agg_state_serde_count->serialize_column_to_json(
@@ -326,7 +323,6 @@ TEST_F(AggStateSerdeTest, serializeColumnToJson2) {
std::cout << "asd " << column_string->get_data_at(0).to_string() <<
std::endl;
ASSERT_EQ(column_string->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = datatype_agg_state_serde_hll_union->serialize_column_to_json(
@@ -365,7 +361,6 @@ TEST_F(AggStateSerdeTest, serializeOneCellToHiveText) {
*((int64_t*)&(column_fixed_length->get_data()[column_fixed_length->item_size()]))
= 22;
ASSERT_EQ(column_fixed_length->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = datatype_agg_state_serde_count->serialize_one_cell_to_hive_text(
@@ -406,7 +401,6 @@ TEST_F(AggStateSerdeTest, serializeOneCellToHiveText2) {
column_string->insert_data(str2.c_str(), str2.size());
ASSERT_EQ(column_string->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st =
datatype_agg_state_serde_hll_union->serialize_one_cell_to_hive_text(
diff --git a/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
index 9d409bb2d80..ecfc34d1986 100644
--- a/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
@@ -110,7 +110,6 @@ TEST(BitmapSerdeTest, serializeOneCellToJson) {
column_bitmap->insert_value(BitmapValue(123));
ASSERT_EQ(column_bitmap->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = bitmap_serde->serialize_one_cell_to_json(*column_bitmap, 0,
buffer_writer,
@@ -153,7 +152,6 @@ TEST(BitmapSerdeTest, serializeColumnToJson) {
column_bitmap->insert_value(BitmapValue(123));
ASSERT_EQ(column_bitmap->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = bitmap_serde->serialize_column_to_json(*column_bitmap, 0, 2,
buffer_writer,
diff --git a/be/test/vec/data_types/serde/data_type_serde_csv_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_csv_test.cpp
index 08f41822dbb..6432f5866e9 100644
--- a/be/test/vec/data_types/serde/data_type_serde_csv_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_csv_test.cpp
@@ -181,32 +181,42 @@ TEST(CsvSerde, ScalaDataTypeSerdeCsvTest) {
// date and datetime type
{
- typedef std::pair<FieldType, string> FieldType_RandStr;
- std::vector<FieldType_RandStr> date_scala_field_types = {
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATE,
"2020-01-01"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATE,
"2020-01-01"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATEV2,
"2020-01-01"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATETIME,
"2020-01-01 12:00:00"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATETIMEV2,
- "2020-01-01 12:00:00.666666"),
+ struct DataTestField {
+ FieldType type;
+ string str;
+ string max_str;
+ string min_str;
+ };
+ std::vector<DataTestField> date_scala_field_types = {
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATE,
+ .str = "2020-01-01",
+ .max_str = "9999-12-31",
+ .min_str = "0001-01-01"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATE,
+ .str = "2020-01-01",
+ .max_str = "9999-12-31",
+ .min_str = "0001-01-01"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATEV2,
+ .str = "2020-01-01",
+ .max_str = "9999-12-31",
+ .min_str = "0001-01-01"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATETIME,
+ .str = "2020-01-01 12:00:00",
+ .max_str = "9999-12-31 23:59:59",
+ .min_str = "0001-01-01 00:00:00"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATETIMEV2,
+ .str = "2020-01-01 12:00:00",
+ .max_str = "9999-12-31 23:59:59",
+ .min_str = "0001-01-01 00:00:00"},
};
for (auto pair : date_scala_field_types) {
- auto type = pair.first;
+ auto type = pair.type;
DataTypePtr data_type_ptr =
DataTypeFactory::instance().create_data_type(type, 0, 0);
std::cout << "========= This type is " <<
data_type_ptr->get_name() << ": "
<< fmt::format("{}", type) << std::endl;
-
- std::unique_ptr<WrapperField>
min_wf(WrapperField::create_by_type(type));
- std::unique_ptr<WrapperField>
max_wf(WrapperField::create_by_type(type));
- std::unique_ptr<WrapperField>
rand_wf(WrapperField::create_by_type(type));
-
- min_wf->set_to_min();
- max_wf->set_to_max();
- EXPECT_EQ(rand_wf->from_string(pair.second, 0, 0).ok(), true);
-
- string min_s = min_wf->to_string();
- string max_s = max_wf->to_string();
- string rand_date = rand_wf->to_string();
+ string min_s = pair.min_str;
+ string max_s = pair.max_str;
+ string rand_date = pair.str;
Slice min_rb(min_s.data(), min_s.size());
Slice max_rb(max_s.data(), max_s.size());
@@ -216,7 +226,6 @@ TEST(CsvSerde, ScalaDataTypeSerdeCsvTest) {
DataTypeSerDeSPtr serde = data_type_ptr->get_serde();
// make use c++ lib equals to wrapper field from_string behavior
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
Status st = serde->deserialize_one_cell_from_json(*col, min_rb,
formatOptions);
EXPECT_EQ(st.ok(), true);
diff --git
a/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
index 4836b8a12c3..d12310bb3e7 100644
--- a/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
@@ -115,7 +115,6 @@ TEST(FixedLengthObjectSerdeTest, serializeOneCellToJson) {
*((int64_t*)&(column_fixed_length->get_data()[column_fixed_length->item_size()]))
= 22;
ASSERT_EQ(column_fixed_length->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st =
fixed_length_serde->serialize_one_cell_to_json(*column_fixed_length, 0,
buffer_writer,
@@ -155,7 +154,6 @@ TEST(FixedLengthObjectSerdeTest, serializeColumnToJson) {
*((int64_t*)&(column_fixed_length->get_data()[column_fixed_length->item_size()]))
= 22;
ASSERT_EQ(column_fixed_length->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st =
fixed_length_serde->serialize_column_to_json(*column_fixed_length, 0, 2,
@@ -192,7 +190,6 @@ TEST(FixedLengthObjectSerdeTest,
serializeOneCellToHiveText) {
*((int64_t*)&(column_fixed_length->get_data()[column_fixed_length->item_size()]))
= 22;
ASSERT_EQ(column_fixed_length->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st =
fixed_length_serde->serialize_one_cell_to_hive_text(*column_fixed_length, 0,
diff --git a/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
index e10ccc3cf5d..8dce9df7272 100644
--- a/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
@@ -118,7 +118,6 @@ TEST(HLLSerdeTest, serializeOneCellToJson) {
column_hll->insert_value(hll);
ASSERT_EQ(column_hll->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = hll_serde->serialize_one_cell_to_json(*column_hll, 0,
buffer_writer, formatOptions);
@@ -164,7 +163,6 @@ TEST(HLLSerdeTest, serializeColumnToJson) {
column_hll->insert_value(hll);
ASSERT_EQ(column_hll->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st = hll_serde->serialize_column_to_json(*column_hll, 0, 2,
buffer_writer, formatOptions);
diff --git
a/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
index 7e7909da792..44681eee8bc 100644
--- a/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
@@ -119,7 +119,6 @@ TEST(QuantileStateSerdeTest, serializeOneCellToJson) {
column_quantile_state->insert_value(quantile_state);
ASSERT_EQ(column_quantile_state->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st =
quantile_state_serde->serialize_one_cell_to_json(*column_quantile_state, 0,
@@ -143,7 +142,6 @@ TEST(QuantileStateSerdeTest, serializeColumnToJson) {
column_quantile_state->insert_value(quantile_state);
ASSERT_EQ(column_quantile_state->size(), 2);
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
auto ser_col = ColumnString::create();
VectorBufferWriter buffer_writer(*ser_col.get());
auto st =
quantile_state_serde->serialize_column_to_json(*column_quantile_state, 0, 2,
diff --git a/be/test/vec/data_types/serde/data_type_serde_text_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_text_test.cpp
index e2e4c61284e..91882e78dbb 100644
--- a/be/test/vec/data_types/serde/data_type_serde_text_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_text_test.cpp
@@ -178,32 +178,42 @@ TEST(TextSerde, ScalaDataTypeSerdeTextTest) {
// date and datetime type
{
- typedef std::pair<FieldType, string> FieldType_RandStr;
- std::vector<FieldType_RandStr> date_scala_field_types = {
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATE,
"2020-01-01"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATE,
"2020-01-01"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATEV2,
"2020-01-01"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATETIME,
"2020-01-01 12:00:00"),
- FieldType_RandStr(FieldType::OLAP_FIELD_TYPE_DATETIMEV2,
- "2020-01-01 12:00:00.666666"),
+ struct DataTestField {
+ FieldType type;
+ string str;
+ string max_str;
+ string min_str;
+ };
+ std::vector<DataTestField> date_scala_field_types = {
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATE,
+ .str = "2020-01-01",
+ .max_str = "9999-12-31",
+ .min_str = "0001-01-01"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATE,
+ .str = "2020-01-01",
+ .max_str = "9999-12-31",
+ .min_str = "0001-01-01"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATEV2,
+ .str = "2020-01-01",
+ .max_str = "9999-12-31",
+ .min_str = "0001-01-01"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATETIME,
+ .str = "2020-01-01 12:00:00",
+ .max_str = "9999-12-31 23:59:59",
+ .min_str = "0001-01-01 00:00:00"},
+ DataTestField {.type = FieldType::OLAP_FIELD_TYPE_DATETIMEV2,
+ .str = "2020-01-01 12:00:00",
+ .max_str = "9999-12-31 23:59:59",
+ .min_str = "0001-01-01 00:00:00"},
};
for (auto pair : date_scala_field_types) {
- auto type = pair.first;
+ auto type = pair.type;
DataTypePtr data_type_ptr =
DataTypeFactory::instance().create_data_type(type, 0, 0);
std::cout << "========= This type is " <<
data_type_ptr->get_name() << ": "
<< fmt::format("{}", type) << std::endl;
-
- std::unique_ptr<WrapperField>
min_wf(WrapperField::create_by_type(type));
- std::unique_ptr<WrapperField>
max_wf(WrapperField::create_by_type(type));
- std::unique_ptr<WrapperField>
rand_wf(WrapperField::create_by_type(type));
-
- min_wf->set_to_min();
- max_wf->set_to_max();
- static_cast<void>(rand_wf->from_string(pair.second, 0, 0));
-
- string min_s = min_wf->to_string();
- string max_s = max_wf->to_string();
- string rand_date = rand_wf->to_string();
+ string min_s = pair.min_str;
+ string max_s = pair.max_str;
+ string rand_date = pair.str;
Slice min_rb(min_s.data(), min_s.size());
Slice max_rb(max_s.data(), max_s.size());
@@ -213,7 +223,6 @@ TEST(TextSerde, ScalaDataTypeSerdeTextTest) {
DataTypeSerDeSPtr serde = data_type_ptr->get_serde();
// make use c++ lib equals to wrapper field from_string behavior
DataTypeSerDe::FormatOptions formatOptions;
- formatOptions.date_olap_format = true;
Status st = serde->deserialize_one_cell_from_json(*col, min_rb,
formatOptions);
EXPECT_EQ(st.ok(), true);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]