From d7a3ff1ddf3f2524e188f18b6f573a8a899e12cb Mon Sep 17 00:00:00 2001 From: Tiewei Fang <43782773+BePPPower@users.noreply.github.com> Date: Thu, 21 Mar 2024 14:59:21 +0800 Subject: [PATCH] [Fix](Outfile) Fix the column type mapping in the orc/parquet file format (#32281) | Doris Type | Orc Type | Parquet Type | |---------------------|--------------------|------------------------| | Date | Long (logical: DATE) | int32 (Logical: Date) | | DateTime | TIMESTAMP (logical: TIMESTAMP) | int96 | --- be/src/util/arrow/block_convertor.cpp | 27 +- be/src/util/arrow/block_convertor.h | 5 +- be/src/util/arrow/row_batch.cpp | 14 +- .../serde/data_type_array_serde.cpp | 4 +- .../data_types/serde/data_type_array_serde.h | 4 +- .../data_types/serde/data_type_bitmap_serde.h | 4 +- .../serde/data_type_date64_serde.cpp | 2 +- .../data_types/serde/data_type_date64_serde.h | 4 +- .../serde/data_type_datetimev2_serde.cpp | 26 +- .../serde/data_type_datetimev2_serde.h | 4 +- .../serde/data_type_datev2_serde.cpp | 56 +-- .../data_types/serde/data_type_datev2_serde.h | 4 +- .../serde/data_type_decimal_serde.cpp | 2 +- .../serde/data_type_decimal_serde.h | 4 +- .../data_types/serde/data_type_hll_serde.cpp | 4 +- .../data_types/serde/data_type_hll_serde.h | 4 +- .../serde/data_type_jsonb_serde.cpp | 2 +- .../data_types/serde/data_type_jsonb_serde.h | 4 +- .../data_types/serde/data_type_map_serde.cpp | 12 +- .../data_types/serde/data_type_map_serde.h | 4 +- .../serde/data_type_nullable_serde.cpp | 4 +- .../serde/data_type_nullable_serde.h | 4 +- .../serde/data_type_number_serde.cpp | 2 +- .../data_types/serde/data_type_number_serde.h | 4 +- .../data_types/serde/data_type_object_serde.h | 4 +- .../serde/data_type_quantilestate_serde.h | 4 +- be/src/vec/data_types/serde/data_type_serde.h | 4 +- .../data_types/serde/data_type_string_serde.h | 4 +- .../serde/data_type_struct_serde.cpp | 4 +- .../data_types/serde/data_type_struct_serde.h | 4 +- be/src/vec/runtime/vparquet_transformer.cpp | 10 +- .../vec/sink/varrow_flight_result_writer.cpp | 3 +- be/src/vec/sink/varrow_flight_result_writer.h | 3 + be/src/vec/sink/vmemory_scratch_sink.cpp | 3 +- be/src/vec/sink/vmemory_scratch_sink.h | 4 +- .../serde/data_type_serde_arrow_test.cpp | 12 +- .../apache/doris/analysis/OutFileClause.java | 88 +++-- .../export_p0/export/test_show_export.out | 300 +++++++-------- .../test_outfile_expr_generate_col_name.out | 4 +- .../test_outfile_parquet_array_type.out | 8 +- .../test_outfile_parquet_complex_type.out | 20 +- .../parquet/test_outfile_parquet_map_type.out | 28 +- .../data/export_p0/test_export_data_types.out | 24 +- .../data/export_p0/test_export_orc.out | 200 +++++----- .../data/export_p0/test_export_parquet.out | 200 +++++----- .../hive_read/orc/test_hive_read_orc.out | 2 +- .../parquet/test_hive_read_parquet.out | 16 +- .../test_hive_read_parquet_comlex_type.out | 40 +- .../test_outfile_parquet_map_type.groovy | 55 +-- .../export_p0/test_export_data_types.groovy | 348 +++++------------- .../suites/export_p0/test_export_orc.groovy | 147 ++------ .../hive_read/orc/test_hive_read_orc.groovy | 12 +- .../parquet/test_hive_read_parquet.groovy | 12 +- .../test_hive_read_parquet_comlex_type.groovy | 2 +- 54 files changed, 743 insertions(+), 1026 deletions(-) diff --git a/be/src/util/arrow/block_convertor.cpp b/be/src/util/arrow/block_convertor.cpp index 009306d425..817231e02b 100644 --- a/be/src/util/arrow/block_convertor.cpp +++ b/be/src/util/arrow/block_convertor.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -71,16 +72,12 @@ namespace doris { class FromBlockConverter : public arrow::TypeVisitor { public: FromBlockConverter(const vectorized::Block& block, const std::shared_ptr& schema, - arrow::MemoryPool* pool) - : _block(block), _schema(schema), _pool(pool), _cur_field_idx(-1) { - // obtain local time zone - time_t ts = 0; - struct tm t; - char buf[16]; - localtime_r(&ts, &t); - strftime(buf, sizeof(buf), "%Z", &t); - _time_zone = buf; - } + arrow::MemoryPool* pool, const cctz::time_zone& timezone_obj) + : _block(block), + _schema(schema), + _pool(pool), + _cur_field_idx(-1), + _timezone_obj(timezone_obj) {} ~FromBlockConverter() override = default; @@ -363,7 +360,7 @@ private: vectorized::DataTypePtr _cur_type; arrow::ArrayBuilder* _cur_builder = nullptr; - std::string _time_zone; + const cctz::time_zone& _timezone_obj; std::vector> _arrays; }; @@ -391,7 +388,8 @@ Status FromBlockConverter::convert(std::shared_ptr* out) { auto column = _cur_col->convert_to_full_column_if_const(); try { _cur_type->get_serde()->write_column_to_arrow(*column, nullptr, _cur_builder, - _cur_start, _cur_start + _cur_rows); + _cur_start, _cur_start + _cur_rows, + _timezone_obj); } catch (std::exception& e) { return Status::InternalError("Fail to convert block data to arrow data, error: {}", e.what()); @@ -407,8 +405,9 @@ Status FromBlockConverter::convert(std::shared_ptr* out) { Status convert_to_arrow_batch(const vectorized::Block& block, const std::shared_ptr& schema, arrow::MemoryPool* pool, - std::shared_ptr* result) { - FromBlockConverter converter(block, schema, pool); + std::shared_ptr* result, + const cctz::time_zone& timezone_obj) { + FromBlockConverter converter(block, schema, pool, timezone_obj); return converter.convert(result); } diff --git a/be/src/util/arrow/block_convertor.h b/be/src/util/arrow/block_convertor.h index 9fb710fc75..6c3163b05d 100644 --- a/be/src/util/arrow/block_convertor.h +++ b/be/src/util/arrow/block_convertor.h @@ -17,6 +17,8 @@ #pragma once +#include + #include #include "common/status.h" @@ -38,6 +40,7 @@ namespace doris { Status convert_to_arrow_batch(const vectorized::Block& block, const std::shared_ptr& schema, arrow::MemoryPool* pool, - std::shared_ptr* result); + std::shared_ptr* result, + const cctz::time_zone& timezone_obj); } // namespace doris diff --git a/be/src/util/arrow/row_batch.cpp b/be/src/util/arrow/row_batch.cpp index a010b58b72..439572f75e 100644 --- a/be/src/util/arrow/row_batch.cpp +++ b/be/src/util/arrow/row_batch.cpp @@ -78,13 +78,23 @@ Status convert_to_arrow_type(const TypeDescriptor& type, std::shared_ptr(); + break; + case TYPE_DATETIMEV2: + if (type.scale > 3) { + *result = std::make_shared(arrow::TimeUnit::MICRO); + } else if (type.scale > 0) { + *result = std::make_shared(arrow::TimeUnit::MILLI); + } else { + *result = std::make_shared(arrow::TimeUnit::SECOND); + } + break; case TYPE_DECIMALV2: *result = std::make_shared(27, 9); break; 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 97b1154c2c..38fe92d468 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 @@ -269,7 +269,7 @@ void DataTypeArraySerDe::read_one_cell_from_jsonb(IColumn& column, const JsonbVa void DataTypeArraySerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { + int end, const cctz::time_zone& ctz) const { auto& array_column = static_cast(column); auto& offsets = array_column.get_offsets(); auto& nested_data = array_column.get_data(); @@ -283,7 +283,7 @@ void DataTypeArraySerDe::write_column_to_arrow(const IColumn& column, const Null } checkArrowStatus(builder.Append(), column.get_name(), array_builder->type()->name()); nested_serde->write_column_to_arrow(nested_data, nullptr, nested_builder, - offsets[array_idx - 1], offsets[array_idx]); + offsets[array_idx - 1], offsets[array_idx], ctz); } } 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 b809f73724..24b57888c0 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 @@ -83,8 +83,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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; 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 edea6647ee..b9e2f6ed81 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 @@ -62,8 +62,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override { + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const override { throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "write_column_to_arrow with type " + column.get_name()); } 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 a995302f6e..08e4e81b66 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 @@ -160,7 +160,7 @@ Status DataTypeDateTimeSerDe::deserialize_one_cell_from_json(IColumn& column, Sl void DataTypeDate64SerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { + int end, const cctz::time_zone& ctz) const { auto& col_data = static_cast&>(column).get_data(); auto& string_builder = assert_cast(*array_builder); for (size_t i = start; i < end; ++i) { 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 a9730ccf70..dbca948ac0 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 @@ -57,8 +57,8 @@ public: const FormatOptions& options) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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, MysqlRowBuffer& row_buffer, 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 8fcf9c3c94..56aeb3c29c 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 @@ -100,19 +100,27 @@ Status DataTypeDateTimeV2SerDe::deserialize_one_cell_from_json(IColumn& column, void DataTypeDateTimeV2SerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { - auto& col_data = static_cast&>(column).get_data(); - auto& string_builder = assert_cast(*array_builder); + int end, const cctz::time_zone& ctz) const { + const auto& col_data = static_cast&>(column).get_data(); + auto& timestamp_builder = assert_cast(*array_builder); for (size_t i = start; i < end; ++i) { - char buf[64]; - const DateV2Value* time_val = - (const DateV2Value*)(&col_data[i]); - int len = time_val->to_buffer(buf); if (null_map && (*null_map)[i]) { - checkArrowStatus(string_builder.AppendNull(), column.get_name(), + checkArrowStatus(timestamp_builder.AppendNull(), column.get_name(), array_builder->type()->name()); } else { - checkArrowStatus(string_builder.Append(buf, len), column.get_name(), + int64_t timestamp = 0; + DateV2Value datetime_val = + binary_cast>(col_data[i]); + datetime_val.unix_timestamp(×tamp, ctz); + + if (scale > 3) { + uint32_t microsecond = datetime_val.microsecond(); + timestamp = (timestamp * 1000000) + microsecond; + } else if (scale > 0) { + uint32_t millisecond = datetime_val.microsecond() / 1000; + timestamp = (timestamp * 1000) + millisecond; + } + checkArrowStatus(timestamp_builder.Append(timestamp), column.get_name(), array_builder->type()->name()); } } 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 a6bb8d4554..d2deda1844 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 @@ -60,8 +60,8 @@ public: const FormatOptions& options) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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; 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 788be2fd00..047d44b463 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 @@ -27,6 +27,9 @@ namespace doris { namespace vectorized { +// This number represents the number of days from 0000-01-01 to 1970-01-01 +static const int32_t date_threshold = 719528; + Status DataTypeDateV2SerDe::serialize_column_to_json(const IColumn& column, int start_idx, int end_idx, BufferWritable& bw, FormatOptions& options) const { @@ -79,19 +82,17 @@ Status DataTypeDateV2SerDe::deserialize_one_cell_from_json(IColumn& column, Slic void DataTypeDateV2SerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { - auto& col_data = static_cast&>(column).get_data(); - auto& string_builder = assert_cast(*array_builder); + int end, const cctz::time_zone& ctz) const { + const auto& col_data = static_cast&>(column).get_data(); + auto& date32_builder = assert_cast(*array_builder); for (size_t i = start; i < end; ++i) { - char buf[64]; - const DateV2Value* time_val = - (const DateV2Value*)(&col_data[i]); - int len = time_val->to_buffer(buf); + int32_t daynr = binary_cast>(col_data[i]).daynr() - + date_threshold; if (null_map && (*null_map)[i]) { - checkArrowStatus(string_builder.AppendNull(), column.get_name(), + checkArrowStatus(date32_builder.AppendNull(), column.get_name(), array_builder->type()->name()); } else { - checkArrowStatus(string_builder.Append(buf, len), column.get_name(), + checkArrowStatus(date32_builder.Append(daynr), column.get_name(), array_builder->type()->name()); } } @@ -157,43 +158,16 @@ Status DataTypeDateV2SerDe::write_column_to_orc(const std::string& timezone, con orc::ColumnVectorBatch* orc_col_batch, int start, int end, std::vector& buffer_list) const { - auto& col_data = assert_cast&>(column).get_data(); - orc::StringVectorBatch* cur_batch = dynamic_cast(orc_col_batch); - - char* ptr = (char*)malloc(BUFFER_UNIT_SIZE); - if (!ptr) { - return Status::InternalError( - "malloc memory error when write largeint column data to orc file."); - } - StringRef bufferRef; - bufferRef.data = ptr; - bufferRef.size = BUFFER_UNIT_SIZE; - size_t offset = 0; - const size_t begin_off = offset; - + const auto& col_data = assert_cast&>(column).get_data(); + auto* cur_batch = dynamic_cast(orc_col_batch); for (size_t row_id = start; row_id < end; row_id++) { if (cur_batch->notNull[row_id] == 0) { continue; } - - int len = binary_cast>(col_data[row_id]) - .to_buffer(const_cast(bufferRef.data) + offset); - - REALLOC_MEMORY_FOR_ORC_WRITER() - - cur_batch->length[row_id] = len; - offset += len; + cur_batch->data[row_id] = + binary_cast>(col_data[row_id]).daynr() - + date_threshold; } - - size_t data_off = 0; - for (size_t row_id = start; row_id < end; row_id++) { - if (cur_batch->notNull[row_id] == 1) { - cur_batch->data[row_id] = const_cast(bufferRef.data) + begin_off + data_off; - data_off += cur_batch->length[row_id]; - } - } - - buffer_list.emplace_back(bufferRef); cur_batch->numElements = end - start; return Status::OK(); } diff --git a/be/src/vec/data_types/serde/data_type_datev2_serde.h b/be/src/vec/data_types/serde/data_type_datev2_serde.h index 809f7e94ca..01e550d981 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 @@ -58,8 +58,8 @@ public: const FormatOptions& options) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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, MysqlRowBuffer& row_buffer, 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 3d5c10ff01..c7fa944477 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 @@ -86,7 +86,7 @@ Status DataTypeDecimalSerDe::deserialize_one_cell_from_json(IColumn& column, template void DataTypeDecimalSerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { + int end, const cctz::time_zone& ctz) const { auto& col = reinterpret_cast&>(column); auto& builder = reinterpret_cast(*array_builder); if constexpr (std::is_same_v>) { 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 347e17ada1..f1aab124cf 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 @@ -97,8 +97,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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, MysqlRowBuffer& row_buffer, 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 7a82e49ed6..a4dc673e0e 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 @@ -133,8 +133,8 @@ void DataTypeHLLSerDe::read_one_cell_from_jsonb(IColumn& column, const JsonbValu } void DataTypeHLLSerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const { + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const { const auto& col = assert_cast(column); auto& builder = assert_cast(*array_builder); for (size_t string_i = start; string_i < end; ++string_i) { 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 c7ea532da2..b5e59a3e37 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 @@ -53,8 +53,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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 { throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp index 1bcfbc2e78..b7c2e29e0b 100644 --- a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp @@ -112,7 +112,7 @@ Status DataTypeJsonbSerDe::deserialize_one_cell_from_json(IColumn& column, Slice void DataTypeJsonbSerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { + int end, const cctz::time_zone& ctz) const { const auto& string_column = assert_cast(column); auto& builder = assert_cast(*array_builder); for (size_t string_i = start; string_i < end; ++string_i) { diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.h b/be/src/vec/data_types/serde/data_type_jsonb_serde.h index 5d291d7186..ec4436d149 100644 --- a/be/src/vec/data_types/serde/data_type_jsonb_serde.h +++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.h @@ -42,8 +42,8 @@ public: Status write_column_to_mysql(const IColumn& column, MysqlRowBuffer& row_buffer, int row_idx, bool col_const) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const override; Status serialize_one_cell_to_json(const IColumn& column, int row_num, BufferWritable& bw, FormatOptions& options) const override; diff --git a/be/src/vec/data_types/serde/data_type_map_serde.cpp b/be/src/vec/data_types/serde/data_type_map_serde.cpp index c682062471..563a666375 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 @@ -325,8 +325,8 @@ void DataTypeMapSerDe::write_one_cell_to_jsonb(const IColumn& column, JsonbWrite } void DataTypeMapSerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const { + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const { auto& builder = assert_cast(*array_builder); auto& map_column = assert_cast(column); const IColumn& nested_keys_column = map_column.get_keys(); @@ -360,15 +360,15 @@ void DataTypeMapSerDe::write_column_to_arrow(const IColumn& column, const NullMa checkArrowStatus(builder.Append(), column.get_name(), array_builder->type()->name()); key_serde->write_column_to_arrow(*key_mutable_data, nullptr, key_builder, 0, - key_mutable_data->size()); + key_mutable_data->size(), ctz); value_serde->write_column_to_arrow(*value_mutable_data, nullptr, value_builder, 0, - value_mutable_data->size()); + value_mutable_data->size(), ctz); } else { checkArrowStatus(builder.Append(), column.get_name(), array_builder->type()->name()); key_serde->write_column_to_arrow(nested_keys_column, nullptr, key_builder, - offsets[r - 1], offsets[r]); + offsets[r - 1], offsets[r], ctz); value_serde->write_column_to_arrow(nested_values_column, nullptr, value_builder, - offsets[r - 1], offsets[r]); + offsets[r - 1], offsets[r], ctz); } } } 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 96e57b02d1..264a22d853 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 @@ -76,8 +76,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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; 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 993dc633c4..55bdbe1fcc 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 @@ -262,11 +262,11 @@ void DataTypeNullableSerDe::read_one_cell_from_jsonb(IColumn& column, const Json **/ void DataTypeNullableSerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { + int end, const cctz::time_zone& ctz) const { const auto& column_nullable = assert_cast(column); nested_serde->write_column_to_arrow(column_nullable.get_nested_column(), &column_nullable.get_null_map_data(), array_builder, start, - end); + end, ctz); } void DataTypeNullableSerDe::read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, 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 3794ad15a3..24f1946614 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 @@ -70,8 +70,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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, MysqlRowBuffer& row_buffer, diff --git a/be/src/vec/data_types/serde/data_type_number_serde.cpp b/be/src/vec/data_types/serde/data_type_number_serde.cpp index 5d34ea92ae..0777a85c2b 100644 --- a/be/src/vec/data_types/serde/data_type_number_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_number_serde.cpp @@ -72,7 +72,7 @@ using DORIS_NUMERIC_ARROW_BUILDER = template void DataTypeNumberSerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { + int end, const cctz::time_zone& ctz) const { auto& col_data = assert_cast(column).get_data(); using ARROW_BUILDER_TYPE = typename TypeMapLookup::ValueType; auto arrow_null_map = revert_null_map(null_map, start, end); 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 87c960b287..fedee87d3b 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 @@ -80,8 +80,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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; 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 b25f1dbb1b..4d78d67352 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 @@ -72,8 +72,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override { + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const override { throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "write_column_to_arrow with type " + column.get_name()); } 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 e8fd621566..fca870049f 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 @@ -100,8 +100,8 @@ public: col.insert_value(val); } void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override { + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const override { throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "write_column_to_arrow with type " + column.get_name()); } diff --git a/be/src/vec/data_types/serde/data_type_serde.h b/be/src/vec/data_types/serde/data_type_serde.h index b54879639d..464e23a931 100644 --- a/be/src/vec/data_types/serde/data_type_serde.h +++ b/be/src/vec/data_types/serde/data_type_serde.h @@ -261,8 +261,8 @@ public: // Arrow serializer and deserializer virtual void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const = 0; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const = 0; virtual void read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int start, int end, const cctz::time_zone& ctz) const = 0; 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 35857cf88f..590c8e3808 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 @@ -156,8 +156,8 @@ public: } void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override { + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) const override { const auto& string_column = assert_cast(column); auto& builder = assert_cast(*array_builder); for (size_t string_i = start; string_i < end; ++string_i) { 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 9ddda64b46..8c8e80c0c5 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 @@ -300,7 +300,7 @@ void DataTypeStructSerDe::read_one_cell_from_jsonb(IColumn& column, const JsonbV void DataTypeStructSerDe::write_column_to_arrow(const IColumn& column, const NullMap* null_map, arrow::ArrayBuilder* array_builder, int start, - int end) const { + int end, const cctz::time_zone& ctz) const { auto& builder = assert_cast(*array_builder); auto& struct_column = assert_cast(column); for (int r = start; r < end; ++r) { @@ -313,7 +313,7 @@ void DataTypeStructSerDe::write_column_to_arrow(const IColumn& column, const Nul for (size_t ei = 0; ei < struct_column.tuple_size(); ++ei) { auto elem_builder = builder.field_builder(ei); elemSerDeSPtrs[ei]->write_column_to_arrow(struct_column.get_column(ei), nullptr, - elem_builder, r, r + 1); + elem_builder, r, r + 1, ctz); } } } 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 24ffda7948..b09def9719 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 @@ -149,8 +149,8 @@ public: void read_one_cell_from_jsonb(IColumn& column, const JsonbValue* arg) const override; void write_column_to_arrow(const IColumn& column, const NullMap* null_map, - arrow::ArrayBuilder* array_builder, int start, - int end) const override; + arrow::ArrayBuilder* array_builder, int start, int end, + const cctz::time_zone& ctz) 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; diff --git a/be/src/vec/runtime/vparquet_transformer.cpp b/be/src/vec/runtime/vparquet_transformer.cpp index a7b771c901..94ff92de76 100644 --- a/be/src/vec/runtime/vparquet_transformer.cpp +++ b/be/src/vec/runtime/vparquet_transformer.cpp @@ -40,6 +40,7 @@ #include "olap/olap_common.h" #include "runtime/decimalv2_value.h" #include "runtime/define_primitive_type.h" +#include "runtime/runtime_state.h" #include "runtime/types.h" #include "util/arrow/block_convertor.h" #include "util/arrow/row_batch.h" @@ -222,7 +223,10 @@ Status VParquetTransformer::_parse_properties() { builder.enable_dictionary(); } _parquet_writer_properties = builder.build(); - _arrow_properties = parquet::ArrowWriterProperties::Builder().store_schema()->build(); + _arrow_properties = parquet::ArrowWriterProperties::Builder() + .enable_deprecated_int96_timestamps() + ->store_schema() + ->build(); } catch (const parquet::ParquetException& e) { return Status::InternalError("parquet writer parse properties error: {}", e.what()); } @@ -250,8 +254,8 @@ Status VParquetTransformer::write(const Block& block) { // serialize std::shared_ptr result; - RETURN_IF_ERROR( - convert_to_arrow_batch(block, _arrow_schema, arrow::default_memory_pool(), &result)); + RETURN_IF_ERROR(convert_to_arrow_batch(block, _arrow_schema, arrow::default_memory_pool(), + &result, _state->timezone_obj())); auto get_table_res = arrow::Table::FromRecordBatches(result->schema(), {result}); if (!get_table_res.ok()) { diff --git a/be/src/vec/sink/varrow_flight_result_writer.cpp b/be/src/vec/sink/varrow_flight_result_writer.cpp index 49885b3420..ca8e1cf3c3 100644 --- a/be/src/vec/sink/varrow_flight_result_writer.cpp +++ b/be/src/vec/sink/varrow_flight_result_writer.cpp @@ -41,6 +41,7 @@ Status VArrowFlightResultWriter::init(RuntimeState* state) { return Status::InternalError("sinker is NULL pointer."); } _is_dry_run = state->query_options().dry_run_query; + _timezone_obj = state->timezone_obj(); return Status::OK(); } @@ -73,7 +74,7 @@ Status VArrowFlightResultWriter::write(Block& input_block) { { SCOPED_TIMER(_convert_tuple_timer); RETURN_IF_ERROR(convert_to_arrow_batch(block, _arrow_schema, arrow::default_memory_pool(), - &result)); + &result, _timezone_obj)); } { SCOPED_TIMER(_result_send_timer); diff --git a/be/src/vec/sink/varrow_flight_result_writer.h b/be/src/vec/sink/varrow_flight_result_writer.h index 774d938bc9..c95d616b61 100644 --- a/be/src/vec/sink/varrow_flight_result_writer.h +++ b/be/src/vec/sink/varrow_flight_result_writer.h @@ -18,6 +18,7 @@ #pragma once #include +#include #include #include @@ -73,6 +74,8 @@ private: uint64_t _bytes_sent = 0; std::shared_ptr _arrow_schema; + + cctz::time_zone _timezone_obj; }; } // namespace vectorized } // namespace doris diff --git a/be/src/vec/sink/vmemory_scratch_sink.cpp b/be/src/vec/sink/vmemory_scratch_sink.cpp index 58c576aa8f..eca9e65ab4 100644 --- a/be/src/vec/sink/vmemory_scratch_sink.cpp +++ b/be/src/vec/sink/vmemory_scratch_sink.cpp @@ -72,6 +72,7 @@ Status MemoryScratchSink::prepare(RuntimeState* state) { _profile = state->obj_pool()->add(new RuntimeProfile(title.str())); init_sink_common_profile(); + _timezone_obj = state->timezone_obj(); return Status::OK(); } @@ -89,7 +90,7 @@ Status MemoryScratchSink::send(RuntimeState* state, Block* input_block, bool eos // After expr executed, use recaculated schema as final schema RETURN_IF_ERROR(convert_block_arrow_schema(block, &block_arrow_schema)); RETURN_IF_ERROR(convert_to_arrow_batch(block, block_arrow_schema, arrow::default_memory_pool(), - &result)); + &result, _timezone_obj)); _queue->blocking_put(result); return Status::OK(); } diff --git a/be/src/vec/sink/vmemory_scratch_sink.h b/be/src/vec/sink/vmemory_scratch_sink.h index c9a6922336..3a1dd9991d 100644 --- a/be/src/vec/sink/vmemory_scratch_sink.h +++ b/be/src/vec/sink/vmemory_scratch_sink.h @@ -17,6 +17,8 @@ #pragma once +#include + #include #include @@ -64,7 +66,7 @@ public: private: Status _prepare_vexpr(RuntimeState* state); - + cctz::time_zone _timezone_obj; BlockQueueSharedPtr _queue; // Owned by the RuntimeState. diff --git a/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp b/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp index bd7072ee79..bce3e41977 100644 --- a/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp +++ b/be/test/vec/data_types/serde/data_type_serde_arrow_test.cpp @@ -496,8 +496,10 @@ void serialize_and_deserialize_arrow_test() { std::cout << "block data: " << block.dump_data(0, row_num) << std::endl; std::cout << "_arrow_schema: " << _arrow_schema->ToString(true) << std::endl; - static_cast( - convert_to_arrow_batch(block, _arrow_schema, arrow::default_memory_pool(), &result)); + cctz::time_zone timezone_obj; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, timezone_obj); + static_cast(convert_to_arrow_batch(block, _arrow_schema, arrow::default_memory_pool(), + &result, timezone_obj)); Block new_block = block.clone_empty(); EXPECT_TRUE(result != nullptr); std::cout << "result: " << result->ToString() << std::endl; @@ -628,8 +630,10 @@ TEST(DataTypeSerDeArrowTest, DataTypeMapNullKeySerDeTest) { std::cout << "block structure: " << block.dump_structure() << std::endl; std::cout << "_arrow_schema: " << _arrow_schema->ToString(true) << std::endl; - static_cast( - convert_to_arrow_batch(block, _arrow_schema, arrow::default_memory_pool(), &result)); + cctz::time_zone timezone_obj; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, timezone_obj); + static_cast(convert_to_arrow_batch(block, _arrow_schema, arrow::default_memory_pool(), + &result, timezone_obj)); Block new_block = block.clone_empty(); EXPECT_TRUE(result != nullptr); std::cout << "result: " << result->ToString() << std::endl; diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/OutFileClause.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/OutFileClause.java index c0af252d9e..8c975d4ea0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/OutFileClause.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/OutFileClause.java @@ -297,15 +297,21 @@ public class OutFileClause { } orcType = "string"; break; + case DATEV2: + orcType = "date"; + break; case DATETIMEV2: orcType = "timestamp"; break; + case CHAR: + orcType = "char(" + dorisType.getLength() + ")"; + break; + case VARCHAR: + orcType = "varchar(" + dorisType.getLength() + ")"; + break; case LARGEINT: case DATE: case DATETIME: - case DATEV2: - case CHAR: - case VARCHAR: orcType = "string"; break; case DECIMALV2: @@ -402,74 +408,50 @@ public class OutFileClause { case FLOAT: case DOUBLE: case STRING: - if (!schema.second.equals(resultType.getPrimitiveType().toString().toLowerCase())) { - throw new AnalysisException("project field type is " + resultType.getPrimitiveType().toString() - + ", should use " + resultType.getPrimitiveType().toString() + "," - + " but the type of column " + i + " is " + schema.second); - } + checkOrcType(schema.second, resultType.getPrimitiveType().toString().toLowerCase(), true, + resultType.getPrimitiveType().toString()); + break; + case DATEV2: + checkOrcType(schema.second, "date", true, resultType.getPrimitiveType().toString()); break; case DATETIMEV2: - if (!schema.second.equals("timestamp")) { - throw new AnalysisException("project field type is " + resultType.getPrimitiveType().toString() - + ", should use timestamp, but the definition type of column " + i + " is " - + schema.second); - } + checkOrcType(schema.second, "timestamp", true, resultType.getPrimitiveType().toString()); + break; + case CHAR: + checkOrcType(schema.second, "char", false, resultType.getPrimitiveType().toString()); + break; + case VARCHAR: + checkOrcType(schema.second, "varchar", false, resultType.getPrimitiveType().toString()); break; case LARGEINT: case DATE: case DATETIME: - case DATEV2: - case CHAR: - case VARCHAR: - if (!schema.second.equals("string")) { - throw new AnalysisException("project field type is " + resultType.getPrimitiveType().toString() - + ", should use string, but the definition type of column " + i + " is " - + schema.second); - } + checkOrcType(schema.second, "string", true, resultType.getPrimitiveType().toString()); break; case DECIMAL32: case DECIMAL64: case DECIMAL128: case DECIMALV2: - if (!schema.second.startsWith("decimal")) { - throw new AnalysisException("project field type is " + resultType.getPrimitiveType().toString() - + ", should use string, but the definition type of column " + i + " is " - + schema.second); - } + checkOrcType(schema.second, "decimal", false, resultType.getPrimitiveType().toString()); break; case HLL: case BITMAP: if (ConnectContext.get() != null && ConnectContext.get() .getSessionVariable().isReturnObjectDataAsBinary()) { - if (!schema.second.equals("string")) { - throw new AnalysisException("project field type is HLL/BITMAP, should use string, " - + "but the definition type of column " + i + " is " + schema.second); - } + checkOrcType(schema.second, "string", true, resultType.getPrimitiveType().toString()); } else { throw new AnalysisException("Orc format does not support column type: " + resultType.getPrimitiveType()); } break; case STRUCT: - if (!schema.second.startsWith("struct")) { - throw new AnalysisException("project field type is " + resultType.getPrimitiveType().toString() - + ", should use struct, but the definition type of column " + i + " is " - + schema.second); - } + checkOrcType(schema.second, "struct", false, resultType.getPrimitiveType().toString()); break; case MAP: - if (!schema.second.startsWith("map")) { - throw new AnalysisException("project field type is " + resultType.getPrimitiveType().toString() - + ", should use map, but the definition type of column " + i + " is " - + schema.second); - } + checkOrcType(schema.second, "map", false, resultType.getPrimitiveType().toString()); break; case ARRAY: - if (!schema.second.startsWith("array")) { - throw new AnalysisException("project field type is " + resultType.getPrimitiveType().toString() - + ", should use array, but the definition type of column " + i + " is " - + schema.second); - } + checkOrcType(schema.second, "array", false, resultType.getPrimitiveType().toString()); break; default: throw new AnalysisException("Orc format does not support column type: " @@ -478,6 +460,22 @@ public class OutFileClause { } } + private void checkOrcType(String orcType, String expectType, boolean isEqual, String dorisType) + throws AnalysisException { + if (isEqual) { + if (orcType.equals(expectType)) { + return; + } + } else { + if (orcType.startsWith(expectType)) { + return; + } + } + throw new AnalysisException("project field type is " + dorisType + + ", should use " + expectType + ", but the definition type is " + orcType); + } + + private void analyzeForParquetFormat(List resultExprs, List colLabels) throws AnalysisException { if (this.parquetSchemas.isEmpty()) { genParquetColumnName(resultExprs, colLabels); diff --git a/regression-test/data/export_p0/export/test_show_export.out b/regression-test/data/export_p0/export/test_show_export.out index 8432bc86e7..90277ca28f 100644 --- a/regression-test/data/export_p0/export/test_show_export.out +++ b/regression-test/data/export_p0/export/test_show_export.out @@ -102,156 +102,156 @@ 99 2017-10-01 2017-10-01T00:00 Beijing 99 99 true 99 99 99 99.99 99.99 char99 99 -- !select_load1 -- -1 2017-10-01 2017-10-01 00:00:00 Beijing 1 1 true 1 1 1.1 1.1 char1 1 1 -10 2017-10-01 2017-10-01 00:00:00 Beijing 10 10 true 10 10 10.1 10.1 char10 10 10 -100 2017-10-01 2017-10-01 00:00:00 \N \N \N \N \N \N \N \N \N \N \N -11 2017-10-01 2017-10-01 00:00:00 Beijing 11 11 true 11 11 11.11 11.11 char11 11 11 -12 2017-10-01 2017-10-01 00:00:00 Beijing 12 12 true 12 12 12.12 12.12 char12 12 12 -13 2017-10-01 2017-10-01 00:00:00 Beijing 13 13 true 13 13 13.13 13.13 char13 13 13 -14 2017-10-01 2017-10-01 00:00:00 Beijing 14 14 true 14 14 14.14 14.14 char14 14 14 -15 2017-10-01 2017-10-01 00:00:00 Beijing 15 15 true 15 15 15.15 15.15 char15 15 15 -16 2017-10-01 2017-10-01 00:00:00 Beijing 16 16 true 16 16 16.16 16.16 char16 16 16 -17 2017-10-01 2017-10-01 00:00:00 Beijing 17 17 true 17 17 17.17 17.17 char17 17 17 -18 2017-10-01 2017-10-01 00:00:00 Beijing 18 18 true 18 18 18.18 18.18 char18 18 18 -19 2017-10-01 2017-10-01 00:00:00 Beijing 19 19 true 19 19 19.19 19.19 char19 19 19 -2 2017-10-01 2017-10-01 00:00:00 Beijing 2 2 true 2 2 2.2 2.2 char2 2 2 -20 2017-10-01 2017-10-01 00:00:00 Beijing 20 20 true 20 20 20.2 20.2 char20 20 20 -21 2017-10-01 2017-10-01 00:00:00 Beijing 21 21 true 21 21 21.21 21.21 char21 21 21 -22 2017-10-01 2017-10-01 00:00:00 Beijing 22 22 true 22 22 22.22 22.22 char22 22 22 -23 2017-10-01 2017-10-01 00:00:00 Beijing 23 23 true 23 23 23.23 23.23 char23 23 23 -24 2017-10-01 2017-10-01 00:00:00 Beijing 24 24 true 24 24 24.24 24.24 char24 24 24 -25 2017-10-01 2017-10-01 00:00:00 Beijing 25 25 true 25 25 25.25 25.25 char25 25 25 -26 2017-10-01 2017-10-01 00:00:00 Beijing 26 26 true 26 26 26.26 26.26 char26 26 26 -27 2017-10-01 2017-10-01 00:00:00 Beijing 27 27 true 27 27 27.27 27.27 char27 27 27 -28 2017-10-01 2017-10-01 00:00:00 Beijing 28 28 true 28 28 28.28 28.28 char28 28 28 -29 2017-10-01 2017-10-01 00:00:00 Beijing 29 29 true 29 29 29.29 29.29 char29 29 29 -3 2017-10-01 2017-10-01 00:00:00 Beijing 3 3 true 3 3 3.3 3.3 char3 3 3 -30 2017-10-01 2017-10-01 00:00:00 Beijing 30 30 true 30 30 30.3 30.3 char30 30 30 -31 2017-10-01 2017-10-01 00:00:00 Beijing 31 31 true 31 31 31.31 31.31 char31 31 31 -32 2017-10-01 2017-10-01 00:00:00 Beijing 32 32 true 32 32 32.32 32.32 char32 32 32 -33 2017-10-01 2017-10-01 00:00:00 Beijing 33 33 true 33 33 33.33 33.33 char33 33 33 -34 2017-10-01 2017-10-01 00:00:00 Beijing 34 34 true 34 34 34.34 34.34 char34 34 34 -35 2017-10-01 2017-10-01 00:00:00 Beijing 35 35 true 35 35 35.35 35.35 char35 35 35 -36 2017-10-01 2017-10-01 00:00:00 Beijing 36 36 true 36 36 36.36 36.36 char36 36 36 -37 2017-10-01 2017-10-01 00:00:00 Beijing 37 37 true 37 37 37.37 37.37 char37 37 37 -38 2017-10-01 2017-10-01 00:00:00 Beijing 38 38 true 38 38 38.38 38.38 char38 38 38 -39 2017-10-01 2017-10-01 00:00:00 Beijing 39 39 true 39 39 39.39 39.39 char39 39 39 -4 2017-10-01 2017-10-01 00:00:00 Beijing 4 4 true 4 4 4.4 4.4 char4 4 4 -40 2017-10-01 2017-10-01 00:00:00 Beijing 40 40 true 40 40 40.4 40.4 char40 40 40 -41 2017-10-01 2017-10-01 00:00:00 Beijing 41 41 true 41 41 41.41 41.41 char41 41 41 -42 2017-10-01 2017-10-01 00:00:00 Beijing 42 42 true 42 42 42.42 42.42 char42 42 42 -43 2017-10-01 2017-10-01 00:00:00 Beijing 43 43 true 43 43 43.43 43.43 char43 43 43 -44 2017-10-01 2017-10-01 00:00:00 Beijing 44 44 true 44 44 44.44 44.44 char44 44 44 -45 2017-10-01 2017-10-01 00:00:00 Beijing 45 45 true 45 45 45.45 45.45 char45 45 45 -46 2017-10-01 2017-10-01 00:00:00 Beijing 46 46 true 46 46 46.46 46.46 char46 46 46 -47 2017-10-01 2017-10-01 00:00:00 Beijing 47 47 true 47 47 47.47 47.47 char47 47 47 -48 2017-10-01 2017-10-01 00:00:00 Beijing 48 48 true 48 48 48.48 48.48 char48 48 48 -49 2017-10-01 2017-10-01 00:00:00 Beijing 49 49 true 49 49 49.49 49.49 char49 49 49 -5 2017-10-01 2017-10-01 00:00:00 Beijing 5 5 true 5 5 5.5 5.5 char5 5 5 -50 2017-10-01 2017-10-01 00:00:00 Beijing 50 50 true 50 50 50.5 50.5 char50 50 50 -51 2017-10-01 2017-10-01 00:00:00 Beijing 51 51 true 51 51 51.51 51.51 char51 51 51 -52 2017-10-01 2017-10-01 00:00:00 Beijing 52 52 true 52 52 52.52 52.52 char52 52 52 -53 2017-10-01 2017-10-01 00:00:00 Beijing 53 53 true 53 53 53.53 53.53 char53 53 53 -54 2017-10-01 2017-10-01 00:00:00 Beijing 54 54 true 54 54 54.54 54.54 char54 54 54 -55 2017-10-01 2017-10-01 00:00:00 Beijing 55 55 true 55 55 55.55 55.55 char55 55 55 -56 2017-10-01 2017-10-01 00:00:00 Beijing 56 56 true 56 56 56.56 56.56 char56 56 56 -57 2017-10-01 2017-10-01 00:00:00 Beijing 57 57 true 57 57 57.57 57.57 char57 57 57 -58 2017-10-01 2017-10-01 00:00:00 Beijing 58 58 true 58 58 58.58 58.58 char58 58 58 -59 2017-10-01 2017-10-01 00:00:00 Beijing 59 59 true 59 59 59.59 59.59 char59 59 59 -6 2017-10-01 2017-10-01 00:00:00 Beijing 6 6 true 6 6 6.6 6.6 char6 6 6 -60 2017-10-01 2017-10-01 00:00:00 Beijing 60 60 true 60 60 60.6 60.6 char60 60 60 -61 2017-10-01 2017-10-01 00:00:00 Beijing 61 61 true 61 61 61.61 61.61 char61 61 61 -62 2017-10-01 2017-10-01 00:00:00 Beijing 62 62 true 62 62 62.62 62.62 char62 62 62 -63 2017-10-01 2017-10-01 00:00:00 Beijing 63 63 true 63 63 63.63 63.63 char63 63 63 -64 2017-10-01 2017-10-01 00:00:00 Beijing 64 64 true 64 64 64.64 64.64 char64 64 64 -65 2017-10-01 2017-10-01 00:00:00 Beijing 65 65 true 65 65 65.65 65.65 char65 65 65 -66 2017-10-01 2017-10-01 00:00:00 Beijing 66 66 true 66 66 66.66 66.66 char66 66 66 -67 2017-10-01 2017-10-01 00:00:00 Beijing 67 67 true 67 67 67.67 67.67 char67 67 67 -68 2017-10-01 2017-10-01 00:00:00 Beijing 68 68 true 68 68 68.68 68.68 char68 68 68 -69 2017-10-01 2017-10-01 00:00:00 Beijing 69 69 true 69 69 69.69 69.69 char69 69 69 -7 2017-10-01 2017-10-01 00:00:00 Beijing 7 7 true 7 7 7.7 7.7 char7 7 7 -70 2017-10-01 2017-10-01 00:00:00 Beijing 70 70 true 70 70 70.7 70.7 char70 70 70 -71 2017-10-01 2017-10-01 00:00:00 Beijing 71 71 true 71 71 71.71 71.71 char71 71 71 -72 2017-10-01 2017-10-01 00:00:00 Beijing 72 72 true 72 72 72.72 72.72 char72 72 72 -73 2017-10-01 2017-10-01 00:00:00 Beijing 73 73 true 73 73 73.73 73.73 char73 73 73 -74 2017-10-01 2017-10-01 00:00:00 Beijing 74 74 true 74 74 74.74 74.74 char74 74 74 -75 2017-10-01 2017-10-01 00:00:00 Beijing 75 75 true 75 75 75.75 75.75 char75 75 75 -76 2017-10-01 2017-10-01 00:00:00 Beijing 76 76 true 76 76 76.76 76.76 char76 76 76 -77 2017-10-01 2017-10-01 00:00:00 Beijing 77 77 true 77 77 77.77 77.77 char77 77 77 -78 2017-10-01 2017-10-01 00:00:00 Beijing 78 78 true 78 78 78.78 78.78 char78 78 78 -79 2017-10-01 2017-10-01 00:00:00 Beijing 79 79 true 79 79 79.79 79.79 char79 79 79 -8 2017-10-01 2017-10-01 00:00:00 Beijing 8 8 true 8 8 8.8 8.8 char8 8 8 -80 2017-10-01 2017-10-01 00:00:00 Beijing 80 80 true 80 80 80.8 80.8 char80 80 80 -81 2017-10-01 2017-10-01 00:00:00 Beijing 81 81 true 81 81 81.81 81.81 char81 81 81 -82 2017-10-01 2017-10-01 00:00:00 Beijing 82 82 true 82 82 82.82 82.82 char82 82 82 -83 2017-10-01 2017-10-01 00:00:00 Beijing 83 83 true 83 83 83.83 83.83 char83 83 83 -84 2017-10-01 2017-10-01 00:00:00 Beijing 84 84 true 84 84 84.84 84.84 char84 84 84 -85 2017-10-01 2017-10-01 00:00:00 Beijing 85 85 true 85 85 85.85 85.85 char85 85 85 -86 2017-10-01 2017-10-01 00:00:00 Beijing 86 86 true 86 86 86.86 86.86 char86 86 86 -87 2017-10-01 2017-10-01 00:00:00 Beijing 87 87 true 87 87 87.87 87.87 char87 87 87 -88 2017-10-01 2017-10-01 00:00:00 Beijing 88 88 true 88 88 88.88 88.88 char88 88 88 -89 2017-10-01 2017-10-01 00:00:00 Beijing 89 89 true 89 89 89.89 89.89 char89 89 89 -9 2017-10-01 2017-10-01 00:00:00 Beijing 9 9 true 9 9 9.9 9.9 char9 9 9 -90 2017-10-01 2017-10-01 00:00:00 Beijing 90 90 true 90 90 90.9 90.9 char90 90 90 -91 2017-10-01 2017-10-01 00:00:00 Beijing 91 91 true 91 91 91.91 91.91 char91 91 91 -92 2017-10-01 2017-10-01 00:00:00 Beijing 92 92 true 92 92 92.92 92.92 char92 92 92 -93 2017-10-01 2017-10-01 00:00:00 Beijing 93 93 true 93 93 93.93 93.93 char93 93 93 -94 2017-10-01 2017-10-01 00:00:00 Beijing 94 94 true 94 94 94.94 94.94 char94 94 94 -95 2017-10-01 2017-10-01 00:00:00 Beijing 95 95 true 95 95 95.95 95.95 char95 95 95 -96 2017-10-01 2017-10-01 00:00:00 Beijing 96 96 true 96 96 96.96 96.96 char96 96 96 -97 2017-10-01 2017-10-01 00:00:00 Beijing 97 97 true 97 97 97.97 97.97 char97 97 97 -98 2017-10-01 2017-10-01 00:00:00 Beijing 98 98 true 98 98 98.98 98.98 char98 98 98 -99 2017-10-01 2017-10-01 00:00:00 Beijing 99 99 true 99 99 99.99 99.99 char99 99 99 +1 2017-10-01 2017-10-01T00:00 Beijing 1 1 true 1 1 1.1 1.1 char1 1 1 +10 2017-10-01 2017-10-01T00:00 Beijing 10 10 true 10 10 10.1 10.1 char10 10 10 +100 2017-10-01 2017-10-01T00:00 \N \N \N \N \N \N \N \N \N \N \N +11 2017-10-01 2017-10-01T00:00 Beijing 11 11 true 11 11 11.11 11.11 char11 11 11 +12 2017-10-01 2017-10-01T00:00 Beijing 12 12 true 12 12 12.12 12.12 char12 12 12 +13 2017-10-01 2017-10-01T00:00 Beijing 13 13 true 13 13 13.13 13.13 char13 13 13 +14 2017-10-01 2017-10-01T00:00 Beijing 14 14 true 14 14 14.14 14.14 char14 14 14 +15 2017-10-01 2017-10-01T00:00 Beijing 15 15 true 15 15 15.15 15.15 char15 15 15 +16 2017-10-01 2017-10-01T00:00 Beijing 16 16 true 16 16 16.16 16.16 char16 16 16 +17 2017-10-01 2017-10-01T00:00 Beijing 17 17 true 17 17 17.17 17.17 char17 17 17 +18 2017-10-01 2017-10-01T00:00 Beijing 18 18 true 18 18 18.18 18.18 char18 18 18 +19 2017-10-01 2017-10-01T00:00 Beijing 19 19 true 19 19 19.19 19.19 char19 19 19 +2 2017-10-01 2017-10-01T00:00 Beijing 2 2 true 2 2 2.2 2.2 char2 2 2 +20 2017-10-01 2017-10-01T00:00 Beijing 20 20 true 20 20 20.2 20.2 char20 20 20 +21 2017-10-01 2017-10-01T00:00 Beijing 21 21 true 21 21 21.21 21.21 char21 21 21 +22 2017-10-01 2017-10-01T00:00 Beijing 22 22 true 22 22 22.22 22.22 char22 22 22 +23 2017-10-01 2017-10-01T00:00 Beijing 23 23 true 23 23 23.23 23.23 char23 23 23 +24 2017-10-01 2017-10-01T00:00 Beijing 24 24 true 24 24 24.24 24.24 char24 24 24 +25 2017-10-01 2017-10-01T00:00 Beijing 25 25 true 25 25 25.25 25.25 char25 25 25 +26 2017-10-01 2017-10-01T00:00 Beijing 26 26 true 26 26 26.26 26.26 char26 26 26 +27 2017-10-01 2017-10-01T00:00 Beijing 27 27 true 27 27 27.27 27.27 char27 27 27 +28 2017-10-01 2017-10-01T00:00 Beijing 28 28 true 28 28 28.28 28.28 char28 28 28 +29 2017-10-01 2017-10-01T00:00 Beijing 29 29 true 29 29 29.29 29.29 char29 29 29 +3 2017-10-01 2017-10-01T00:00 Beijing 3 3 true 3 3 3.3 3.3 char3 3 3 +30 2017-10-01 2017-10-01T00:00 Beijing 30 30 true 30 30 30.3 30.3 char30 30 30 +31 2017-10-01 2017-10-01T00:00 Beijing 31 31 true 31 31 31.31 31.31 char31 31 31 +32 2017-10-01 2017-10-01T00:00 Beijing 32 32 true 32 32 32.32 32.32 char32 32 32 +33 2017-10-01 2017-10-01T00:00 Beijing 33 33 true 33 33 33.33 33.33 char33 33 33 +34 2017-10-01 2017-10-01T00:00 Beijing 34 34 true 34 34 34.34 34.34 char34 34 34 +35 2017-10-01 2017-10-01T00:00 Beijing 35 35 true 35 35 35.35 35.35 char35 35 35 +36 2017-10-01 2017-10-01T00:00 Beijing 36 36 true 36 36 36.36 36.36 char36 36 36 +37 2017-10-01 2017-10-01T00:00 Beijing 37 37 true 37 37 37.37 37.37 char37 37 37 +38 2017-10-01 2017-10-01T00:00 Beijing 38 38 true 38 38 38.38 38.38 char38 38 38 +39 2017-10-01 2017-10-01T00:00 Beijing 39 39 true 39 39 39.39 39.39 char39 39 39 +4 2017-10-01 2017-10-01T00:00 Beijing 4 4 true 4 4 4.4 4.4 char4 4 4 +40 2017-10-01 2017-10-01T00:00 Beijing 40 40 true 40 40 40.4 40.4 char40 40 40 +41 2017-10-01 2017-10-01T00:00 Beijing 41 41 true 41 41 41.41 41.41 char41 41 41 +42 2017-10-01 2017-10-01T00:00 Beijing 42 42 true 42 42 42.42 42.42 char42 42 42 +43 2017-10-01 2017-10-01T00:00 Beijing 43 43 true 43 43 43.43 43.43 char43 43 43 +44 2017-10-01 2017-10-01T00:00 Beijing 44 44 true 44 44 44.44 44.44 char44 44 44 +45 2017-10-01 2017-10-01T00:00 Beijing 45 45 true 45 45 45.45 45.45 char45 45 45 +46 2017-10-01 2017-10-01T00:00 Beijing 46 46 true 46 46 46.46 46.46 char46 46 46 +47 2017-10-01 2017-10-01T00:00 Beijing 47 47 true 47 47 47.47 47.47 char47 47 47 +48 2017-10-01 2017-10-01T00:00 Beijing 48 48 true 48 48 48.48 48.48 char48 48 48 +49 2017-10-01 2017-10-01T00:00 Beijing 49 49 true 49 49 49.49 49.49 char49 49 49 +5 2017-10-01 2017-10-01T00:00 Beijing 5 5 true 5 5 5.5 5.5 char5 5 5 +50 2017-10-01 2017-10-01T00:00 Beijing 50 50 true 50 50 50.5 50.5 char50 50 50 +51 2017-10-01 2017-10-01T00:00 Beijing 51 51 true 51 51 51.51 51.51 char51 51 51 +52 2017-10-01 2017-10-01T00:00 Beijing 52 52 true 52 52 52.52 52.52 char52 52 52 +53 2017-10-01 2017-10-01T00:00 Beijing 53 53 true 53 53 53.53 53.53 char53 53 53 +54 2017-10-01 2017-10-01T00:00 Beijing 54 54 true 54 54 54.54 54.54 char54 54 54 +55 2017-10-01 2017-10-01T00:00 Beijing 55 55 true 55 55 55.55 55.55 char55 55 55 +56 2017-10-01 2017-10-01T00:00 Beijing 56 56 true 56 56 56.56 56.56 char56 56 56 +57 2017-10-01 2017-10-01T00:00 Beijing 57 57 true 57 57 57.57 57.57 char57 57 57 +58 2017-10-01 2017-10-01T00:00 Beijing 58 58 true 58 58 58.58 58.58 char58 58 58 +59 2017-10-01 2017-10-01T00:00 Beijing 59 59 true 59 59 59.59 59.59 char59 59 59 +6 2017-10-01 2017-10-01T00:00 Beijing 6 6 true 6 6 6.6 6.6 char6 6 6 +60 2017-10-01 2017-10-01T00:00 Beijing 60 60 true 60 60 60.6 60.6 char60 60 60 +61 2017-10-01 2017-10-01T00:00 Beijing 61 61 true 61 61 61.61 61.61 char61 61 61 +62 2017-10-01 2017-10-01T00:00 Beijing 62 62 true 62 62 62.62 62.62 char62 62 62 +63 2017-10-01 2017-10-01T00:00 Beijing 63 63 true 63 63 63.63 63.63 char63 63 63 +64 2017-10-01 2017-10-01T00:00 Beijing 64 64 true 64 64 64.64 64.64 char64 64 64 +65 2017-10-01 2017-10-01T00:00 Beijing 65 65 true 65 65 65.65 65.65 char65 65 65 +66 2017-10-01 2017-10-01T00:00 Beijing 66 66 true 66 66 66.66 66.66 char66 66 66 +67 2017-10-01 2017-10-01T00:00 Beijing 67 67 true 67 67 67.67 67.67 char67 67 67 +68 2017-10-01 2017-10-01T00:00 Beijing 68 68 true 68 68 68.68 68.68 char68 68 68 +69 2017-10-01 2017-10-01T00:00 Beijing 69 69 true 69 69 69.69 69.69 char69 69 69 +7 2017-10-01 2017-10-01T00:00 Beijing 7 7 true 7 7 7.7 7.7 char7 7 7 +70 2017-10-01 2017-10-01T00:00 Beijing 70 70 true 70 70 70.7 70.7 char70 70 70 +71 2017-10-01 2017-10-01T00:00 Beijing 71 71 true 71 71 71.71 71.71 char71 71 71 +72 2017-10-01 2017-10-01T00:00 Beijing 72 72 true 72 72 72.72 72.72 char72 72 72 +73 2017-10-01 2017-10-01T00:00 Beijing 73 73 true 73 73 73.73 73.73 char73 73 73 +74 2017-10-01 2017-10-01T00:00 Beijing 74 74 true 74 74 74.74 74.74 char74 74 74 +75 2017-10-01 2017-10-01T00:00 Beijing 75 75 true 75 75 75.75 75.75 char75 75 75 +76 2017-10-01 2017-10-01T00:00 Beijing 76 76 true 76 76 76.76 76.76 char76 76 76 +77 2017-10-01 2017-10-01T00:00 Beijing 77 77 true 77 77 77.77 77.77 char77 77 77 +78 2017-10-01 2017-10-01T00:00 Beijing 78 78 true 78 78 78.78 78.78 char78 78 78 +79 2017-10-01 2017-10-01T00:00 Beijing 79 79 true 79 79 79.79 79.79 char79 79 79 +8 2017-10-01 2017-10-01T00:00 Beijing 8 8 true 8 8 8.8 8.8 char8 8 8 +80 2017-10-01 2017-10-01T00:00 Beijing 80 80 true 80 80 80.8 80.8 char80 80 80 +81 2017-10-01 2017-10-01T00:00 Beijing 81 81 true 81 81 81.81 81.81 char81 81 81 +82 2017-10-01 2017-10-01T00:00 Beijing 82 82 true 82 82 82.82 82.82 char82 82 82 +83 2017-10-01 2017-10-01T00:00 Beijing 83 83 true 83 83 83.83 83.83 char83 83 83 +84 2017-10-01 2017-10-01T00:00 Beijing 84 84 true 84 84 84.84 84.84 char84 84 84 +85 2017-10-01 2017-10-01T00:00 Beijing 85 85 true 85 85 85.85 85.85 char85 85 85 +86 2017-10-01 2017-10-01T00:00 Beijing 86 86 true 86 86 86.86 86.86 char86 86 86 +87 2017-10-01 2017-10-01T00:00 Beijing 87 87 true 87 87 87.87 87.87 char87 87 87 +88 2017-10-01 2017-10-01T00:00 Beijing 88 88 true 88 88 88.88 88.88 char88 88 88 +89 2017-10-01 2017-10-01T00:00 Beijing 89 89 true 89 89 89.89 89.89 char89 89 89 +9 2017-10-01 2017-10-01T00:00 Beijing 9 9 true 9 9 9.9 9.9 char9 9 9 +90 2017-10-01 2017-10-01T00:00 Beijing 90 90 true 90 90 90.9 90.9 char90 90 90 +91 2017-10-01 2017-10-01T00:00 Beijing 91 91 true 91 91 91.91 91.91 char91 91 91 +92 2017-10-01 2017-10-01T00:00 Beijing 92 92 true 92 92 92.92 92.92 char92 92 92 +93 2017-10-01 2017-10-01T00:00 Beijing 93 93 true 93 93 93.93 93.93 char93 93 93 +94 2017-10-01 2017-10-01T00:00 Beijing 94 94 true 94 94 94.94 94.94 char94 94 94 +95 2017-10-01 2017-10-01T00:00 Beijing 95 95 true 95 95 95.95 95.95 char95 95 95 +96 2017-10-01 2017-10-01T00:00 Beijing 96 96 true 96 96 96.96 96.96 char96 96 96 +97 2017-10-01 2017-10-01T00:00 Beijing 97 97 true 97 97 97.97 97.97 char97 97 97 +98 2017-10-01 2017-10-01T00:00 Beijing 98 98 true 98 98 98.98 98.98 char98 98 98 +99 2017-10-01 2017-10-01T00:00 Beijing 99 99 true 99 99 99.99 99.99 char99 99 99 -- !select_load1 -- -20 2017-10-01 2017-10-01 00:00:00 Beijing 20 20 true 20 20 20.2 20.2 char20 20 20 -21 2017-10-01 2017-10-01 00:00:00 Beijing 21 21 true 21 21 21.21 21.21 char21 21 21 -22 2017-10-01 2017-10-01 00:00:00 Beijing 22 22 true 22 22 22.22 22.22 char22 22 22 -23 2017-10-01 2017-10-01 00:00:00 Beijing 23 23 true 23 23 23.23 23.23 char23 23 23 -24 2017-10-01 2017-10-01 00:00:00 Beijing 24 24 true 24 24 24.24 24.24 char24 24 24 -25 2017-10-01 2017-10-01 00:00:00 Beijing 25 25 true 25 25 25.25 25.25 char25 25 25 -26 2017-10-01 2017-10-01 00:00:00 Beijing 26 26 true 26 26 26.26 26.26 char26 26 26 -27 2017-10-01 2017-10-01 00:00:00 Beijing 27 27 true 27 27 27.27 27.27 char27 27 27 -28 2017-10-01 2017-10-01 00:00:00 Beijing 28 28 true 28 28 28.28 28.28 char28 28 28 -29 2017-10-01 2017-10-01 00:00:00 Beijing 29 29 true 29 29 29.29 29.29 char29 29 29 -30 2017-10-01 2017-10-01 00:00:00 Beijing 30 30 true 30 30 30.3 30.3 char30 30 30 -31 2017-10-01 2017-10-01 00:00:00 Beijing 31 31 true 31 31 31.31 31.31 char31 31 31 -32 2017-10-01 2017-10-01 00:00:00 Beijing 32 32 true 32 32 32.32 32.32 char32 32 32 -33 2017-10-01 2017-10-01 00:00:00 Beijing 33 33 true 33 33 33.33 33.33 char33 33 33 -34 2017-10-01 2017-10-01 00:00:00 Beijing 34 34 true 34 34 34.34 34.34 char34 34 34 -35 2017-10-01 2017-10-01 00:00:00 Beijing 35 35 true 35 35 35.35 35.35 char35 35 35 -36 2017-10-01 2017-10-01 00:00:00 Beijing 36 36 true 36 36 36.36 36.36 char36 36 36 -37 2017-10-01 2017-10-01 00:00:00 Beijing 37 37 true 37 37 37.37 37.37 char37 37 37 -38 2017-10-01 2017-10-01 00:00:00 Beijing 38 38 true 38 38 38.38 38.38 char38 38 38 -39 2017-10-01 2017-10-01 00:00:00 Beijing 39 39 true 39 39 39.39 39.39 char39 39 39 -40 2017-10-01 2017-10-01 00:00:00 Beijing 40 40 true 40 40 40.4 40.4 char40 40 40 -41 2017-10-01 2017-10-01 00:00:00 Beijing 41 41 true 41 41 41.41 41.41 char41 41 41 -42 2017-10-01 2017-10-01 00:00:00 Beijing 42 42 true 42 42 42.42 42.42 char42 42 42 -43 2017-10-01 2017-10-01 00:00:00 Beijing 43 43 true 43 43 43.43 43.43 char43 43 43 -44 2017-10-01 2017-10-01 00:00:00 Beijing 44 44 true 44 44 44.44 44.44 char44 44 44 -45 2017-10-01 2017-10-01 00:00:00 Beijing 45 45 true 45 45 45.45 45.45 char45 45 45 -46 2017-10-01 2017-10-01 00:00:00 Beijing 46 46 true 46 46 46.46 46.46 char46 46 46 -47 2017-10-01 2017-10-01 00:00:00 Beijing 47 47 true 47 47 47.47 47.47 char47 47 47 -48 2017-10-01 2017-10-01 00:00:00 Beijing 48 48 true 48 48 48.48 48.48 char48 48 48 -49 2017-10-01 2017-10-01 00:00:00 Beijing 49 49 true 49 49 49.49 49.49 char49 49 49 -50 2017-10-01 2017-10-01 00:00:00 Beijing 50 50 true 50 50 50.5 50.5 char50 50 50 -51 2017-10-01 2017-10-01 00:00:00 Beijing 51 51 true 51 51 51.51 51.51 char51 51 51 -52 2017-10-01 2017-10-01 00:00:00 Beijing 52 52 true 52 52 52.52 52.52 char52 52 52 -53 2017-10-01 2017-10-01 00:00:00 Beijing 53 53 true 53 53 53.53 53.53 char53 53 53 -54 2017-10-01 2017-10-01 00:00:00 Beijing 54 54 true 54 54 54.54 54.54 char54 54 54 -55 2017-10-01 2017-10-01 00:00:00 Beijing 55 55 true 55 55 55.55 55.55 char55 55 55 -56 2017-10-01 2017-10-01 00:00:00 Beijing 56 56 true 56 56 56.56 56.56 char56 56 56 -57 2017-10-01 2017-10-01 00:00:00 Beijing 57 57 true 57 57 57.57 57.57 char57 57 57 -58 2017-10-01 2017-10-01 00:00:00 Beijing 58 58 true 58 58 58.58 58.58 char58 58 58 -59 2017-10-01 2017-10-01 00:00:00 Beijing 59 59 true 59 59 59.59 59.59 char59 59 59 -60 2017-10-01 2017-10-01 00:00:00 Beijing 60 60 true 60 60 60.6 60.6 char60 60 60 -61 2017-10-01 2017-10-01 00:00:00 Beijing 61 61 true 61 61 61.61 61.61 char61 61 61 -62 2017-10-01 2017-10-01 00:00:00 Beijing 62 62 true 62 62 62.62 62.62 char62 62 62 -63 2017-10-01 2017-10-01 00:00:00 Beijing 63 63 true 63 63 63.63 63.63 char63 63 63 -64 2017-10-01 2017-10-01 00:00:00 Beijing 64 64 true 64 64 64.64 64.64 char64 64 64 -65 2017-10-01 2017-10-01 00:00:00 Beijing 65 65 true 65 65 65.65 65.65 char65 65 65 -66 2017-10-01 2017-10-01 00:00:00 Beijing 66 66 true 66 66 66.66 66.66 char66 66 66 -67 2017-10-01 2017-10-01 00:00:00 Beijing 67 67 true 67 67 67.67 67.67 char67 67 67 -68 2017-10-01 2017-10-01 00:00:00 Beijing 68 68 true 68 68 68.68 68.68 char68 68 68 -69 2017-10-01 2017-10-01 00:00:00 Beijing 69 69 true 69 69 69.69 69.69 char69 69 69 +20 2017-10-01 2017-10-01T00:00 Beijing 20 20 true 20 20 20.2 20.2 char20 20 20 +21 2017-10-01 2017-10-01T00:00 Beijing 21 21 true 21 21 21.21 21.21 char21 21 21 +22 2017-10-01 2017-10-01T00:00 Beijing 22 22 true 22 22 22.22 22.22 char22 22 22 +23 2017-10-01 2017-10-01T00:00 Beijing 23 23 true 23 23 23.23 23.23 char23 23 23 +24 2017-10-01 2017-10-01T00:00 Beijing 24 24 true 24 24 24.24 24.24 char24 24 24 +25 2017-10-01 2017-10-01T00:00 Beijing 25 25 true 25 25 25.25 25.25 char25 25 25 +26 2017-10-01 2017-10-01T00:00 Beijing 26 26 true 26 26 26.26 26.26 char26 26 26 +27 2017-10-01 2017-10-01T00:00 Beijing 27 27 true 27 27 27.27 27.27 char27 27 27 +28 2017-10-01 2017-10-01T00:00 Beijing 28 28 true 28 28 28.28 28.28 char28 28 28 +29 2017-10-01 2017-10-01T00:00 Beijing 29 29 true 29 29 29.29 29.29 char29 29 29 +30 2017-10-01 2017-10-01T00:00 Beijing 30 30 true 30 30 30.3 30.3 char30 30 30 +31 2017-10-01 2017-10-01T00:00 Beijing 31 31 true 31 31 31.31 31.31 char31 31 31 +32 2017-10-01 2017-10-01T00:00 Beijing 32 32 true 32 32 32.32 32.32 char32 32 32 +33 2017-10-01 2017-10-01T00:00 Beijing 33 33 true 33 33 33.33 33.33 char33 33 33 +34 2017-10-01 2017-10-01T00:00 Beijing 34 34 true 34 34 34.34 34.34 char34 34 34 +35 2017-10-01 2017-10-01T00:00 Beijing 35 35 true 35 35 35.35 35.35 char35 35 35 +36 2017-10-01 2017-10-01T00:00 Beijing 36 36 true 36 36 36.36 36.36 char36 36 36 +37 2017-10-01 2017-10-01T00:00 Beijing 37 37 true 37 37 37.37 37.37 char37 37 37 +38 2017-10-01 2017-10-01T00:00 Beijing 38 38 true 38 38 38.38 38.38 char38 38 38 +39 2017-10-01 2017-10-01T00:00 Beijing 39 39 true 39 39 39.39 39.39 char39 39 39 +40 2017-10-01 2017-10-01T00:00 Beijing 40 40 true 40 40 40.4 40.4 char40 40 40 +41 2017-10-01 2017-10-01T00:00 Beijing 41 41 true 41 41 41.41 41.41 char41 41 41 +42 2017-10-01 2017-10-01T00:00 Beijing 42 42 true 42 42 42.42 42.42 char42 42 42 +43 2017-10-01 2017-10-01T00:00 Beijing 43 43 true 43 43 43.43 43.43 char43 43 43 +44 2017-10-01 2017-10-01T00:00 Beijing 44 44 true 44 44 44.44 44.44 char44 44 44 +45 2017-10-01 2017-10-01T00:00 Beijing 45 45 true 45 45 45.45 45.45 char45 45 45 +46 2017-10-01 2017-10-01T00:00 Beijing 46 46 true 46 46 46.46 46.46 char46 46 46 +47 2017-10-01 2017-10-01T00:00 Beijing 47 47 true 47 47 47.47 47.47 char47 47 47 +48 2017-10-01 2017-10-01T00:00 Beijing 48 48 true 48 48 48.48 48.48 char48 48 48 +49 2017-10-01 2017-10-01T00:00 Beijing 49 49 true 49 49 49.49 49.49 char49 49 49 +50 2017-10-01 2017-10-01T00:00 Beijing 50 50 true 50 50 50.5 50.5 char50 50 50 +51 2017-10-01 2017-10-01T00:00 Beijing 51 51 true 51 51 51.51 51.51 char51 51 51 +52 2017-10-01 2017-10-01T00:00 Beijing 52 52 true 52 52 52.52 52.52 char52 52 52 +53 2017-10-01 2017-10-01T00:00 Beijing 53 53 true 53 53 53.53 53.53 char53 53 53 +54 2017-10-01 2017-10-01T00:00 Beijing 54 54 true 54 54 54.54 54.54 char54 54 54 +55 2017-10-01 2017-10-01T00:00 Beijing 55 55 true 55 55 55.55 55.55 char55 55 55 +56 2017-10-01 2017-10-01T00:00 Beijing 56 56 true 56 56 56.56 56.56 char56 56 56 +57 2017-10-01 2017-10-01T00:00 Beijing 57 57 true 57 57 57.57 57.57 char57 57 57 +58 2017-10-01 2017-10-01T00:00 Beijing 58 58 true 58 58 58.58 58.58 char58 58 58 +59 2017-10-01 2017-10-01T00:00 Beijing 59 59 true 59 59 59.59 59.59 char59 59 59 +60 2017-10-01 2017-10-01T00:00 Beijing 60 60 true 60 60 60.6 60.6 char60 60 60 +61 2017-10-01 2017-10-01T00:00 Beijing 61 61 true 61 61 61.61 61.61 char61 61 61 +62 2017-10-01 2017-10-01T00:00 Beijing 62 62 true 62 62 62.62 62.62 char62 62 62 +63 2017-10-01 2017-10-01T00:00 Beijing 63 63 true 63 63 63.63 63.63 char63 63 63 +64 2017-10-01 2017-10-01T00:00 Beijing 64 64 true 64 64 64.64 64.64 char64 64 64 +65 2017-10-01 2017-10-01T00:00 Beijing 65 65 true 65 65 65.65 65.65 char65 65 65 +66 2017-10-01 2017-10-01T00:00 Beijing 66 66 true 66 66 66.66 66.66 char66 66 66 +67 2017-10-01 2017-10-01T00:00 Beijing 67 67 true 67 67 67.67 67.67 char67 67 67 +68 2017-10-01 2017-10-01T00:00 Beijing 68 68 true 68 68 68.68 68.68 char68 68 68 +69 2017-10-01 2017-10-01T00:00 Beijing 69 69 true 69 69 69.69 69.69 char69 69 69 diff --git a/regression-test/data/export_p0/outfile/outfile_expr/test_outfile_expr_generate_col_name.out b/regression-test/data/export_p0/outfile/outfile_expr/test_outfile_expr_generate_col_name.out index d1fc5fa631..b5c2217e48 100644 --- a/regression-test/data/export_p0/outfile/outfile_expr/test_outfile_expr_generate_col_name.out +++ b/regression-test/data/export_p0/outfile/outfile_expr/test_outfile_expr_generate_col_name.out @@ -199,7 +199,7 @@ __max_0 INT Yes false \N NONE 9 id not exist -- !desc_s3 -- -__case_expr_1 TEXT Yes false \N NONE +__case_expr_1 VARCHAR(65533) Yes false \N NONE id INT Yes false \N NONE -- !select_base1 -- @@ -233,7 +233,7 @@ __binary_predicate_4 BOOLEAN Yes false \N NONE __cast_expr_3 BIGINT Yes false \N NONE __in_predicate_6 BOOLEAN Yes false \N NONE __literal_1 TINYINT Yes false \N NONE -__literal_2 TEXT Yes false \N NONE +__literal_2 VARCHAR(65533) Yes false \N NONE id INT Yes false \N NONE -- !select_base1 -- diff --git a/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_array_type.out b/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_array_type.out index b8843a2fd6..3722161c9d 100644 --- a/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_array_type.out +++ b/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_array_type.out @@ -60,12 +60,12 @@ 7 doris7 [null, null, null, "2017-10-01 00:00:00", "2011-10-01 01:23:59"] -- !select_load_datetime -- -1 doris1 ["2017-10-01 00:00:00", "2011-10-01 01:23:59"] -2 doris2 ["2017-10-01 00:00:00", "2011-10-01 01:23:59"] +1 doris1 ["2017-10-01 00:00:00.000000", "2011-10-01 01:23:59.000000"] +2 doris2 ["2017-10-01 00:00:00.000000", "2011-10-01 01:23:59.000000"] 3 doris3 [] -5 doris5 ["2017-10-01 00:00:00", null, "2017-10-01 00:00:00"] +5 doris5 ["2017-10-01 00:00:00.000000", null, "2017-10-01 00:00:00.000000"] 6 doris6 [null, null, null] -7 doris7 [null, null, null, "2017-10-01 00:00:00", "2011-10-01 01:23:59"] +7 doris7 [null, null, null, "2017-10-01 00:00:00.000000", "2011-10-01 01:23:59.000000"] -- !select_base_varchar -- 1 doris1 ["2017-10-01 00:00:00", "2011-10-01 01:23:59"] diff --git a/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_complex_type.out b/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_complex_type.out index 608af5367d..b1742fc961 100644 --- a/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_complex_type.out +++ b/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_complex_type.out @@ -116,14 +116,14 @@ 10 doris_10 {"user_id": 10, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": null, "age": null, "sex": null, "bool_col": null, "int_col": null, "bigint_col": null, "largeint_col": null, "float_col": null, "double_col": null, "char_col": null, "decimal_col": null} -- !select_load7 -- -1 doris_1 {"user_id": 1, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 1, "sex": 1, "bool_col": 1, "int_col": 1, "bigint_col": 1, "largeint_col": "1", "float_col": 1.1, "double_col": 1.1, "char_col": "char1_1234", "decimal_col": 1} -2 doris_2 {"user_id": 2, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 2, "sex": 2, "bool_col": 1, "int_col": 2, "bigint_col": 2, "largeint_col": "2", "float_col": 2.2, "double_col": 2.2, "char_col": "char2_1234", "decimal_col": 2} -3 doris_3 {"user_id": 3, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 3, "sex": 3, "bool_col": 1, "int_col": 3, "bigint_col": 3, "largeint_col": "3", "float_col": 3.3, "double_col": 3.3, "char_col": "char3_1234", "decimal_col": 3} -4 doris_4 {"user_id": 4, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 4, "sex": 4, "bool_col": 1, "int_col": 4, "bigint_col": 4, "largeint_col": "4", "float_col": 4.4, "double_col": 4.4, "char_col": "char4_1234", "decimal_col": 4} -5 doris_5 {"user_id": 5, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 5, "sex": 5, "bool_col": 1, "int_col": 5, "bigint_col": 5, "largeint_col": "5", "float_col": 5.5, "double_col": 5.5, "char_col": "char5_1234", "decimal_col": 5} -6 doris_6 {"user_id": 6, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 6, "sex": 6, "bool_col": 1, "int_col": 6, "bigint_col": 6, "largeint_col": "6", "float_col": 6.6, "double_col": 6.6, "char_col": "char6_1234", "decimal_col": 6} -7 doris_7 {"user_id": 7, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 7, "sex": 7, "bool_col": 1, "int_col": 7, "bigint_col": 7, "largeint_col": "7", "float_col": 7.7, "double_col": 7.7, "char_col": "char7_1234", "decimal_col": 7} -8 doris_8 {"user_id": 8, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 8, "sex": 8, "bool_col": 1, "int_col": 8, "bigint_col": 8, "largeint_col": "8", "float_col": 8.8, "double_col": 8.8, "char_col": "char8_1234", "decimal_col": 8} -9 doris_9 {"user_id": 9, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 9, "sex": 9, "bool_col": 1, "int_col": 9, "bigint_col": 9, "largeint_col": "9", "float_col": 9.9, "double_col": 9.9, "char_col": "char9_1234", "decimal_col": 9} -10 doris_10 {"user_id": 10, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": null, "age": null, "sex": null, "bool_col": null, "int_col": null, "bigint_col": null, "largeint_col": null, "float_col": null, "double_col": null, "char_col": null, "decimal_col": null} +1 doris_1 {"user_id": 1, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 1, "sex": 1, "bool_col": 1, "int_col": 1, "bigint_col": 1, "largeint_col": "1", "float_col": 1.1, "double_col": 1.1, "char_col": "char1_1234", "decimal_col": 1} +2 doris_2 {"user_id": 2, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 2, "sex": 2, "bool_col": 1, "int_col": 2, "bigint_col": 2, "largeint_col": "2", "float_col": 2.2, "double_col": 2.2, "char_col": "char2_1234", "decimal_col": 2} +3 doris_3 {"user_id": 3, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 3, "sex": 3, "bool_col": 1, "int_col": 3, "bigint_col": 3, "largeint_col": "3", "float_col": 3.3, "double_col": 3.3, "char_col": "char3_1234", "decimal_col": 3} +4 doris_4 {"user_id": 4, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 4, "sex": 4, "bool_col": 1, "int_col": 4, "bigint_col": 4, "largeint_col": "4", "float_col": 4.4, "double_col": 4.4, "char_col": "char4_1234", "decimal_col": 4} +5 doris_5 {"user_id": 5, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 5, "sex": 5, "bool_col": 1, "int_col": 5, "bigint_col": 5, "largeint_col": "5", "float_col": 5.5, "double_col": 5.5, "char_col": "char5_1234", "decimal_col": 5} +6 doris_6 {"user_id": 6, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 6, "sex": 6, "bool_col": 1, "int_col": 6, "bigint_col": 6, "largeint_col": "6", "float_col": 6.6, "double_col": 6.6, "char_col": "char6_1234", "decimal_col": 6} +7 doris_7 {"user_id": 7, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 7, "sex": 7, "bool_col": 1, "int_col": 7, "bigint_col": 7, "largeint_col": "7", "float_col": 7.7, "double_col": 7.7, "char_col": "char7_1234", "decimal_col": 7} +8 doris_8 {"user_id": 8, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 8, "sex": 8, "bool_col": 1, "int_col": 8, "bigint_col": 8, "largeint_col": "8", "float_col": 8.8, "double_col": 8.8, "char_col": "char8_1234", "decimal_col": 8} +9 doris_9 {"user_id": 9, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 9, "sex": 9, "bool_col": 1, "int_col": 9, "bigint_col": 9, "largeint_col": "9", "float_col": 9.9, "double_col": 9.9, "char_col": "char9_1234", "decimal_col": 9} +10 doris_10 {"user_id": 10, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": null, "age": null, "sex": null, "bool_col": null, "int_col": null, "bigint_col": null, "largeint_col": null, "float_col": null, "double_col": null, "char_col": null, "decimal_col": null} diff --git a/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_map_type.out b/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_map_type.out index 859e2baf93..7830e41751 100644 --- a/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_map_type.out +++ b/regression-test/data/export_p0/outfile/parquet/test_outfile_parquet_map_type.out @@ -208,16 +208,16 @@ 10 doris10 {"2003-04-29 01:02:03":"a", "2006-02-22 02:01:04":"max_largeint", "2020-03-21 19:21:23":"b"} -- !select_load10 -- -1 doris1 {"2023-04-20 01:02:03":"null", "2018-04-20 10:40:35":"b"} -2 doris2 {"2000-04-20 00:00:00":"a", "1967-12-31 12:24:56":"b"} -3 doris3 {"2023-01-01 00:00:00":"b", "2023-02-27 00:01:02":"d"} +1 doris1 {"2023-04-20 01:02:03.000000":"null", "2018-04-20 10:40:35.000000":"b"} +2 doris2 {"2000-04-20 00:00:00.000000":"a", "1967-12-31 12:24:56.000000":"b"} +3 doris3 {"2023-01-01 00:00:00.000000":"b", "2023-02-27 00:01:02.000000":"d"} 4 doris4 {} 5 doris5 {} 6 \N \N 7 doris7 \N -8 doris8 {"2025-12-31 12:01:41":"min_largeint", "2006-02-19 09:01:02":"max_largeint"} -9 doris9 {"0209-04-20 00:00:00":"min_largeint", "0102-03-21 00:00:00":"b"} -10 doris10 {"2003-04-29 01:02:03":"a", "2006-02-22 02:01:04":"max_largeint", "2020-03-21 19:21:23":"b"} +8 doris8 {"2025-12-31 12:01:41.000000":"min_largeint", "2006-02-19 09:01:02.000000":"max_largeint"} +9 doris9 {"0209-04-20 00:00:00.000000":"min_largeint", "0102-03-21 00:00:00.000000":"b"} +10 doris10 {"2003-04-29 01:02:03.000000":"a", "2006-02-22 02:01:04.000000":"max_largeint", "2020-03-21 19:21:23.000000":"b"} -- !select_base11 -- 1 doris1 {"2023-04-20 01:02:03":null, "2018-04-20 10:40:35":123} @@ -230,14 +230,14 @@ 8 doris8 {"2025-12-31 12:01:41":524524, "2006-02-19 09:01:02":2534} -- !select_load11 -- -1 doris1 {"2023-04-20 01:02:03":null, "2018-04-20 10:40:35":123} -2 doris2 {"2000-04-20 00:00:00":-2147483648, "1967-12-31 12:24:56":2147483647} -3 doris3 {"2023-01-01 00:00:00":1246, "2023-02-27 00:01:02":5646} +1 doris1 {"2023-04-20 01:02:03.000000":null, "2018-04-20 10:40:35.000000":123} +2 doris2 {"2000-04-20 00:00:00.000000":-2147483648, "1967-12-31 12:24:56.000000":2147483647} +3 doris3 {"2023-01-01 00:00:00.000000":1246, "2023-02-27 00:01:02.000000":5646} 4 doris4 {} 5 doris5 {} 6 \N \N 7 doris7 \N -8 doris8 {"2025-12-31 12:01:41":524524, "2006-02-19 09:01:02":2534} +8 doris8 {"2025-12-31 12:01:41.000000":524524, "2006-02-19 09:01:02.000000":2534} -- !select_base12 -- 1 doris1 {"2023-04-20":null, "2018-04-20":123} @@ -290,14 +290,14 @@ 8 doris8 {"2025-12-31 11:22:33":"min_largeint", "2006-02-19 00:44:55":"max_largeint"} -- !select_load14 -- -1 doris1 {"2023-04-20 12:20:03":"null", "2018-04-20 12:59:59":null} -2 doris2 {"2000-04-20 23:59:59":"-2147483648", "1967-12-31 00:00:00":"2147483647"} -3 doris3 {"2023-01-01 07:24:54":"1246", "2023-02-27 15:12:13":"5646"} +1 doris1 {"2023-04-20 12:20:03.000000":"null", "2018-04-20 12:59:59.000000":null} +2 doris2 {"2000-04-20 23:59:59.000000":"-2147483648", "1967-12-31 00:00:00.000000":"2147483647"} +3 doris3 {"2023-01-01 07:24:54.000000":"1246", "2023-02-27 15:12:13.000000":"5646"} 4 doris4 {} 5 doris5 {} 6 \N \N 7 doris7 \N -8 doris8 {"2025-12-31 11:22:33":"min_largeint", "2006-02-19 00:44:55":"max_largeint"} +8 doris8 {"2025-12-31 11:22:33.000000":"min_largeint", "2006-02-19 00:44:55.000000":"max_largeint"} -- !select_base15 -- 1 doris1 {100:"null", 111:"b"} diff --git a/regression-test/data/export_p0/test_export_data_types.out b/regression-test/data/export_p0/test_export_data_types.out index bc53b064a8..2a582480b7 100644 --- a/regression-test/data/export_p0/test_export_data_types.out +++ b/regression-test/data/export_p0/test_export_data_types.out @@ -6,10 +6,10 @@ 4 0000-01-01 0000-01-01 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 -- !select_load1 -- -1 2023-04-20 2023-04-20 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 -2 9999-12-31 9999-12-31 9999-12-31T23:59:59 9999-12-31T23:59:59 2023-04-20T00:00:00.120 2023-04-20T00:00:00.334400 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 -3 2023-04-21 2023-04-21 2023-04-20T12:34:56 2023-04-20T00:00 2023-04-20T00:00:00.123 2023-04-20T00:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 -4 0000-01-01 0000-01-01 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 +1 2023-04-20 2023-04-20 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 1 1 1 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 +2 9999-12-31 9999-12-31 9999-12-31 23:59:59 9999-12-31 23:59:59 2023-04-20 00:00:00.120000 2023-04-20 00:00:00.334400 Haidian -32768 -128 1 -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4013e-45 5e-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 +3 2023-04-21 2023-04-21 2023-04-20 12:34:56 2023-04-20 00:00:00 2023-04-20 00:00:00.123000 2023-04-20 00:00:00.123456 Beijing 32767 127 1 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157e+308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 +4 0000-01-01 0000-01-01 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 4 4 1 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 -- !select_load2 -- 1 2023-04-20 2023-04-20 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 @@ -24,14 +24,14 @@ 4 0000-01-01 0000-01-01 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 -- !select_load4 -- -1 2023-04-20 2023-04-20 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 -2 9999-12-31 9999-12-31 9999-12-31T23:59:59 9999-12-31T23:59:59 2023-04-20T00:00:00.120 2023-04-20T00:00:00.334400 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 -3 2023-04-21 2023-04-21 2023-04-20T12:34:56 2023-04-20T00:00 2023-04-20T00:00:00.123 2023-04-20T00:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 -4 0000-01-01 0000-01-01 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 +1 2023-04-20 2023-04-20 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 1 1 1 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 +2 9999-12-31 9999-12-31 9999-12-31 23:59:59 9999-12-31 23:59:59 2023-04-20 00:00:00.120000 2023-04-20 00:00:00.334400 Haidian -32768 -128 1 -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4013e-45 5e-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 +3 2023-04-21 2023-04-21 2023-04-20 12:34:56 2023-04-20 00:00:00 2023-04-20 00:00:00.123000 2023-04-20 00:00:00.123456 Beijing 32767 127 1 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157e+308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 +4 0000-01-01 0000-01-01 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 4 4 1 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 -- !select_load5 -- -1 2023-04-20 2023-04-20 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 -2 9999-12-31 9999-12-31 9999-12-31T23:59:59 9999-12-31T23:59:59 2023-04-20T00:00:00.120 2023-04-20T00:00:00.334400 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 -3 2023-04-21 2023-04-21 2023-04-20T12:34:56 2023-04-20T00:00 2023-04-20T00:00:00.123 2023-04-20T00:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 -4 0000-01-01 0000-01-01 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 +1 2023-04-20 2023-04-20 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 1 1 1 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 +2 9999-12-31 9999-12-31 9999-12-31 23:59:59 9999-12-31 23:59:59 2023-04-20 00:00:00.120000 2023-04-20 00:00:00.334400 Haidian -32768 -128 1 -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4013e-45 5e-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 +3 2023-04-21 2023-04-21 2023-04-20 12:34:56 2023-04-20 00:00:00 2023-04-20 00:00:00.123000 2023-04-20 00:00:00.123456 Beijing 32767 127 1 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157e+308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 +4 0000-01-01 0000-01-01 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 4 4 1 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 diff --git a/regression-test/data/export_p0/test_export_orc.out b/regression-test/data/export_p0/test_export_orc.out index 906795cefa..0729d8bcfd 100644 --- a/regression-test/data/export_p0/test_export_orc.out +++ b/regression-test/data/export_p0/test_export_orc.out @@ -102,104 +102,104 @@ 100 2017-10-01 2017-10-01T00:00 \N \N \N \N \N \N \N \N \N \N \N -- !select_load1 -- -1 Beijing 1 1 true 1 1 1.1 1.1 char1 1 -2 Beijing 2 2 true 2 2 2.2 2.2 char2 2 -3 Beijing 3 3 true 3 3 3.3 3.3 char3 3 -4 Beijing 4 4 true 4 4 4.4 4.4 char4 4 -5 Beijing 5 5 true 5 5 5.5 5.5 char5 5 -6 Beijing 6 6 true 6 6 6.6 6.6 char6 6 -7 Beijing 7 7 true 7 7 7.7 7.7 char7 7 -8 Beijing 8 8 true 8 8 8.8 8.8 char8 8 -9 Beijing 9 9 true 9 9 9.9 9.9 char9 9 -10 Beijing 10 10 true 10 10 10.1 10.1 char10 10 -11 Beijing 11 11 true 11 11 11.11 11.11 char11 11 -12 Beijing 12 12 true 12 12 12.12 12.12 char12 12 -13 Beijing 13 13 true 13 13 13.13 13.13 char13 13 -14 Beijing 14 14 true 14 14 14.14 14.14 char14 14 -15 Beijing 15 15 true 15 15 15.15 15.15 char15 15 -16 Beijing 16 16 true 16 16 16.16 16.16 char16 16 -17 Beijing 17 17 true 17 17 17.17 17.17 char17 17 -18 Beijing 18 18 true 18 18 18.18 18.18 char18 18 -19 Beijing 19 19 true 19 19 19.19 19.19 char19 19 -20 Beijing 20 20 true 20 20 20.2 20.2 char20 20 -21 Beijing 21 21 true 21 21 21.21 21.21 char21 21 -22 Beijing 22 22 true 22 22 22.22 22.22 char22 22 -23 Beijing 23 23 true 23 23 23.23 23.23 char23 23 -24 Beijing 24 24 true 24 24 24.24 24.24 char24 24 -25 Beijing 25 25 true 25 25 25.25 25.25 char25 25 -26 Beijing 26 26 true 26 26 26.26 26.26 char26 26 -27 Beijing 27 27 true 27 27 27.27 27.27 char27 27 -28 Beijing 28 28 true 28 28 28.28 28.28 char28 28 -29 Beijing 29 29 true 29 29 29.29 29.29 char29 29 -30 Beijing 30 30 true 30 30 30.3 30.3 char30 30 -31 Beijing 31 31 true 31 31 31.31 31.31 char31 31 -32 Beijing 32 32 true 32 32 32.32 32.32 char32 32 -33 Beijing 33 33 true 33 33 33.33 33.33 char33 33 -34 Beijing 34 34 true 34 34 34.34 34.34 char34 34 -35 Beijing 35 35 true 35 35 35.35 35.35 char35 35 -36 Beijing 36 36 true 36 36 36.36 36.36 char36 36 -37 Beijing 37 37 true 37 37 37.37 37.37 char37 37 -38 Beijing 38 38 true 38 38 38.38 38.38 char38 38 -39 Beijing 39 39 true 39 39 39.39 39.39 char39 39 -40 Beijing 40 40 true 40 40 40.4 40.4 char40 40 -41 Beijing 41 41 true 41 41 41.41 41.41 char41 41 -42 Beijing 42 42 true 42 42 42.42 42.42 char42 42 -43 Beijing 43 43 true 43 43 43.43 43.43 char43 43 -44 Beijing 44 44 true 44 44 44.44 44.44 char44 44 -45 Beijing 45 45 true 45 45 45.45 45.45 char45 45 -46 Beijing 46 46 true 46 46 46.46 46.46 char46 46 -47 Beijing 47 47 true 47 47 47.47 47.47 char47 47 -48 Beijing 48 48 true 48 48 48.48 48.48 char48 48 -49 Beijing 49 49 true 49 49 49.49 49.49 char49 49 -50 Beijing 50 50 true 50 50 50.5 50.5 char50 50 -51 Beijing 51 51 true 51 51 51.51 51.51 char51 51 -52 Beijing 52 52 true 52 52 52.52 52.52 char52 52 -53 Beijing 53 53 true 53 53 53.53 53.53 char53 53 -54 Beijing 54 54 true 54 54 54.54 54.54 char54 54 -55 Beijing 55 55 true 55 55 55.55 55.55 char55 55 -56 Beijing 56 56 true 56 56 56.56 56.56 char56 56 -57 Beijing 57 57 true 57 57 57.57 57.57 char57 57 -58 Beijing 58 58 true 58 58 58.58 58.58 char58 58 -59 Beijing 59 59 true 59 59 59.59 59.59 char59 59 -60 Beijing 60 60 true 60 60 60.6 60.6 char60 60 -61 Beijing 61 61 true 61 61 61.61 61.61 char61 61 -62 Beijing 62 62 true 62 62 62.62 62.62 char62 62 -63 Beijing 63 63 true 63 63 63.63 63.63 char63 63 -64 Beijing 64 64 true 64 64 64.64 64.64 char64 64 -65 Beijing 65 65 true 65 65 65.65 65.65 char65 65 -66 Beijing 66 66 true 66 66 66.66 66.66 char66 66 -67 Beijing 67 67 true 67 67 67.67 67.67 char67 67 -68 Beijing 68 68 true 68 68 68.68 68.68 char68 68 -69 Beijing 69 69 true 69 69 69.69 69.69 char69 69 -70 Beijing 70 70 true 70 70 70.7 70.7 char70 70 -71 Beijing 71 71 true 71 71 71.71 71.71 char71 71 -72 Beijing 72 72 true 72 72 72.72 72.72 char72 72 -73 Beijing 73 73 true 73 73 73.73 73.73 char73 73 -74 Beijing 74 74 true 74 74 74.74 74.74 char74 74 -75 Beijing 75 75 true 75 75 75.75 75.75 char75 75 -76 Beijing 76 76 true 76 76 76.76 76.76 char76 76 -77 Beijing 77 77 true 77 77 77.77 77.77 char77 77 -78 Beijing 78 78 true 78 78 78.78 78.78 char78 78 -79 Beijing 79 79 true 79 79 79.79 79.79 char79 79 -80 Beijing 80 80 true 80 80 80.8 80.8 char80 80 -81 Beijing 81 81 true 81 81 81.81 81.81 char81 81 -82 Beijing 82 82 true 82 82 82.82 82.82 char82 82 -83 Beijing 83 83 true 83 83 83.83 83.83 char83 83 -84 Beijing 84 84 true 84 84 84.84 84.84 char84 84 -85 Beijing 85 85 true 85 85 85.85 85.85 char85 85 -86 Beijing 86 86 true 86 86 86.86 86.86 char86 86 -87 Beijing 87 87 true 87 87 87.87 87.87 char87 87 -88 Beijing 88 88 true 88 88 88.88 88.88 char88 88 -89 Beijing 89 89 true 89 89 89.89 89.89 char89 89 -90 Beijing 90 90 true 90 90 90.9 90.9 char90 90 -91 Beijing 91 91 true 91 91 91.91 91.91 char91 91 -92 Beijing 92 92 true 92 92 92.92 92.92 char92 92 -93 Beijing 93 93 true 93 93 93.93 93.93 char93 93 -94 Beijing 94 94 true 94 94 94.94 94.94 char94 94 -95 Beijing 95 95 true 95 95 95.95 95.95 char95 95 -96 Beijing 96 96 true 96 96 96.96 96.96 char96 96 -97 Beijing 97 97 true 97 97 97.97 97.97 char97 97 -98 Beijing 98 98 true 98 98 98.98 98.98 char98 98 -99 Beijing 99 99 true 99 99 99.99 99.99 char99 99 -100 \N \N \N \N \N \N \N \N \N \N +1 2017-10-01 2017-10-01T00:00 Beijing 1 1 true 1 1 1 1.1 1.1 char1 1 +2 2017-10-01 2017-10-01T00:00 Beijing 2 2 true 2 2 2 2.2 2.2 char2 2 +3 2017-10-01 2017-10-01T00:00 Beijing 3 3 true 3 3 3 3.3 3.3 char3 3 +4 2017-10-01 2017-10-01T00:00 Beijing 4 4 true 4 4 4 4.4 4.4 char4 4 +5 2017-10-01 2017-10-01T00:00 Beijing 5 5 true 5 5 5 5.5 5.5 char5 5 +6 2017-10-01 2017-10-01T00:00 Beijing 6 6 true 6 6 6 6.6 6.6 char6 6 +7 2017-10-01 2017-10-01T00:00 Beijing 7 7 true 7 7 7 7.7 7.7 char7 7 +8 2017-10-01 2017-10-01T00:00 Beijing 8 8 true 8 8 8 8.8 8.8 char8 8 +9 2017-10-01 2017-10-01T00:00 Beijing 9 9 true 9 9 9 9.9 9.9 char9 9 +10 2017-10-01 2017-10-01T00:00 Beijing 10 10 true 10 10 10 10.1 10.1 char10 10 +11 2017-10-01 2017-10-01T00:00 Beijing 11 11 true 11 11 11 11.11 11.11 char11 11 +12 2017-10-01 2017-10-01T00:00 Beijing 12 12 true 12 12 12 12.12 12.12 char12 12 +13 2017-10-01 2017-10-01T00:00 Beijing 13 13 true 13 13 13 13.13 13.13 char13 13 +14 2017-10-01 2017-10-01T00:00 Beijing 14 14 true 14 14 14 14.14 14.14 char14 14 +15 2017-10-01 2017-10-01T00:00 Beijing 15 15 true 15 15 15 15.15 15.15 char15 15 +16 2017-10-01 2017-10-01T00:00 Beijing 16 16 true 16 16 16 16.16 16.16 char16 16 +17 2017-10-01 2017-10-01T00:00 Beijing 17 17 true 17 17 17 17.17 17.17 char17 17 +18 2017-10-01 2017-10-01T00:00 Beijing 18 18 true 18 18 18 18.18 18.18 char18 18 +19 2017-10-01 2017-10-01T00:00 Beijing 19 19 true 19 19 19 19.19 19.19 char19 19 +20 2017-10-01 2017-10-01T00:00 Beijing 20 20 true 20 20 20 20.2 20.2 char20 20 +21 2017-10-01 2017-10-01T00:00 Beijing 21 21 true 21 21 21 21.21 21.21 char21 21 +22 2017-10-01 2017-10-01T00:00 Beijing 22 22 true 22 22 22 22.22 22.22 char22 22 +23 2017-10-01 2017-10-01T00:00 Beijing 23 23 true 23 23 23 23.23 23.23 char23 23 +24 2017-10-01 2017-10-01T00:00 Beijing 24 24 true 24 24 24 24.24 24.24 char24 24 +25 2017-10-01 2017-10-01T00:00 Beijing 25 25 true 25 25 25 25.25 25.25 char25 25 +26 2017-10-01 2017-10-01T00:00 Beijing 26 26 true 26 26 26 26.26 26.26 char26 26 +27 2017-10-01 2017-10-01T00:00 Beijing 27 27 true 27 27 27 27.27 27.27 char27 27 +28 2017-10-01 2017-10-01T00:00 Beijing 28 28 true 28 28 28 28.28 28.28 char28 28 +29 2017-10-01 2017-10-01T00:00 Beijing 29 29 true 29 29 29 29.29 29.29 char29 29 +30 2017-10-01 2017-10-01T00:00 Beijing 30 30 true 30 30 30 30.3 30.3 char30 30 +31 2017-10-01 2017-10-01T00:00 Beijing 31 31 true 31 31 31 31.31 31.31 char31 31 +32 2017-10-01 2017-10-01T00:00 Beijing 32 32 true 32 32 32 32.32 32.32 char32 32 +33 2017-10-01 2017-10-01T00:00 Beijing 33 33 true 33 33 33 33.33 33.33 char33 33 +34 2017-10-01 2017-10-01T00:00 Beijing 34 34 true 34 34 34 34.34 34.34 char34 34 +35 2017-10-01 2017-10-01T00:00 Beijing 35 35 true 35 35 35 35.35 35.35 char35 35 +36 2017-10-01 2017-10-01T00:00 Beijing 36 36 true 36 36 36 36.36 36.36 char36 36 +37 2017-10-01 2017-10-01T00:00 Beijing 37 37 true 37 37 37 37.37 37.37 char37 37 +38 2017-10-01 2017-10-01T00:00 Beijing 38 38 true 38 38 38 38.38 38.38 char38 38 +39 2017-10-01 2017-10-01T00:00 Beijing 39 39 true 39 39 39 39.39 39.39 char39 39 +40 2017-10-01 2017-10-01T00:00 Beijing 40 40 true 40 40 40 40.4 40.4 char40 40 +41 2017-10-01 2017-10-01T00:00 Beijing 41 41 true 41 41 41 41.41 41.41 char41 41 +42 2017-10-01 2017-10-01T00:00 Beijing 42 42 true 42 42 42 42.42 42.42 char42 42 +43 2017-10-01 2017-10-01T00:00 Beijing 43 43 true 43 43 43 43.43 43.43 char43 43 +44 2017-10-01 2017-10-01T00:00 Beijing 44 44 true 44 44 44 44.44 44.44 char44 44 +45 2017-10-01 2017-10-01T00:00 Beijing 45 45 true 45 45 45 45.45 45.45 char45 45 +46 2017-10-01 2017-10-01T00:00 Beijing 46 46 true 46 46 46 46.46 46.46 char46 46 +47 2017-10-01 2017-10-01T00:00 Beijing 47 47 true 47 47 47 47.47 47.47 char47 47 +48 2017-10-01 2017-10-01T00:00 Beijing 48 48 true 48 48 48 48.48 48.48 char48 48 +49 2017-10-01 2017-10-01T00:00 Beijing 49 49 true 49 49 49 49.49 49.49 char49 49 +50 2017-10-01 2017-10-01T00:00 Beijing 50 50 true 50 50 50 50.5 50.5 char50 50 +51 2017-10-01 2017-10-01T00:00 Beijing 51 51 true 51 51 51 51.51 51.51 char51 51 +52 2017-10-01 2017-10-01T00:00 Beijing 52 52 true 52 52 52 52.52 52.52 char52 52 +53 2017-10-01 2017-10-01T00:00 Beijing 53 53 true 53 53 53 53.53 53.53 char53 53 +54 2017-10-01 2017-10-01T00:00 Beijing 54 54 true 54 54 54 54.54 54.54 char54 54 +55 2017-10-01 2017-10-01T00:00 Beijing 55 55 true 55 55 55 55.55 55.55 char55 55 +56 2017-10-01 2017-10-01T00:00 Beijing 56 56 true 56 56 56 56.56 56.56 char56 56 +57 2017-10-01 2017-10-01T00:00 Beijing 57 57 true 57 57 57 57.57 57.57 char57 57 +58 2017-10-01 2017-10-01T00:00 Beijing 58 58 true 58 58 58 58.58 58.58 char58 58 +59 2017-10-01 2017-10-01T00:00 Beijing 59 59 true 59 59 59 59.59 59.59 char59 59 +60 2017-10-01 2017-10-01T00:00 Beijing 60 60 true 60 60 60 60.6 60.6 char60 60 +61 2017-10-01 2017-10-01T00:00 Beijing 61 61 true 61 61 61 61.61 61.61 char61 61 +62 2017-10-01 2017-10-01T00:00 Beijing 62 62 true 62 62 62 62.62 62.62 char62 62 +63 2017-10-01 2017-10-01T00:00 Beijing 63 63 true 63 63 63 63.63 63.63 char63 63 +64 2017-10-01 2017-10-01T00:00 Beijing 64 64 true 64 64 64 64.64 64.64 char64 64 +65 2017-10-01 2017-10-01T00:00 Beijing 65 65 true 65 65 65 65.65 65.65 char65 65 +66 2017-10-01 2017-10-01T00:00 Beijing 66 66 true 66 66 66 66.66 66.66 char66 66 +67 2017-10-01 2017-10-01T00:00 Beijing 67 67 true 67 67 67 67.67 67.67 char67 67 +68 2017-10-01 2017-10-01T00:00 Beijing 68 68 true 68 68 68 68.68 68.68 char68 68 +69 2017-10-01 2017-10-01T00:00 Beijing 69 69 true 69 69 69 69.69 69.69 char69 69 +70 2017-10-01 2017-10-01T00:00 Beijing 70 70 true 70 70 70 70.7 70.7 char70 70 +71 2017-10-01 2017-10-01T00:00 Beijing 71 71 true 71 71 71 71.71 71.71 char71 71 +72 2017-10-01 2017-10-01T00:00 Beijing 72 72 true 72 72 72 72.72 72.72 char72 72 +73 2017-10-01 2017-10-01T00:00 Beijing 73 73 true 73 73 73 73.73 73.73 char73 73 +74 2017-10-01 2017-10-01T00:00 Beijing 74 74 true 74 74 74 74.74 74.74 char74 74 +75 2017-10-01 2017-10-01T00:00 Beijing 75 75 true 75 75 75 75.75 75.75 char75 75 +76 2017-10-01 2017-10-01T00:00 Beijing 76 76 true 76 76 76 76.76 76.76 char76 76 +77 2017-10-01 2017-10-01T00:00 Beijing 77 77 true 77 77 77 77.77 77.77 char77 77 +78 2017-10-01 2017-10-01T00:00 Beijing 78 78 true 78 78 78 78.78 78.78 char78 78 +79 2017-10-01 2017-10-01T00:00 Beijing 79 79 true 79 79 79 79.79 79.79 char79 79 +80 2017-10-01 2017-10-01T00:00 Beijing 80 80 true 80 80 80 80.8 80.8 char80 80 +81 2017-10-01 2017-10-01T00:00 Beijing 81 81 true 81 81 81 81.81 81.81 char81 81 +82 2017-10-01 2017-10-01T00:00 Beijing 82 82 true 82 82 82 82.82 82.82 char82 82 +83 2017-10-01 2017-10-01T00:00 Beijing 83 83 true 83 83 83 83.83 83.83 char83 83 +84 2017-10-01 2017-10-01T00:00 Beijing 84 84 true 84 84 84 84.84 84.84 char84 84 +85 2017-10-01 2017-10-01T00:00 Beijing 85 85 true 85 85 85 85.85 85.85 char85 85 +86 2017-10-01 2017-10-01T00:00 Beijing 86 86 true 86 86 86 86.86 86.86 char86 86 +87 2017-10-01 2017-10-01T00:00 Beijing 87 87 true 87 87 87 87.87 87.87 char87 87 +88 2017-10-01 2017-10-01T00:00 Beijing 88 88 true 88 88 88 88.88 88.88 char88 88 +89 2017-10-01 2017-10-01T00:00 Beijing 89 89 true 89 89 89 89.89 89.89 char89 89 +90 2017-10-01 2017-10-01T00:00 Beijing 90 90 true 90 90 90 90.9 90.9 char90 90 +91 2017-10-01 2017-10-01T00:00 Beijing 91 91 true 91 91 91 91.91 91.91 char91 91 +92 2017-10-01 2017-10-01T00:00 Beijing 92 92 true 92 92 92 92.92 92.92 char92 92 +93 2017-10-01 2017-10-01T00:00 Beijing 93 93 true 93 93 93 93.93 93.93 char93 93 +94 2017-10-01 2017-10-01T00:00 Beijing 94 94 true 94 94 94 94.94 94.94 char94 94 +95 2017-10-01 2017-10-01T00:00 Beijing 95 95 true 95 95 95 95.95 95.95 char95 95 +96 2017-10-01 2017-10-01T00:00 Beijing 96 96 true 96 96 96 96.96 96.96 char96 96 +97 2017-10-01 2017-10-01T00:00 Beijing 97 97 true 97 97 97 97.97 97.97 char97 97 +98 2017-10-01 2017-10-01T00:00 Beijing 98 98 true 98 98 98 98.98 98.98 char98 98 +99 2017-10-01 2017-10-01T00:00 Beijing 99 99 true 99 99 99 99.99 99.99 char99 99 +100 2017-10-01 2017-10-01T00:00 \N \N \N \N \N \N \N \N \N \N \N diff --git a/regression-test/data/export_p0/test_export_parquet.out b/regression-test/data/export_p0/test_export_parquet.out index 8e1377bda1..764e4cd8b0 100644 --- a/regression-test/data/export_p0/test_export_parquet.out +++ b/regression-test/data/export_p0/test_export_parquet.out @@ -102,104 +102,104 @@ 99 2017-10-01 2017-10-01T00:00 Beijing 99 99 true 99 99 99 99.99 99.99 char99 99 -- !select_load1 -- -1 2017-10-01 2017-10-01 00:00:00 Beijing 1 1 true 1 1 1.1 1.1 char1 1 1 -10 2017-10-01 2017-10-01 00:00:00 Beijing 10 10 true 10 10 10.1 10.1 char10 10 10 -100 2017-10-01 2017-10-01 00:00:00 \N \N \N \N \N \N \N \N \N \N \N -11 2017-10-01 2017-10-01 00:00:00 Beijing 11 11 true 11 11 11.11 11.11 char11 11 11 -12 2017-10-01 2017-10-01 00:00:00 Beijing 12 12 true 12 12 12.12 12.12 char12 12 12 -13 2017-10-01 2017-10-01 00:00:00 Beijing 13 13 true 13 13 13.13 13.13 char13 13 13 -14 2017-10-01 2017-10-01 00:00:00 Beijing 14 14 true 14 14 14.14 14.14 char14 14 14 -15 2017-10-01 2017-10-01 00:00:00 Beijing 15 15 true 15 15 15.15 15.15 char15 15 15 -16 2017-10-01 2017-10-01 00:00:00 Beijing 16 16 true 16 16 16.16 16.16 char16 16 16 -17 2017-10-01 2017-10-01 00:00:00 Beijing 17 17 true 17 17 17.17 17.17 char17 17 17 -18 2017-10-01 2017-10-01 00:00:00 Beijing 18 18 true 18 18 18.18 18.18 char18 18 18 -19 2017-10-01 2017-10-01 00:00:00 Beijing 19 19 true 19 19 19.19 19.19 char19 19 19 -2 2017-10-01 2017-10-01 00:00:00 Beijing 2 2 true 2 2 2.2 2.2 char2 2 2 -20 2017-10-01 2017-10-01 00:00:00 Beijing 20 20 true 20 20 20.2 20.2 char20 20 20 -21 2017-10-01 2017-10-01 00:00:00 Beijing 21 21 true 21 21 21.21 21.21 char21 21 21 -22 2017-10-01 2017-10-01 00:00:00 Beijing 22 22 true 22 22 22.22 22.22 char22 22 22 -23 2017-10-01 2017-10-01 00:00:00 Beijing 23 23 true 23 23 23.23 23.23 char23 23 23 -24 2017-10-01 2017-10-01 00:00:00 Beijing 24 24 true 24 24 24.24 24.24 char24 24 24 -25 2017-10-01 2017-10-01 00:00:00 Beijing 25 25 true 25 25 25.25 25.25 char25 25 25 -26 2017-10-01 2017-10-01 00:00:00 Beijing 26 26 true 26 26 26.26 26.26 char26 26 26 -27 2017-10-01 2017-10-01 00:00:00 Beijing 27 27 true 27 27 27.27 27.27 char27 27 27 -28 2017-10-01 2017-10-01 00:00:00 Beijing 28 28 true 28 28 28.28 28.28 char28 28 28 -29 2017-10-01 2017-10-01 00:00:00 Beijing 29 29 true 29 29 29.29 29.29 char29 29 29 -3 2017-10-01 2017-10-01 00:00:00 Beijing 3 3 true 3 3 3.3 3.3 char3 3 3 -30 2017-10-01 2017-10-01 00:00:00 Beijing 30 30 true 30 30 30.3 30.3 char30 30 30 -31 2017-10-01 2017-10-01 00:00:00 Beijing 31 31 true 31 31 31.31 31.31 char31 31 31 -32 2017-10-01 2017-10-01 00:00:00 Beijing 32 32 true 32 32 32.32 32.32 char32 32 32 -33 2017-10-01 2017-10-01 00:00:00 Beijing 33 33 true 33 33 33.33 33.33 char33 33 33 -34 2017-10-01 2017-10-01 00:00:00 Beijing 34 34 true 34 34 34.34 34.34 char34 34 34 -35 2017-10-01 2017-10-01 00:00:00 Beijing 35 35 true 35 35 35.35 35.35 char35 35 35 -36 2017-10-01 2017-10-01 00:00:00 Beijing 36 36 true 36 36 36.36 36.36 char36 36 36 -37 2017-10-01 2017-10-01 00:00:00 Beijing 37 37 true 37 37 37.37 37.37 char37 37 37 -38 2017-10-01 2017-10-01 00:00:00 Beijing 38 38 true 38 38 38.38 38.38 char38 38 38 -39 2017-10-01 2017-10-01 00:00:00 Beijing 39 39 true 39 39 39.39 39.39 char39 39 39 -4 2017-10-01 2017-10-01 00:00:00 Beijing 4 4 true 4 4 4.4 4.4 char4 4 4 -40 2017-10-01 2017-10-01 00:00:00 Beijing 40 40 true 40 40 40.4 40.4 char40 40 40 -41 2017-10-01 2017-10-01 00:00:00 Beijing 41 41 true 41 41 41.41 41.41 char41 41 41 -42 2017-10-01 2017-10-01 00:00:00 Beijing 42 42 true 42 42 42.42 42.42 char42 42 42 -43 2017-10-01 2017-10-01 00:00:00 Beijing 43 43 true 43 43 43.43 43.43 char43 43 43 -44 2017-10-01 2017-10-01 00:00:00 Beijing 44 44 true 44 44 44.44 44.44 char44 44 44 -45 2017-10-01 2017-10-01 00:00:00 Beijing 45 45 true 45 45 45.45 45.45 char45 45 45 -46 2017-10-01 2017-10-01 00:00:00 Beijing 46 46 true 46 46 46.46 46.46 char46 46 46 -47 2017-10-01 2017-10-01 00:00:00 Beijing 47 47 true 47 47 47.47 47.47 char47 47 47 -48 2017-10-01 2017-10-01 00:00:00 Beijing 48 48 true 48 48 48.48 48.48 char48 48 48 -49 2017-10-01 2017-10-01 00:00:00 Beijing 49 49 true 49 49 49.49 49.49 char49 49 49 -5 2017-10-01 2017-10-01 00:00:00 Beijing 5 5 true 5 5 5.5 5.5 char5 5 5 -50 2017-10-01 2017-10-01 00:00:00 Beijing 50 50 true 50 50 50.5 50.5 char50 50 50 -51 2017-10-01 2017-10-01 00:00:00 Beijing 51 51 true 51 51 51.51 51.51 char51 51 51 -52 2017-10-01 2017-10-01 00:00:00 Beijing 52 52 true 52 52 52.52 52.52 char52 52 52 -53 2017-10-01 2017-10-01 00:00:00 Beijing 53 53 true 53 53 53.53 53.53 char53 53 53 -54 2017-10-01 2017-10-01 00:00:00 Beijing 54 54 true 54 54 54.54 54.54 char54 54 54 -55 2017-10-01 2017-10-01 00:00:00 Beijing 55 55 true 55 55 55.55 55.55 char55 55 55 -56 2017-10-01 2017-10-01 00:00:00 Beijing 56 56 true 56 56 56.56 56.56 char56 56 56 -57 2017-10-01 2017-10-01 00:00:00 Beijing 57 57 true 57 57 57.57 57.57 char57 57 57 -58 2017-10-01 2017-10-01 00:00:00 Beijing 58 58 true 58 58 58.58 58.58 char58 58 58 -59 2017-10-01 2017-10-01 00:00:00 Beijing 59 59 true 59 59 59.59 59.59 char59 59 59 -6 2017-10-01 2017-10-01 00:00:00 Beijing 6 6 true 6 6 6.6 6.6 char6 6 6 -60 2017-10-01 2017-10-01 00:00:00 Beijing 60 60 true 60 60 60.6 60.6 char60 60 60 -61 2017-10-01 2017-10-01 00:00:00 Beijing 61 61 true 61 61 61.61 61.61 char61 61 61 -62 2017-10-01 2017-10-01 00:00:00 Beijing 62 62 true 62 62 62.62 62.62 char62 62 62 -63 2017-10-01 2017-10-01 00:00:00 Beijing 63 63 true 63 63 63.63 63.63 char63 63 63 -64 2017-10-01 2017-10-01 00:00:00 Beijing 64 64 true 64 64 64.64 64.64 char64 64 64 -65 2017-10-01 2017-10-01 00:00:00 Beijing 65 65 true 65 65 65.65 65.65 char65 65 65 -66 2017-10-01 2017-10-01 00:00:00 Beijing 66 66 true 66 66 66.66 66.66 char66 66 66 -67 2017-10-01 2017-10-01 00:00:00 Beijing 67 67 true 67 67 67.67 67.67 char67 67 67 -68 2017-10-01 2017-10-01 00:00:00 Beijing 68 68 true 68 68 68.68 68.68 char68 68 68 -69 2017-10-01 2017-10-01 00:00:00 Beijing 69 69 true 69 69 69.69 69.69 char69 69 69 -7 2017-10-01 2017-10-01 00:00:00 Beijing 7 7 true 7 7 7.7 7.7 char7 7 7 -70 2017-10-01 2017-10-01 00:00:00 Beijing 70 70 true 70 70 70.7 70.7 char70 70 70 -71 2017-10-01 2017-10-01 00:00:00 Beijing 71 71 true 71 71 71.71 71.71 char71 71 71 -72 2017-10-01 2017-10-01 00:00:00 Beijing 72 72 true 72 72 72.72 72.72 char72 72 72 -73 2017-10-01 2017-10-01 00:00:00 Beijing 73 73 true 73 73 73.73 73.73 char73 73 73 -74 2017-10-01 2017-10-01 00:00:00 Beijing 74 74 true 74 74 74.74 74.74 char74 74 74 -75 2017-10-01 2017-10-01 00:00:00 Beijing 75 75 true 75 75 75.75 75.75 char75 75 75 -76 2017-10-01 2017-10-01 00:00:00 Beijing 76 76 true 76 76 76.76 76.76 char76 76 76 -77 2017-10-01 2017-10-01 00:00:00 Beijing 77 77 true 77 77 77.77 77.77 char77 77 77 -78 2017-10-01 2017-10-01 00:00:00 Beijing 78 78 true 78 78 78.78 78.78 char78 78 78 -79 2017-10-01 2017-10-01 00:00:00 Beijing 79 79 true 79 79 79.79 79.79 char79 79 79 -8 2017-10-01 2017-10-01 00:00:00 Beijing 8 8 true 8 8 8.8 8.8 char8 8 8 -80 2017-10-01 2017-10-01 00:00:00 Beijing 80 80 true 80 80 80.8 80.8 char80 80 80 -81 2017-10-01 2017-10-01 00:00:00 Beijing 81 81 true 81 81 81.81 81.81 char81 81 81 -82 2017-10-01 2017-10-01 00:00:00 Beijing 82 82 true 82 82 82.82 82.82 char82 82 82 -83 2017-10-01 2017-10-01 00:00:00 Beijing 83 83 true 83 83 83.83 83.83 char83 83 83 -84 2017-10-01 2017-10-01 00:00:00 Beijing 84 84 true 84 84 84.84 84.84 char84 84 84 -85 2017-10-01 2017-10-01 00:00:00 Beijing 85 85 true 85 85 85.85 85.85 char85 85 85 -86 2017-10-01 2017-10-01 00:00:00 Beijing 86 86 true 86 86 86.86 86.86 char86 86 86 -87 2017-10-01 2017-10-01 00:00:00 Beijing 87 87 true 87 87 87.87 87.87 char87 87 87 -88 2017-10-01 2017-10-01 00:00:00 Beijing 88 88 true 88 88 88.88 88.88 char88 88 88 -89 2017-10-01 2017-10-01 00:00:00 Beijing 89 89 true 89 89 89.89 89.89 char89 89 89 -9 2017-10-01 2017-10-01 00:00:00 Beijing 9 9 true 9 9 9.9 9.9 char9 9 9 -90 2017-10-01 2017-10-01 00:00:00 Beijing 90 90 true 90 90 90.9 90.9 char90 90 90 -91 2017-10-01 2017-10-01 00:00:00 Beijing 91 91 true 91 91 91.91 91.91 char91 91 91 -92 2017-10-01 2017-10-01 00:00:00 Beijing 92 92 true 92 92 92.92 92.92 char92 92 92 -93 2017-10-01 2017-10-01 00:00:00 Beijing 93 93 true 93 93 93.93 93.93 char93 93 93 -94 2017-10-01 2017-10-01 00:00:00 Beijing 94 94 true 94 94 94.94 94.94 char94 94 94 -95 2017-10-01 2017-10-01 00:00:00 Beijing 95 95 true 95 95 95.95 95.95 char95 95 95 -96 2017-10-01 2017-10-01 00:00:00 Beijing 96 96 true 96 96 96.96 96.96 char96 96 96 -97 2017-10-01 2017-10-01 00:00:00 Beijing 97 97 true 97 97 97.97 97.97 char97 97 97 -98 2017-10-01 2017-10-01 00:00:00 Beijing 98 98 true 98 98 98.98 98.98 char98 98 98 -99 2017-10-01 2017-10-01 00:00:00 Beijing 99 99 true 99 99 99.99 99.99 char99 99 99 +1 2017-10-01 2017-10-01T00:00 Beijing 1 1 true 1 1 1.1 1.1 char1 1 1 +10 2017-10-01 2017-10-01T00:00 Beijing 10 10 true 10 10 10.1 10.1 char10 10 10 +100 2017-10-01 2017-10-01T00:00 \N \N \N \N \N \N \N \N \N \N \N +11 2017-10-01 2017-10-01T00:00 Beijing 11 11 true 11 11 11.11 11.11 char11 11 11 +12 2017-10-01 2017-10-01T00:00 Beijing 12 12 true 12 12 12.12 12.12 char12 12 12 +13 2017-10-01 2017-10-01T00:00 Beijing 13 13 true 13 13 13.13 13.13 char13 13 13 +14 2017-10-01 2017-10-01T00:00 Beijing 14 14 true 14 14 14.14 14.14 char14 14 14 +15 2017-10-01 2017-10-01T00:00 Beijing 15 15 true 15 15 15.15 15.15 char15 15 15 +16 2017-10-01 2017-10-01T00:00 Beijing 16 16 true 16 16 16.16 16.16 char16 16 16 +17 2017-10-01 2017-10-01T00:00 Beijing 17 17 true 17 17 17.17 17.17 char17 17 17 +18 2017-10-01 2017-10-01T00:00 Beijing 18 18 true 18 18 18.18 18.18 char18 18 18 +19 2017-10-01 2017-10-01T00:00 Beijing 19 19 true 19 19 19.19 19.19 char19 19 19 +2 2017-10-01 2017-10-01T00:00 Beijing 2 2 true 2 2 2.2 2.2 char2 2 2 +20 2017-10-01 2017-10-01T00:00 Beijing 20 20 true 20 20 20.2 20.2 char20 20 20 +21 2017-10-01 2017-10-01T00:00 Beijing 21 21 true 21 21 21.21 21.21 char21 21 21 +22 2017-10-01 2017-10-01T00:00 Beijing 22 22 true 22 22 22.22 22.22 char22 22 22 +23 2017-10-01 2017-10-01T00:00 Beijing 23 23 true 23 23 23.23 23.23 char23 23 23 +24 2017-10-01 2017-10-01T00:00 Beijing 24 24 true 24 24 24.24 24.24 char24 24 24 +25 2017-10-01 2017-10-01T00:00 Beijing 25 25 true 25 25 25.25 25.25 char25 25 25 +26 2017-10-01 2017-10-01T00:00 Beijing 26 26 true 26 26 26.26 26.26 char26 26 26 +27 2017-10-01 2017-10-01T00:00 Beijing 27 27 true 27 27 27.27 27.27 char27 27 27 +28 2017-10-01 2017-10-01T00:00 Beijing 28 28 true 28 28 28.28 28.28 char28 28 28 +29 2017-10-01 2017-10-01T00:00 Beijing 29 29 true 29 29 29.29 29.29 char29 29 29 +3 2017-10-01 2017-10-01T00:00 Beijing 3 3 true 3 3 3.3 3.3 char3 3 3 +30 2017-10-01 2017-10-01T00:00 Beijing 30 30 true 30 30 30.3 30.3 char30 30 30 +31 2017-10-01 2017-10-01T00:00 Beijing 31 31 true 31 31 31.31 31.31 char31 31 31 +32 2017-10-01 2017-10-01T00:00 Beijing 32 32 true 32 32 32.32 32.32 char32 32 32 +33 2017-10-01 2017-10-01T00:00 Beijing 33 33 true 33 33 33.33 33.33 char33 33 33 +34 2017-10-01 2017-10-01T00:00 Beijing 34 34 true 34 34 34.34 34.34 char34 34 34 +35 2017-10-01 2017-10-01T00:00 Beijing 35 35 true 35 35 35.35 35.35 char35 35 35 +36 2017-10-01 2017-10-01T00:00 Beijing 36 36 true 36 36 36.36 36.36 char36 36 36 +37 2017-10-01 2017-10-01T00:00 Beijing 37 37 true 37 37 37.37 37.37 char37 37 37 +38 2017-10-01 2017-10-01T00:00 Beijing 38 38 true 38 38 38.38 38.38 char38 38 38 +39 2017-10-01 2017-10-01T00:00 Beijing 39 39 true 39 39 39.39 39.39 char39 39 39 +4 2017-10-01 2017-10-01T00:00 Beijing 4 4 true 4 4 4.4 4.4 char4 4 4 +40 2017-10-01 2017-10-01T00:00 Beijing 40 40 true 40 40 40.4 40.4 char40 40 40 +41 2017-10-01 2017-10-01T00:00 Beijing 41 41 true 41 41 41.41 41.41 char41 41 41 +42 2017-10-01 2017-10-01T00:00 Beijing 42 42 true 42 42 42.42 42.42 char42 42 42 +43 2017-10-01 2017-10-01T00:00 Beijing 43 43 true 43 43 43.43 43.43 char43 43 43 +44 2017-10-01 2017-10-01T00:00 Beijing 44 44 true 44 44 44.44 44.44 char44 44 44 +45 2017-10-01 2017-10-01T00:00 Beijing 45 45 true 45 45 45.45 45.45 char45 45 45 +46 2017-10-01 2017-10-01T00:00 Beijing 46 46 true 46 46 46.46 46.46 char46 46 46 +47 2017-10-01 2017-10-01T00:00 Beijing 47 47 true 47 47 47.47 47.47 char47 47 47 +48 2017-10-01 2017-10-01T00:00 Beijing 48 48 true 48 48 48.48 48.48 char48 48 48 +49 2017-10-01 2017-10-01T00:00 Beijing 49 49 true 49 49 49.49 49.49 char49 49 49 +5 2017-10-01 2017-10-01T00:00 Beijing 5 5 true 5 5 5.5 5.5 char5 5 5 +50 2017-10-01 2017-10-01T00:00 Beijing 50 50 true 50 50 50.5 50.5 char50 50 50 +51 2017-10-01 2017-10-01T00:00 Beijing 51 51 true 51 51 51.51 51.51 char51 51 51 +52 2017-10-01 2017-10-01T00:00 Beijing 52 52 true 52 52 52.52 52.52 char52 52 52 +53 2017-10-01 2017-10-01T00:00 Beijing 53 53 true 53 53 53.53 53.53 char53 53 53 +54 2017-10-01 2017-10-01T00:00 Beijing 54 54 true 54 54 54.54 54.54 char54 54 54 +55 2017-10-01 2017-10-01T00:00 Beijing 55 55 true 55 55 55.55 55.55 char55 55 55 +56 2017-10-01 2017-10-01T00:00 Beijing 56 56 true 56 56 56.56 56.56 char56 56 56 +57 2017-10-01 2017-10-01T00:00 Beijing 57 57 true 57 57 57.57 57.57 char57 57 57 +58 2017-10-01 2017-10-01T00:00 Beijing 58 58 true 58 58 58.58 58.58 char58 58 58 +59 2017-10-01 2017-10-01T00:00 Beijing 59 59 true 59 59 59.59 59.59 char59 59 59 +6 2017-10-01 2017-10-01T00:00 Beijing 6 6 true 6 6 6.6 6.6 char6 6 6 +60 2017-10-01 2017-10-01T00:00 Beijing 60 60 true 60 60 60.6 60.6 char60 60 60 +61 2017-10-01 2017-10-01T00:00 Beijing 61 61 true 61 61 61.61 61.61 char61 61 61 +62 2017-10-01 2017-10-01T00:00 Beijing 62 62 true 62 62 62.62 62.62 char62 62 62 +63 2017-10-01 2017-10-01T00:00 Beijing 63 63 true 63 63 63.63 63.63 char63 63 63 +64 2017-10-01 2017-10-01T00:00 Beijing 64 64 true 64 64 64.64 64.64 char64 64 64 +65 2017-10-01 2017-10-01T00:00 Beijing 65 65 true 65 65 65.65 65.65 char65 65 65 +66 2017-10-01 2017-10-01T00:00 Beijing 66 66 true 66 66 66.66 66.66 char66 66 66 +67 2017-10-01 2017-10-01T00:00 Beijing 67 67 true 67 67 67.67 67.67 char67 67 67 +68 2017-10-01 2017-10-01T00:00 Beijing 68 68 true 68 68 68.68 68.68 char68 68 68 +69 2017-10-01 2017-10-01T00:00 Beijing 69 69 true 69 69 69.69 69.69 char69 69 69 +7 2017-10-01 2017-10-01T00:00 Beijing 7 7 true 7 7 7.7 7.7 char7 7 7 +70 2017-10-01 2017-10-01T00:00 Beijing 70 70 true 70 70 70.7 70.7 char70 70 70 +71 2017-10-01 2017-10-01T00:00 Beijing 71 71 true 71 71 71.71 71.71 char71 71 71 +72 2017-10-01 2017-10-01T00:00 Beijing 72 72 true 72 72 72.72 72.72 char72 72 72 +73 2017-10-01 2017-10-01T00:00 Beijing 73 73 true 73 73 73.73 73.73 char73 73 73 +74 2017-10-01 2017-10-01T00:00 Beijing 74 74 true 74 74 74.74 74.74 char74 74 74 +75 2017-10-01 2017-10-01T00:00 Beijing 75 75 true 75 75 75.75 75.75 char75 75 75 +76 2017-10-01 2017-10-01T00:00 Beijing 76 76 true 76 76 76.76 76.76 char76 76 76 +77 2017-10-01 2017-10-01T00:00 Beijing 77 77 true 77 77 77.77 77.77 char77 77 77 +78 2017-10-01 2017-10-01T00:00 Beijing 78 78 true 78 78 78.78 78.78 char78 78 78 +79 2017-10-01 2017-10-01T00:00 Beijing 79 79 true 79 79 79.79 79.79 char79 79 79 +8 2017-10-01 2017-10-01T00:00 Beijing 8 8 true 8 8 8.8 8.8 char8 8 8 +80 2017-10-01 2017-10-01T00:00 Beijing 80 80 true 80 80 80.8 80.8 char80 80 80 +81 2017-10-01 2017-10-01T00:00 Beijing 81 81 true 81 81 81.81 81.81 char81 81 81 +82 2017-10-01 2017-10-01T00:00 Beijing 82 82 true 82 82 82.82 82.82 char82 82 82 +83 2017-10-01 2017-10-01T00:00 Beijing 83 83 true 83 83 83.83 83.83 char83 83 83 +84 2017-10-01 2017-10-01T00:00 Beijing 84 84 true 84 84 84.84 84.84 char84 84 84 +85 2017-10-01 2017-10-01T00:00 Beijing 85 85 true 85 85 85.85 85.85 char85 85 85 +86 2017-10-01 2017-10-01T00:00 Beijing 86 86 true 86 86 86.86 86.86 char86 86 86 +87 2017-10-01 2017-10-01T00:00 Beijing 87 87 true 87 87 87.87 87.87 char87 87 87 +88 2017-10-01 2017-10-01T00:00 Beijing 88 88 true 88 88 88.88 88.88 char88 88 88 +89 2017-10-01 2017-10-01T00:00 Beijing 89 89 true 89 89 89.89 89.89 char89 89 89 +9 2017-10-01 2017-10-01T00:00 Beijing 9 9 true 9 9 9.9 9.9 char9 9 9 +90 2017-10-01 2017-10-01T00:00 Beijing 90 90 true 90 90 90.9 90.9 char90 90 90 +91 2017-10-01 2017-10-01T00:00 Beijing 91 91 true 91 91 91.91 91.91 char91 91 91 +92 2017-10-01 2017-10-01T00:00 Beijing 92 92 true 92 92 92.92 92.92 char92 92 92 +93 2017-10-01 2017-10-01T00:00 Beijing 93 93 true 93 93 93.93 93.93 char93 93 93 +94 2017-10-01 2017-10-01T00:00 Beijing 94 94 true 94 94 94.94 94.94 char94 94 94 +95 2017-10-01 2017-10-01T00:00 Beijing 95 95 true 95 95 95.95 95.95 char95 95 95 +96 2017-10-01 2017-10-01T00:00 Beijing 96 96 true 96 96 96.96 96.96 char96 96 96 +97 2017-10-01 2017-10-01T00:00 Beijing 97 97 true 97 97 97.97 97.97 char97 97 97 +98 2017-10-01 2017-10-01T00:00 Beijing 98 98 true 98 98 98.98 98.98 char98 98 98 +99 2017-10-01 2017-10-01T00:00 Beijing 99 99 true 99 99 99.99 99.99 char99 99 99 diff --git a/regression-test/data/external_table_p0/export/hive_read/orc/test_hive_read_orc.out b/regression-test/data/external_table_p0/export/hive_read/orc/test_hive_read_orc.out index 0950edc92d..26799d9a53 100644 --- a/regression-test/data/external_table_p0/export/hive_read/orc/test_hive_read_orc.out +++ b/regression-test/data/external_table_p0/export/hive_read/orc/test_hive_read_orc.out @@ -45,5 +45,5 @@ 1 2023-04-20 2023-04-20 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 2 9999-12-31 9999-12-31 9999-12-31 23:59:59.0 9999-12-31 23:59:59.0 2023-04-20 00:00:00.12 2023-04-20 00:00:00.3344 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 3 2023-04-21 2023-04-21 2023-04-20 12:34:56.0 2023-04-20 00:00:00.0 2023-04-20 00:00:00.123 2023-04-20 00:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235E38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 -4 0000-01-01 0000-01-01 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 +4 0001-01-04 0001-01-04 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 2023-04-20 00:00:00.0 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 diff --git a/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.out b/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.out index b2a579e969..90a5cf00ee 100644 --- a/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.out +++ b/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.out @@ -36,14 +36,14 @@ 4 0000-01-01 0000-01-01 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 -- !select_tvf2 -- -1 2023-04-20 2023-04-20 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 -2 9999-12-31 9999-12-31 9999-12-31 23:59:59 9999-12-31 23:59:59 2023-04-20 00:00:00.120000 2023-04-20 00:00:00.334400 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 -3 2023-04-21 2023-04-21 2023-04-20 12:34:56 2023-04-20 00:00:00 2023-04-20 00:00:00.123000 2023-04-20 00:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 -4 0000-01-01 0000-01-01 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 +1 2023-04-20 2023-04-20 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 +2 9999-12-31 9999-12-31 9999-12-31T23:59:59 9999-12-31T23:59:59 2023-04-20T00:00:00.120 2023-04-20T00:00:00.334400 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 +3 2023-04-21 2023-04-21 2023-04-20T12:34:56 2023-04-20T00:00 2023-04-20T00:00:00.123 2023-04-20T00:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235e+38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 +4 0000-01-01 0000-01-01 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 2023-04-20T00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 -- !hive_docker_02 -- -1 2023-04-20 2023-04-20 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 -2 9999-12-31 9999-12-31 9999-12-31 23:59:59 9999-12-31 23:59:59 2023-04-20 00:00:00.120000 2023-04-20 00:00:00.334400 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 -3 2023-04-21 2023-04-21 2023-04-20 12:34:56 2023-04-20 00:00:00 2023-04-20 00:00:00.123000 2023-04-20 00:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235E38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 -4 0000-01-01 0000-01-01 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 +1 2023-04-20 2023-04-20 2023-04-19 16:00:00.0 2023-04-19 16:00:00.0 2023-04-19 16:00:00.0 2023-04-19 16:00:00.0 Beijing Haidian 1 1 true 1 1 1 1.1 1.1 char1 1 1 1 0.1 1.00000000 1.0000000000 1 1.0000000000000000000000000000000000000 0.10000000000000000000000000000000000000 +2 9999-12-31 9999-12-31 9999-12-31 15:59:59.0 9999-12-31 15:59:59.0 2023-04-19 16:00:00.12 2023-04-19 16:00:00.3344 Haidian -32768 -128 true -2147483648 -9223372036854775808 -170141183460469231731687303715884105728 1.4E-45 4.9E-324 char2 100000000 100000000 4 0.1 0.99999999 9999999999.9999999999 99999999999999999999999999999999999999 9.9999999999999999999999999999999999999 0.99999999999999999999999999999999999999 +3 2023-04-21 2023-04-21 2023-04-20 04:34:56.0 2023-04-19 16:00:00.0 2023-04-19 16:00:00.123 2023-04-19 16:00:00.123456 Beijing 32767 127 true 2147483647 9223372036854775807 170141183460469231731687303715884105727 3.4028235E38 1.7976931348623157E308 char3 999999999 999999999 9 0.9 9.99999999 1234567890.0123456789 12345678901234567890123456789012345678 1.2345678901234567890123456789012345678 0.12345678901234567890123456789012345678 +4 0001-01-04 0001-01-04 2023-04-19 16:00:00.0 2023-04-19 16:00:00.0 2023-04-19 16:00:00.0 2023-04-19 16:00:00.0 Beijing Haidian 4 4 true 4 4 4 4.4 4.4 char4 4 4 4 0.4 4.00000000 4.0000000000 4 4.0000000000000000000000000000000000000 0.40000000000000000000000000000000000000 diff --git a/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.out b/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.out index 1eb467b5fa..3960f089d4 100644 --- a/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.out +++ b/regression-test/data/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.out @@ -99,26 +99,26 @@ 10 doris_10 {"user_id": 10, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": null, "age": null, "sex": null, "bool_col": null, "int_col": null, "bigint_col": null, "largeint_col": null, "float_col": null, "double_col": null, "char_col": null, "decimal_col": null} -- !select_tvf4 -- -1 doris_1 {"user_id": 1, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 1, "sex": 1, "bool_col": 1, "int_col": 1, "bigint_col": 1, "largeint_col": "1", "float_col": 1.1, "double_col": 1.1, "char_col": "char1_1234", "decimal_col": 1} -2 doris_2 {"user_id": 2, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 2, "sex": 2, "bool_col": 1, "int_col": 2, "bigint_col": 2, "largeint_col": "2", "float_col": 2.2, "double_col": 2.2, "char_col": "char2_1234", "decimal_col": 2} -3 doris_3 {"user_id": 3, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 3, "sex": 3, "bool_col": 1, "int_col": 3, "bigint_col": 3, "largeint_col": "3", "float_col": 3.3, "double_col": 3.3, "char_col": "char3_1234", "decimal_col": 3} -4 doris_4 {"user_id": 4, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 4, "sex": 4, "bool_col": 1, "int_col": 4, "bigint_col": 4, "largeint_col": "4", "float_col": 4.4, "double_col": 4.4, "char_col": "char4_1234", "decimal_col": 4} -5 doris_5 {"user_id": 5, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 5, "sex": 5, "bool_col": 1, "int_col": 5, "bigint_col": 5, "largeint_col": "5", "float_col": 5.5, "double_col": 5.5, "char_col": "char5_1234", "decimal_col": 5} -6 doris_6 {"user_id": 6, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 6, "sex": 6, "bool_col": 1, "int_col": 6, "bigint_col": 6, "largeint_col": "6", "float_col": 6.6, "double_col": 6.6, "char_col": "char6_1234", "decimal_col": 6} -7 doris_7 {"user_id": 7, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 7, "sex": 7, "bool_col": 1, "int_col": 7, "bigint_col": 7, "largeint_col": "7", "float_col": 7.7, "double_col": 7.7, "char_col": "char7_1234", "decimal_col": 7} -8 doris_8 {"user_id": 8, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 8, "sex": 8, "bool_col": 1, "int_col": 8, "bigint_col": 8, "largeint_col": "8", "float_col": 8.8, "double_col": 8.8, "char_col": "char8_1234", "decimal_col": 8} -9 doris_9 {"user_id": 9, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": "Beijing", "age": 9, "sex": 9, "bool_col": 1, "int_col": 9, "bigint_col": 9, "largeint_col": "9", "float_col": 9.9, "double_col": 9.9, "char_col": "char9_1234", "decimal_col": 9} -10 doris_10 {"user_id": 10, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00", "city": null, "age": null, "sex": null, "bool_col": null, "int_col": null, "bigint_col": null, "largeint_col": null, "float_col": null, "double_col": null, "char_col": null, "decimal_col": null} +1 doris_1 {"user_id": 1, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 1, "sex": 1, "bool_col": 1, "int_col": 1, "bigint_col": 1, "largeint_col": "1", "float_col": 1.1, "double_col": 1.1, "char_col": "char1_1234", "decimal_col": 1} +2 doris_2 {"user_id": 2, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 2, "sex": 2, "bool_col": 1, "int_col": 2, "bigint_col": 2, "largeint_col": "2", "float_col": 2.2, "double_col": 2.2, "char_col": "char2_1234", "decimal_col": 2} +3 doris_3 {"user_id": 3, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 3, "sex": 3, "bool_col": 1, "int_col": 3, "bigint_col": 3, "largeint_col": "3", "float_col": 3.3, "double_col": 3.3, "char_col": "char3_1234", "decimal_col": 3} +4 doris_4 {"user_id": 4, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 4, "sex": 4, "bool_col": 1, "int_col": 4, "bigint_col": 4, "largeint_col": "4", "float_col": 4.4, "double_col": 4.4, "char_col": "char4_1234", "decimal_col": 4} +5 doris_5 {"user_id": 5, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 5, "sex": 5, "bool_col": 1, "int_col": 5, "bigint_col": 5, "largeint_col": "5", "float_col": 5.5, "double_col": 5.5, "char_col": "char5_1234", "decimal_col": 5} +6 doris_6 {"user_id": 6, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 6, "sex": 6, "bool_col": 1, "int_col": 6, "bigint_col": 6, "largeint_col": "6", "float_col": 6.6, "double_col": 6.6, "char_col": "char6_1234", "decimal_col": 6} +7 doris_7 {"user_id": 7, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 7, "sex": 7, "bool_col": 1, "int_col": 7, "bigint_col": 7, "largeint_col": "7", "float_col": 7.7, "double_col": 7.7, "char_col": "char7_1234", "decimal_col": 7} +8 doris_8 {"user_id": 8, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 8, "sex": 8, "bool_col": 1, "int_col": 8, "bigint_col": 8, "largeint_col": "8", "float_col": 8.8, "double_col": 8.8, "char_col": "char8_1234", "decimal_col": 8} +9 doris_9 {"user_id": 9, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": "Beijing", "age": 9, "sex": 9, "bool_col": 1, "int_col": 9, "bigint_col": 9, "largeint_col": "9", "float_col": 9.9, "double_col": 9.9, "char_col": "char9_1234", "decimal_col": 9} +10 doris_10 {"user_id": 10, "date": "2017-10-01", "datetime": "2017-10-01 00:00:00.000000", "city": null, "age": null, "sex": null, "bool_col": null, "int_col": null, "bigint_col": null, "largeint_col": null, "float_col": null, "double_col": null, "char_col": null, "decimal_col": null} -- !hive_docker_04 -- -1 doris_1 {"user_id":1,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":1,"sex":1,"bool_col":true,"int_col":1,"bigint_col":1,"largeint_col":"1","float_col":1.1,"double_col":1.1,"char_col":"char1_1234","decimal_col":1} -2 doris_2 {"user_id":2,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":2,"sex":2,"bool_col":true,"int_col":2,"bigint_col":2,"largeint_col":"2","float_col":2.2,"double_col":2.2,"char_col":"char2_1234","decimal_col":2} -3 doris_3 {"user_id":3,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":3,"sex":3,"bool_col":true,"int_col":3,"bigint_col":3,"largeint_col":"3","float_col":3.3,"double_col":3.3,"char_col":"char3_1234","decimal_col":3} -4 doris_4 {"user_id":4,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":4,"sex":4,"bool_col":true,"int_col":4,"bigint_col":4,"largeint_col":"4","float_col":4.4,"double_col":4.4,"char_col":"char4_1234","decimal_col":4} -5 doris_5 {"user_id":5,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":5,"sex":5,"bool_col":true,"int_col":5,"bigint_col":5,"largeint_col":"5","float_col":5.5,"double_col":5.5,"char_col":"char5_1234","decimal_col":5} -6 doris_6 {"user_id":6,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":6,"sex":6,"bool_col":true,"int_col":6,"bigint_col":6,"largeint_col":"6","float_col":6.6,"double_col":6.6,"char_col":"char6_1234","decimal_col":6} -7 doris_7 {"user_id":7,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":7,"sex":7,"bool_col":true,"int_col":7,"bigint_col":7,"largeint_col":"7","float_col":7.7,"double_col":7.7,"char_col":"char7_1234","decimal_col":7} -8 doris_8 {"user_id":8,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":8,"sex":8,"bool_col":true,"int_col":8,"bigint_col":8,"largeint_col":"8","float_col":8.8,"double_col":8.8,"char_col":"char8_1234","decimal_col":8} -9 doris_9 {"user_id":9,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":"Beijing","age":9,"sex":9,"bool_col":true,"int_col":9,"bigint_col":9,"largeint_col":"9","float_col":9.9,"double_col":9.9,"char_col":"char9_1234","decimal_col":9} -10 doris_10 {"user_id":10,"date":"2017-10-01","datetime":"2017-10-01 00:00:00","city":null,"age":null,"sex":null,"bool_col":null,"int_col":null,"bigint_col":null,"largeint_col":null,"float_col":null,"double_col":null,"char_col":null,"decimal_col":null} +1 doris_1 {"user_id":1,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":1,"sex":1,"bool_col":true,"int_col":1,"bigint_col":1,"largeint_col":"1","float_col":1.1,"double_col":1.1,"char_col":"char1_1234","decimal_col":1} +2 doris_2 {"user_id":2,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":2,"sex":2,"bool_col":true,"int_col":2,"bigint_col":2,"largeint_col":"2","float_col":2.2,"double_col":2.2,"char_col":"char2_1234","decimal_col":2} +3 doris_3 {"user_id":3,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":3,"sex":3,"bool_col":true,"int_col":3,"bigint_col":3,"largeint_col":"3","float_col":3.3,"double_col":3.3,"char_col":"char3_1234","decimal_col":3} +4 doris_4 {"user_id":4,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":4,"sex":4,"bool_col":true,"int_col":4,"bigint_col":4,"largeint_col":"4","float_col":4.4,"double_col":4.4,"char_col":"char4_1234","decimal_col":4} +5 doris_5 {"user_id":5,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":5,"sex":5,"bool_col":true,"int_col":5,"bigint_col":5,"largeint_col":"5","float_col":5.5,"double_col":5.5,"char_col":"char5_1234","decimal_col":5} +6 doris_6 {"user_id":6,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":6,"sex":6,"bool_col":true,"int_col":6,"bigint_col":6,"largeint_col":"6","float_col":6.6,"double_col":6.6,"char_col":"char6_1234","decimal_col":6} +7 doris_7 {"user_id":7,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":7,"sex":7,"bool_col":true,"int_col":7,"bigint_col":7,"largeint_col":"7","float_col":7.7,"double_col":7.7,"char_col":"char7_1234","decimal_col":7} +8 doris_8 {"user_id":8,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":8,"sex":8,"bool_col":true,"int_col":8,"bigint_col":8,"largeint_col":"8","float_col":8.8,"double_col":8.8,"char_col":"char8_1234","decimal_col":8} +9 doris_9 {"user_id":9,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":"Beijing","age":9,"sex":9,"bool_col":true,"int_col":9,"bigint_col":9,"largeint_col":"9","float_col":9.9,"double_col":9.9,"char_col":"char9_1234","decimal_col":9} +10 doris_10 {"user_id":10,"date":"2017-10-01","datetime":"2017-09-30 16:00:00","city":null,"age":null,"sex":null,"bool_col":null,"int_col":null,"bigint_col":null,"largeint_col":null,"float_col":null,"double_col":null,"char_col":null,"decimal_col":null} diff --git a/regression-test/suites/export_p0/outfile/parquet/test_outfile_parquet_map_type.groovy b/regression-test/suites/export_p0/outfile/parquet/test_outfile_parquet_map_type.groovy index f2657b2c2b..36e7ed2bd2 100644 --- a/regression-test/suites/export_p0/outfile/parquet/test_outfile_parquet_map_type.groovy +++ b/regression-test/suites/export_p0/outfile/parquet/test_outfile_parquet_map_type.groovy @@ -33,7 +33,6 @@ suite("test_outfile_parquet_map_type", "p0") { String bucket = context.config.otherConfigs.get("s3BucketName"); def export_table_name = "outfile_parquet_map_type_export_test" - def load_table_name = "outfile_parquet_map_type_load_test" def outFilePath = "${bucket}/outfile/parquet/map_type/exp_" @@ -73,9 +72,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'a': 100, 'b': 111}), (2, 'doris2', {'a': 200, 'b': 222}); """ @@ -108,8 +104,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {100: 'null', 111:'b'}), (2, 'doris2', {200:'a', 222:'b'}); """ @@ -144,9 +138,7 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - + // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {100: 0.123, 111:1.2345}), (2, 'doris2', {200:8738931.12312, 222:999.999}); """ sql """ insert into ${export_table_name} values (3, 'doris3', {111: 1111034.123, 333:7771.1231, 399:0.441241, 39999:0.441241}); """ @@ -180,9 +172,7 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - + // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {100: ${Double.MIN_VALUE}, 111:${Double.MAX_VALUE}}), (2, 'doris2', {200: 123.123, 222:0.9999999}); """ sql """ insert into ${export_table_name} values (3, 'doris3', {111: 187.123, 333:555.6767, 399:129312.113, 3999:123.12314}); """ @@ -215,9 +205,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'k1': 0.123, '111':1.2345}), (2, 'doris2', {'200':8738931.12312, 'doris':999.999}); """ @@ -253,9 +240,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'100': ${Double.MIN_VALUE}, 'doris':${Double.MAX_VALUE}}), (2, 'doris2', {'nereids': 123.123, '222':0.9999999}); """ @@ -289,9 +273,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'a': 100, 'b': 111}), (2, 'doris2', {'a': 200, 'b': 222}); """ @@ -324,9 +305,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'a': true, 'b': false}), (2, 'doris2', {'a': false, 'b': false}); """ @@ -359,9 +337,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {100: true, 111:true}), (2, 'doris2', {200: false, 222:false}); """ @@ -395,8 +370,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'2023-04-20 01:02:03': 'null', '2018-04-20 10:40:35':'b'}), (2, 'doris2', {'2000-04-20 00:00:00':'a', '1967-12-31 12:24:56':'b'}); """ @@ -431,9 +404,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'2023-04-20 01:02:03': null, '2018-04-20 10:40:35': 123}), (2, 'doris2', {'2000-04-20 00:00:00':${Integer.MIN_VALUE}, '1967-12-31 12:24:56':${Integer.MAX_VALUE}}); """ @@ -466,9 +436,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'2023-04-20': null, '2018-04-20': 123}), (2, 'doris2', {'2000-04-20':${Integer.MIN_VALUE}, '1967-12-31':${Integer.MAX_VALUE}}); """ @@ -501,9 +468,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'2023-04-20': 'null', '2018-04-20': null}), (2, 'doris2', {'2000-04-20':'${Integer.MIN_VALUE}', '1967-12-31':'${Integer.MAX_VALUE}'}); """ @@ -536,9 +500,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'2023-04-20 12:20:03': 'null', '2018-04-20 12:59:59': null}), (2, 'doris2', {'2000-04-20 23:59:59':'${Integer.MIN_VALUE}', '1967-12-31 00:00:00':'${Integer.MAX_VALUE}'}); """ @@ -571,9 +532,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {100: 'null', 111:'b'}), (2, 'doris2', {200:'a', 222:'b'}); """ @@ -608,9 +566,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, "doris1", {true:"null",false:"b"}), (2, "doris2", {true:"a", true:"b"}); """ @@ -644,9 +599,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) - // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {1: 'xxx', 0:'b'}), (2, 'doris2', {1:'a', 1:'b'}); """ @@ -681,8 +633,6 @@ suite("test_outfile_parquet_map_type", "p0") { def map_field_define = "`m_info` Map NULL" // create table to export data create_table(export_table_name, map_field_define) - // create table to load data - create_table(load_table_name, map_field_define) // insert data sql """ insert into ${export_table_name} values (1, 'doris1', {'doris': 'null', 'nereids':'b'}), (2, 'doris2', {'ftw':'a', 'cyx':'b'}); """ @@ -710,5 +660,4 @@ suite("test_outfile_parquet_map_type", "p0") { """ } finally { } - } diff --git a/regression-test/suites/export_p0/test_export_data_types.groovy b/regression-test/suites/export_p0/test_export_data_types.groovy index bcd1f998b4..82519c161d 100644 --- a/regression-test/suites/export_p0/test_export_data_types.groovy +++ b/regression-test/suites/export_p0/test_export_data_types.groovy @@ -26,38 +26,16 @@ suite("test_export_data_types", "p0") { sql """ set enable_nereids_planner=true """ sql """ set enable_fallback_to_original_planner=false """ + String ak = getS3AK() + String sk = getS3SK() + String s3_endpoint = getS3Endpoint() + String region = getS3Region() + String bucket = context.config.otherConfigs.get("s3BucketName"); - // check whether the FE config 'enable_outfile_to_local' is true - StringBuilder strBuilder = new StringBuilder() - strBuilder.append("curl --location-trusted -u " + context.config.jdbcUser + ":" + context.config.jdbcPassword) - strBuilder.append(" http://" + context.config.feHttpAddress + "/rest/v1/config/fe") - - String command = strBuilder.toString() - def process = command.toString().execute() - def code = process.waitFor() - def err = IOGroovyMethods.getText(new BufferedReader(new InputStreamReader(process.getErrorStream()))); - def out = process.getText() - logger.info("Request FE Config: code=" + code + ", out=" + out + ", err=" + err) - assertEquals(code, 0) - def response = parseJson(out.trim()) - assertEquals(response.code, 0) - assertEquals(response.msg, "success") - def configJson = response.data.rows - boolean enableOutfileToLocal = false - for (Object conf: configJson) { - assert conf instanceof Map - if (((Map) conf).get("Name").toLowerCase() == "enable_outfile_to_local") { - enableOutfileToLocal = ((Map) conf).get("Value").toLowerCase() == "true" - } - } - if (!enableOutfileToLocal) { - logger.warn("Please set enable_outfile_to_local to true to run test_outfile") - return - } def table_export_name = "test_export_data_types" - def table_load_name = "test_load_data_types" - def outfile_path_prefix = """/tmp/test_export""" + def outfile_path_prefix = """${bucket}/export/p0/all_data_types/exp""" + def format = "csv" def create_table = {table_name -> sql """ DROP TABLE IF EXISTS ${table_name} """ @@ -136,37 +114,16 @@ suite("test_export_data_types", "p0") { logger.info("insert result: " + insert_res.toString()) qt_select_export1 """ SELECT * FROM ${table_export_name} t ORDER BY user_id; """ - def check_path_exists = { dir_path -> - File path = new File(dir_path) - if (!path.exists()) { - assert path.mkdirs() - } else { - throw new IllegalStateException("""${dir_path} already exists! """) - } - } - - def check_file_amounts = { dir_path, amount -> - File path = new File(dir_path) - File[] files = path.listFiles() - assert files.length == amount - } - - def delete_files = { dir_path -> - File path = new File(dir_path) - if (path.exists()) { - for (File f: path.listFiles()) { - f.delete(); - } - path.delete(); - } - } - def waiting_export = { export_label -> while (true) { def res = sql """ show export where label = "${export_label}" """ logger.info("export state: " + res[0][2]) if (res[0][2] == "FINISHED") { - break; + def json = parseJson(res[0][11]) + assert json instanceof List + assertEquals("1", json.fileNumber[0][0]) + log.info("outfile_path: ${json.url[0][0]}") + return json.url[0][0]; } else if (res[0][2] == "CANCELLED") { throw new IllegalStateException("""export failed: ${res[0][10]}""") } else { @@ -179,55 +136,32 @@ suite("test_export_data_types", "p0") { def uuid = UUID.randomUUID().toString() def outFilePath = """${outfile_path_prefix}_${uuid}""" def label = "label_${uuid}" + format = "csv" try { - // check export path - check_path_exists.call("${outFilePath}") - // exec export sql """ - EXPORT TABLE ${table_export_name} TO "file://${outFilePath}/" + EXPORT TABLE ${table_export_name} TO "s3://${outFilePath}/" PROPERTIES( "label" = "${label}", - "format" = "csv", - "column_separator"="," + "format" = "${format}" + ) WITH S3( + "s3.endpoint" = "${s3_endpoint}", + "s3.region" = "${region}", + "s3.secret_key"="${sk}", + "s3.access_key" = "${ak}" ); """ - waiting_export.call(label) + def outfile_url = waiting_export.call(label) - // check file amounts - check_file_amounts.call("${outFilePath}", 1) - - create_table(table_load_name); - - File[] files = new File("${outFilePath}").listFiles() - String file_path = files[0].getAbsolutePath() - streamLoad { - table "${table_load_name}" - - set 'strict_mode', 'true' - set 'format', 'csv' - set 'column_separator', ',' - - file "${file_path}" - time 10000 // limit inflight 10s - - check { result, exception, startTime, endTime -> - if (exception != null) { - throw exception - } - log.info("Stream load result: ${result}".toString()) - def json = parseJson(result) - assertEquals("success", json.Status.toLowerCase()) - assertEquals(4, json.NumberTotalRows) - assertEquals(0, json.NumberFilteredRows) - } - } - - qt_select_load1 """ SELECT * FROM ${table_load_name} t ORDER BY user_id; """ - + qt_select_load1 """ SELECT * FROM s3( + "uri" = "http://${s3_endpoint}${outfile_url.substring(4, outfile_url.length() - 1)}0.${format}", + "s3.access_key"= "${ak}", + "s3.secret_key" = "${sk}", + "format" = "${format}", + "region" = "${region}" + ) ORDER BY c1; + """ } finally { - try_sql("DROP TABLE IF EXISTS ${table_load_name}") - delete_files.call("${outFilePath}") } @@ -235,161 +169,96 @@ suite("test_export_data_types", "p0") { uuid = UUID.randomUUID().toString() outFilePath = """${outfile_path_prefix}_${uuid}""" label = "label_${uuid}" + format = "parquet" try { - // check export path - check_path_exists.call("${outFilePath}") - // exec export sql """ - EXPORT TABLE ${table_export_name} TO "file://${outFilePath}/" + EXPORT TABLE ${table_export_name} TO "s3://${outFilePath}/" PROPERTIES( "label" = "${label}", - "format" = "parquet" + "format" = "${format}" + ) WITH S3( + "s3.endpoint" = "${s3_endpoint}", + "s3.region" = "${region}", + "s3.secret_key"="${sk}", + "s3.access_key" = "${ak}" ); """ - waiting_export.call(label) + def outfile_url = waiting_export.call(label) - // check file amounts - check_file_amounts.call("${outFilePath}", 1) - - create_table(table_load_name); - - File[] files = new File("${outFilePath}").listFiles() - String file_path = files[0].getAbsolutePath() - streamLoad { - table "${table_load_name}" - - set 'strict_mode', 'true' - set 'format', 'parquet' - - file "${file_path}" - time 10000 // limit inflight 10s - - check { result, exception, startTime, endTime -> - if (exception != null) { - throw exception - } - log.info("Stream load result: ${result}".toString()) - def json = parseJson(result) - assertEquals("success", json.Status.toLowerCase()) - assertEquals(4, json.NumberTotalRows) - assertEquals(0, json.NumberFilteredRows) - } - } - - qt_select_load2 """ SELECT * FROM ${table_load_name} t ORDER BY user_id; """ - + qt_select_load2 """ SELECT * FROM s3( + "uri" = "http://${s3_endpoint}${outfile_url.substring(4, outfile_url.length() - 1)}0.${format}", + "s3.access_key"= "${ak}", + "s3.secret_key" = "${sk}", + "format" = "${format}", + "region" = "${region}" + ) ORDER BY user_id; + """ } finally { - try_sql("DROP TABLE IF EXISTS ${table_load_name}") - delete_files.call("${outFilePath}") } // 3. test orc uuid = UUID.randomUUID().toString() outFilePath = """${outfile_path_prefix}_${uuid}""" label = "label_${uuid}" + format = "orc" try { - // check export path - check_path_exists.call("${outFilePath}") - // exec export sql """ - EXPORT TABLE ${table_export_name} TO "file://${outFilePath}/" + EXPORT TABLE ${table_export_name} TO "s3://${outFilePath}/" PROPERTIES( "label" = "${label}", - "format" = "orc" + "format" = "${format}" + ) WITH S3( + "s3.endpoint" = "${s3_endpoint}", + "s3.region" = "${region}", + "s3.secret_key"="${sk}", + "s3.access_key" = "${ak}" ); """ - waiting_export.call(label) + def outfile_url = waiting_export.call(label) - // check file amounts - check_file_amounts.call("${outFilePath}", 1) - - create_table(table_load_name); - - File[] files = new File("${outFilePath}").listFiles() - String file_path = files[0].getAbsolutePath() - streamLoad { - table "${table_load_name}" - - set 'strict_mode', 'true' - set 'format', 'orc' - - file "${file_path}" - time 10000 // limit inflight 10s - - check { result, exception, startTime, endTime -> - if (exception != null) { - throw exception - } - log.info("Stream load result: ${result}".toString()) - def json = parseJson(result) - assertEquals("success", json.Status.toLowerCase()) - assertEquals(4, json.NumberTotalRows) - assertEquals(0, json.NumberFilteredRows) - } - } - - qt_select_load3 """ SELECT * FROM ${table_load_name} t ORDER BY user_id; """ - + qt_select_load3 """ SELECT * FROM s3( + "uri" = "http://${s3_endpoint}${outfile_url.substring(4, outfile_url.length() - 1)}0.${format}", + "s3.access_key"= "${ak}", + "s3.secret_key" = "${sk}", + "format" = "${format}", + "region" = "${region}" + ) ORDER BY user_id; + """ } finally { - try_sql("DROP TABLE IF EXISTS ${table_load_name}") - delete_files.call("${outFilePath}") } // 4. test csv_with_names uuid = UUID.randomUUID().toString() outFilePath = """${outfile_path_prefix}_${uuid}""" label = "label_${uuid}" + format = "csv_with_names" try { - // check export path - check_path_exists.call("${outFilePath}") - // exec export sql """ - EXPORT TABLE ${table_export_name} TO "file://${outFilePath}/" + EXPORT TABLE ${table_export_name} TO "s3://${outFilePath}/" PROPERTIES( "label" = "${label}", - "format" = "csv_with_names", - "column_separator"="," + "format" = "${format}" + ) WITH S3( + "s3.endpoint" = "${s3_endpoint}", + "s3.region" = "${region}", + "s3.secret_key"="${sk}", + "s3.access_key" = "${ak}" ); """ - waiting_export.call(label) + def outfile_url = waiting_export.call(label) - // check file amounts - check_file_amounts.call("${outFilePath}", 1) - - create_table(table_load_name); - - File[] files = new File("${outFilePath}").listFiles() - String file_path = files[0].getAbsolutePath() - streamLoad { - table "${table_load_name}" - - set 'strict_mode', 'true' - set 'format', 'csv_with_names' - set 'column_separator', ',' - - file "${file_path}" - time 10000 // limit inflight 10s - - check { result, exception, startTime, endTime -> - if (exception != null) { - throw exception - } - log.info("Stream load result: ${result}".toString()) - def json = parseJson(result) - assertEquals("success", json.Status.toLowerCase()) - assertEquals(4, json.NumberTotalRows) - assertEquals(0, json.NumberFilteredRows) - } - } - - qt_select_load4 """ SELECT * FROM ${table_load_name} t ORDER BY user_id; """ - + qt_select_load4 """ SELECT * FROM s3( + "uri" = "http://${s3_endpoint}${outfile_url.substring(4, outfile_url.length() - 1)}0.csv", + "s3.access_key"= "${ak}", + "s3.secret_key" = "${sk}", + "format" = "${format}", + "region" = "${region}" + ) ORDER BY user_id; + """ } finally { - try_sql("DROP TABLE IF EXISTS ${table_load_name}") - delete_files.call("${outFilePath}") } @@ -397,55 +266,32 @@ suite("test_export_data_types", "p0") { uuid = UUID.randomUUID().toString() outFilePath = """${outfile_path_prefix}_${uuid}""" label = "label_${uuid}" + format = "csv_with_names_and_types" try { - // check export path - check_path_exists.call("${outFilePath}") - // exec export sql """ - EXPORT TABLE ${table_export_name} TO "file://${outFilePath}/" + EXPORT TABLE ${table_export_name} TO "s3://${outFilePath}/" PROPERTIES( "label" = "${label}", - "format" = "csv_with_names_and_types", - "column_separator"="," + "format" = "${format}" + ) WITH S3( + "s3.endpoint" = "${s3_endpoint}", + "s3.region" = "${region}", + "s3.secret_key"="${sk}", + "s3.access_key" = "${ak}" ); """ - waiting_export.call(label) + def outfile_url = waiting_export.call(label) - // check file amounts - check_file_amounts.call("${outFilePath}", 1) - - create_table(table_load_name); - - File[] files = new File("${outFilePath}").listFiles() - String file_path = files[0].getAbsolutePath() - streamLoad { - table "${table_load_name}" - - set 'strict_mode', 'true' - set 'format', 'csv_with_names_and_types' - set 'column_separator', ',' - - file "${file_path}" - time 10000 // limit inflight 10s - - check { result, exception, startTime, endTime -> - if (exception != null) { - throw exception - } - log.info("Stream load result: ${result}".toString()) - def json = parseJson(result) - assertEquals("success", json.Status.toLowerCase()) - assertEquals(4, json.NumberTotalRows) - assertEquals(0, json.NumberFilteredRows) - } - } - - qt_select_load5 """ SELECT * FROM ${table_load_name} t ORDER BY user_id; """ - + qt_select_load5 """ SELECT * FROM s3( + "uri" = "http://${s3_endpoint}${outfile_url.substring(4, outfile_url.length() - 1)}0.csv", + "s3.access_key"= "${ak}", + "s3.secret_key" = "${sk}", + "format" = "${format}", + "region" = "${region}" + ) ORDER BY user_id; + """ } finally { - try_sql("DROP TABLE IF EXISTS ${table_load_name}") - delete_files.call("${outFilePath}") } try_sql("DROP TABLE IF EXISTS ${table_export_name}") diff --git a/regression-test/suites/export_p0/test_export_orc.groovy b/regression-test/suites/export_p0/test_export_orc.groovy index c4c76ae9c2..c6bb2a4e5d 100644 --- a/regression-test/suites/export_p0/test_export_orc.groovy +++ b/regression-test/suites/export_p0/test_export_orc.groovy @@ -26,38 +26,16 @@ suite("test_export_orc", "p0") { sql """ set enable_nereids_planner=true """ sql """ set enable_fallback_to_original_planner=false """ - - // check whether the FE config 'enable_outfile_to_local' is true - StringBuilder strBuilder = new StringBuilder() - strBuilder.append("curl --location-trusted -u " + context.config.jdbcUser + ":" + context.config.jdbcPassword) - strBuilder.append(" http://" + context.config.feHttpAddress + "/rest/v1/config/fe") - - String command = strBuilder.toString() - def process = command.toString().execute() - def code = process.waitFor() - def err = IOGroovyMethods.getText(new BufferedReader(new InputStreamReader(process.getErrorStream()))); - def out = process.getText() - logger.info("Request FE Config: code=" + code + ", out=" + out + ", err=" + err) - assertEquals(code, 0) - def response = parseJson(out.trim()) - assertEquals(response.code, 0) - assertEquals(response.msg, "success") - def configJson = response.data.rows - boolean enableOutfileToLocal = false - for (Object conf: configJson) { - assert conf instanceof Map - if (((Map) conf).get("Name").toLowerCase() == "enable_outfile_to_local") { - enableOutfileToLocal = ((Map) conf).get("Value").toLowerCase() == "true" - } - } - if (!enableOutfileToLocal) { - logger.warn("Please set enable_outfile_to_local to true to run test_outfile") - return - } + String ak = getS3AK() + String sk = getS3SK() + String s3_endpoint = getS3Endpoint() + String region = getS3Region() + String bucket = context.config.otherConfigs.get("s3BucketName"); def table_export_name = "test_export_orc" - def table_load_name = "test_load_orc" - def outfile_path_prefix = """/tmp/test_export""" + def outfile_path_prefix = """${bucket}/export/p0/orc/exp""" + def format = "orc" + // create table and insert sql """ DROP TABLE IF EXISTS ${table_export_name} """ @@ -98,37 +76,16 @@ suite("test_export_orc", "p0") { qt_select_export1 """ SELECT * FROM ${table_export_name} t ORDER BY user_id; """ - def check_path_exists = { dir_path -> - File path = new File(dir_path) - if (!path.exists()) { - assert path.mkdirs() - } else { - throw new IllegalStateException("""${dir_path} already exists! """) - } - } - - def check_file_amounts = { dir_path, amount -> - File path = new File(dir_path) - File[] files = path.listFiles() - assert files.length == amount - } - - def delete_files = { dir_path -> - File path = new File(dir_path) - if (path.exists()) { - for (File f: path.listFiles()) { - f.delete(); - } - path.delete(); - } - } - def waiting_export = { export_label -> while (true) { def res = sql """ show export where label = "${export_label}" """ logger.info("export state: " + res[0][2]) if (res[0][2] == "FINISHED") { - break; + def json = parseJson(res[0][11]) + assert json instanceof List + assertEquals("1", json.fileNumber[0][0]) + log.info("outfile_path: ${json.url[0][0]}") + return json.url[0][0]; } else if (res[0][2] == "CANCELLED") { throw new IllegalStateException("""export failed: ${res[0][10]}""") } else { @@ -142,74 +99,32 @@ suite("test_export_orc", "p0") { def outFilePath = """${outfile_path_prefix}_${uuid}""" def label = "label_${uuid}" try { - // check export path - check_path_exists.call("${outFilePath}") - // exec export sql """ - EXPORT TABLE ${table_export_name} TO "file://${outFilePath}/" + EXPORT TABLE ${table_export_name} TO "s3://${outFilePath}/" PROPERTIES( "label" = "${label}", - "format" = "orc", - 'columns' = 'user_id, city, age, sex, bool_col, int_col, bigint_col, float_col, double_col, char_col, decimal_col' + "format" = "${format}" + ) + WITH S3( + "s3.endpoint" = "${s3_endpoint}", + "s3.region" = "${region}", + "s3.secret_key"="${sk}", + "s3.access_key" = "${ak}" ); """ - waiting_export.call(label) - - // check file amounts - check_file_amounts.call("${outFilePath}", 1) + def outfile_url = waiting_export.call(label) - // check data correctness - sql """ DROP TABLE IF EXISTS ${table_load_name} """ - sql """ - CREATE TABLE IF NOT EXISTS ${table_load_name} ( - `user_id` INT NOT NULL COMMENT "用户id", - `city` VARCHAR(20) COMMENT "用户所在城市", - `age` SMALLINT COMMENT "用户年龄", - `sex` TINYINT COMMENT "用户性别", - `bool_col` boolean COMMENT "", - `int_col` int COMMENT "", - `bigint_col` bigint COMMENT "", - `float_col` float COMMENT "", - `double_col` double COMMENT "", - `char_col` CHAR(10) COMMENT "", - `decimal_col` decimal COMMENT "" - ) - DISTRIBUTED BY HASH(user_id) PROPERTIES("replication_num" = "1"); - """ - - File[] files = new File("${outFilePath}").listFiles() - String file_path = files[0].getAbsolutePath() - streamLoad { - table "${table_load_name}" - - set 'columns', 'user_id, city, age, sex, bool_col, int_col, bigint_col, float_col, double_col, char_col, decimal_col' - set 'strict_mode', 'true' - set 'format', 'orc' - - file "${file_path}" - time 10000 // limit inflight 10s - - check { result, exception, startTime, endTime -> - if (exception != null) { - throw exception - } - log.info("Stream load result: ${result}".toString()) - def json = parseJson(result) - assertEquals("success", json.Status.toLowerCase()) - assertEquals(100, json.NumberTotalRows) - assertEquals(0, json.NumberFilteredRows) - } - } - - sql """ sync; """ - - qt_select_load1 """ SELECT * FROM ${table_load_name} t ORDER BY user_id; """ + qt_select_load1 """ SELECT * FROM s3( + "uri" = "http://${s3_endpoint}${outfile_url.substring(4, outfile_url.length() - 1)}0.${format}", + "s3.access_key"= "${ak}", + "s3.secret_key" = "${sk}", + "format" = "${format}", + "region" = "${region}" + ) ORDER BY user_id; + """ } finally { - try_sql("DROP TABLE IF EXISTS ${table_load_name}") - delete_files.call("${outFilePath}") + try_sql("DROP TABLE IF EXISTS ${table_export_name}") } - - try_sql("DROP TABLE IF EXISTS ${table_export_name}") } diff --git a/regression-test/suites/external_table_p0/export/hive_read/orc/test_hive_read_orc.groovy b/regression-test/suites/external_table_p0/export/hive_read/orc/test_hive_read_orc.groovy index cd1b06af7e..b897263ea8 100644 --- a/regression-test/suites/external_table_p0/export/hive_read/orc/test_hive_read_orc.groovy +++ b/regression-test/suites/external_table_p0/export/hive_read/orc/test_hive_read_orc.groovy @@ -183,12 +183,12 @@ suite("test_hive_read_orc", "external,hive,external_docker") { def hive_column_define = """ user_id INT, - `date` STRING, - datev2 STRING, - `datetime` STRING, - datetimev2_1 STRING, - datetimev2_2 STRING, - datetimev2_3 STRING, + `date` DATE, + datev2 DATE, + `datetime` TIMESTAMP, + datetimev2_1 TIMESTAMP, + datetimev2_2 TIMESTAMP, + datetimev2_3 TIMESTAMP, city STRING, street STRING, age SMALLINT, diff --git a/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.groovy b/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.groovy index 13a7b8e960..1b69c91783 100644 --- a/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.groovy +++ b/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet.groovy @@ -183,12 +183,12 @@ suite("test_hive_read_parquet", "external,hive,external_docker") { def hive_column_define = """ user_id INT, - `date` STRING, - datev2 STRING, - `datetime` STRING, - datetimev2_1 STRING, - datetimev2_2 STRING, - datetimev2_3 STRING, + `date` DATE, + datev2 DATE, + `datetime` TIMESTAMP, + datetimev2_1 TIMESTAMP, + datetimev2_2 TIMESTAMP, + datetimev2_3 TIMESTAMP, city STRING, street STRING, age SMALLINT, diff --git a/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.groovy b/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.groovy index d6b43a2598..382906a1bb 100644 --- a/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.groovy +++ b/regression-test/suites/external_table_p0/export/hive_read/parquet/test_hive_read_parquet_comlex_type.groovy @@ -238,7 +238,7 @@ suite("test_hive_read_parquet_complex_type", "external,hive,external_docker") { try { def doris_field_define = "`s_info` STRUCT NULL" - def hive_field_define = "`s_info` STRUCT" + def hive_field_define = "`s_info` STRUCT" // create table to export data