You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2024/03/22 00:54:52 UTC
(doris) 10/24: [Fix](Outfile) Fix the column type mapping in the orc/parquet file format (#32281)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
commit d7a3ff1ddf3f2524e188f18b6f573a8a899e12cb
Author: Tiewei Fang <43...@users.noreply.github.com>
AuthorDate: Thu Mar 21 14:59:21 2024 +0800
[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 +-
.../vec/data_types/serde/data_type_array_serde.cpp | 4 +-
.../vec/data_types/serde/data_type_array_serde.h | 4 +-
.../vec/data_types/serde/data_type_bitmap_serde.h | 4 +-
.../data_types/serde/data_type_date64_serde.cpp | 2 +-
.../vec/data_types/serde/data_type_date64_serde.h | 4 +-
.../serde/data_type_datetimev2_serde.cpp | 26 +-
.../data_types/serde/data_type_datetimev2_serde.h | 4 +-
.../data_types/serde/data_type_datev2_serde.cpp | 56 +---
.../vec/data_types/serde/data_type_datev2_serde.h | 4 +-
.../data_types/serde/data_type_decimal_serde.cpp | 2 +-
.../vec/data_types/serde/data_type_decimal_serde.h | 4 +-
.../vec/data_types/serde/data_type_hll_serde.cpp | 4 +-
be/src/vec/data_types/serde/data_type_hll_serde.h | 4 +-
.../vec/data_types/serde/data_type_jsonb_serde.cpp | 2 +-
.../vec/data_types/serde/data_type_jsonb_serde.h | 4 +-
.../vec/data_types/serde/data_type_map_serde.cpp | 12 +-
be/src/vec/data_types/serde/data_type_map_serde.h | 4 +-
.../data_types/serde/data_type_nullable_serde.cpp | 4 +-
.../data_types/serde/data_type_nullable_serde.h | 4 +-
.../data_types/serde/data_type_number_serde.cpp | 2 +-
.../vec/data_types/serde/data_type_number_serde.h | 4 +-
.../vec/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 +-
.../vec/data_types/serde/data_type_string_serde.h | 4 +-
.../data_types/serde/data_type_struct_serde.cpp | 4 +-
.../vec/data_types/serde/data_type_struct_serde.h | 4 +-
be/src/vec/runtime/vparquet_transformer.cpp | 10 +-
be/src/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 +-
.../org/apache/doris/analysis/OutFileClause.java | 88 +++---
.../data/export_p0/export/test_show_export.out | 300 +++++++++---------
.../test_outfile_expr_generate_col_name.out | 4 +-
.../parquet/test_outfile_parquet_array_type.out | 8 +-
.../parquet/test_outfile_parquet_complex_type.out | 20 +-
.../parquet/test_outfile_parquet_map_type.out | 28 +-
.../data/export_p0/test_export_data_types.out | 24 +-
regression-test/data/export_p0/test_export_orc.out | 200 ++++++------
.../data/export_p0/test_export_parquet.out | 200 ++++++------
.../export/hive_read/orc/test_hive_read_orc.out | 2 +-
.../hive_read/parquet/test_hive_read_parquet.out | 16 +-
.../parquet/test_hive_read_parquet_comlex_type.out | 40 +--
.../parquet/test_outfile_parquet_map_type.groovy | 55 +---
.../suites/export_p0/test_export_data_types.groovy | 348 ++++++---------------
.../suites/export_p0/test_export_orc.groovy | 149 ++-------
.../export/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, 744 insertions(+), 1027 deletions(-)
diff --git a/be/src/util/arrow/block_convertor.cpp b/be/src/util/arrow/block_convertor.cpp
index 009306d425e..817231e02ba 100644
--- a/be/src/util/arrow/block_convertor.cpp
+++ b/be/src/util/arrow/block_convertor.cpp
@@ -28,6 +28,7 @@
#include <arrow/util/decimal.h>
#include <arrow/visit_type_inline.h>
#include <arrow/visitor.h>
+#include <cctz/time_zone.h>
#include <glog/logging.h>
#include <stdint.h>
@@ -71,16 +72,12 @@ namespace doris {
class FromBlockConverter : public arrow::TypeVisitor {
public:
FromBlockConverter(const vectorized::Block& block, const std::shared_ptr<arrow::Schema>& 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<std::shared_ptr<arrow::Array>> _arrays;
};
@@ -391,7 +388,8 @@ Status FromBlockConverter::convert(std::shared_ptr<arrow::RecordBatch>* 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<arrow::RecordBatch>* out) {
Status convert_to_arrow_batch(const vectorized::Block& block,
const std::shared_ptr<arrow::Schema>& schema, arrow::MemoryPool* pool,
- std::shared_ptr<arrow::RecordBatch>* result) {
- FromBlockConverter converter(block, schema, pool);
+ std::shared_ptr<arrow::RecordBatch>* 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 9fb710fc759..6c3163b05de 100644
--- a/be/src/util/arrow/block_convertor.h
+++ b/be/src/util/arrow/block_convertor.h
@@ -17,6 +17,8 @@
#pragma once
+#include <cctz/time_zone.h>
+
#include <memory>
#include "common/status.h"
@@ -38,6 +40,7 @@ namespace doris {
Status convert_to_arrow_batch(const vectorized::Block& block,
const std::shared_ptr<arrow::Schema>& schema, arrow::MemoryPool* pool,
- std::shared_ptr<arrow::RecordBatch>* result);
+ std::shared_ptr<arrow::RecordBatch>* 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 a010b58b722..439572f75e6 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<arrow::
case TYPE_HLL:
case TYPE_DATE:
case TYPE_DATETIME:
- case TYPE_DATEV2:
- case TYPE_DATETIMEV2:
case TYPE_STRING:
case TYPE_JSONB:
case TYPE_OBJECT:
*result = arrow::utf8();
break;
+ case TYPE_DATEV2:
+ *result = std::make_shared<arrow::Date32Type>();
+ break;
+ case TYPE_DATETIMEV2:
+ if (type.scale > 3) {
+ *result = std::make_shared<arrow::TimestampType>(arrow::TimeUnit::MICRO);
+ } else if (type.scale > 0) {
+ *result = std::make_shared<arrow::TimestampType>(arrow::TimeUnit::MILLI);
+ } else {
+ *result = std::make_shared<arrow::TimestampType>(arrow::TimeUnit::SECOND);
+ }
+ break;
case TYPE_DECIMALV2:
*result = std::make_shared<arrow::Decimal128Type>(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 97b1154c2cf..38fe92d4683 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<const ColumnArray&>(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 b809f73724f..24b57888c0a 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 edea6647ee6..b9e2f6ed810 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 a995302f6ef..08e4e81b663 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<const ColumnVector<Int64>&>(column).get_data();
auto& string_builder = assert_cast<arrow::StringBuilder&>(*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 a9730ccf706..dbca948ac0d 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<true>& 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 8fcf9c3c949..56aeb3c29ca 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<const ColumnVector<UInt64>&>(column).get_data();
- auto& string_builder = assert_cast<arrow::StringBuilder&>(*array_builder);
+ int end, const cctz::time_zone& ctz) const {
+ const auto& col_data = static_cast<const ColumnVector<UInt64>&>(column).get_data();
+ auto& timestamp_builder = assert_cast<arrow::TimestampBuilder&>(*array_builder);
for (size_t i = start; i < end; ++i) {
- char buf[64];
- const DateV2Value<DateTimeV2ValueType>* time_val =
- (const DateV2Value<DateTimeV2ValueType>*)(&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<DateTimeV2ValueType> datetime_val =
+ binary_cast<UInt64, DateV2Value<DateTimeV2ValueType>>(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 a6bb8d45545..d2deda18449 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 788be2fd00a..047d44b4637 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<const ColumnVector<UInt32>&>(column).get_data();
- auto& string_builder = assert_cast<arrow::StringBuilder&>(*array_builder);
+ int end, const cctz::time_zone& ctz) const {
+ const auto& col_data = static_cast<const ColumnVector<UInt32>&>(column).get_data();
+ auto& date32_builder = assert_cast<arrow::Date32Builder&>(*array_builder);
for (size_t i = start; i < end; ++i) {
- char buf[64];
- const DateV2Value<DateV2ValueType>* time_val =
- (const DateV2Value<DateV2ValueType>*)(&col_data[i]);
- int len = time_val->to_buffer(buf);
+ int32_t daynr = binary_cast<UInt32, DateV2Value<DateV2ValueType>>(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<StringRef>& buffer_list) const {
- auto& col_data = assert_cast<const ColumnVector<UInt32>&>(column).get_data();
- orc::StringVectorBatch* cur_batch = dynamic_cast<orc::StringVectorBatch*>(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<const ColumnVector<UInt32>&>(column).get_data();
+ auto* cur_batch = dynamic_cast<orc::LongVectorBatch*>(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<UInt32, DateV2Value<DateV2ValueType>>(col_data[row_id])
- .to_buffer(const_cast<char*>(bufferRef.data) + offset);
-
- REALLOC_MEMORY_FOR_ORC_WRITER()
-
- cur_batch->length[row_id] = len;
- offset += len;
- }
-
- 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<char*>(bufferRef.data) + begin_off + data_off;
- data_off += cur_batch->length[row_id];
- }
+ cur_batch->data[row_id] =
+ binary_cast<UInt32, DateV2Value<DateV2ValueType>>(col_data[row_id]).daynr() -
+ date_threshold;
}
-
- 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 809f7e94ca4..01e550d9811 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<true>& 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 3d5c10ff01d..c7fa9444771 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<T>::deserialize_one_cell_from_json(IColumn& column,
template <typename T>
void DataTypeDecimalSerDe<T>::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<const ColumnDecimal<T>&>(column);
auto& builder = reinterpret_cast<arrow::Decimal128Builder&>(*array_builder);
if constexpr (std::is_same_v<T, Decimal<Int128>>) {
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 347e17ada14..f1aab124cff 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<true>& 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 7a82e49ed69..a4dc673e0ee 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<const ColumnHLL&>(column);
auto& builder = assert_cast<arrow::StringBuilder&>(*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 c7ea532da2d..b5e59a3e37f 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 1bcfbc2e78c..b7c2e29e0bf 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<const ColumnString&>(column);
auto& builder = assert_cast<arrow::StringBuilder&>(*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 5d291d7186a..ec4436d149e 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<false>& 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 c682062471f..563a6663755 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<arrow::MapBuilder&>(*array_builder);
auto& map_column = assert_cast<const ColumnMap&>(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 96e57b02d1f..264a22d853f 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 993dc633c40..55bdbe1fccc 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<const ColumnNullable&>(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 3794ad15a3e..24f1946614c 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<true>& 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 5d34ea92ae7..0777a85c2bb 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 <typename T>
void DataTypeNumberSerDe<T>::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<const ColumnType&>(column).get_data();
using ARROW_BUILDER_TYPE = typename TypeMapLookup<T, DORIS_NUMERIC_ARROW_BUILDER>::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 87c960b2875..fedee87d3bd 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 b25f1dbb1b5..4d78d67352d 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 e8fd621566a..fca870049f2 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 b54879639d9..464e23a9319 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 35857cf88fb..590c8e3808b 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<const ColumnType&>(column);
auto& builder = assert_cast<arrow::StringBuilder&>(*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 9ddda64b46b..8c8e80c0c53 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<arrow::StructBuilder&>(*array_builder);
auto& struct_column = assert_cast<const ColumnStruct&>(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 24ffda79488..b09def9719f 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 a7b771c9015..94ff92de76e 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<arrow::RecordBatch> 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 49885b3420e..ca8e1cf3c3b 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 774d938bc9d..c95d616b617 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 <arrow/type.h>
+#include <cctz/time_zone.h>
#include <stddef.h>
#include <memory>
@@ -73,6 +74,8 @@ private:
uint64_t _bytes_sent = 0;
std::shared_ptr<arrow::Schema> _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 58c576aa8f6..eca9e65ab49 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 c9a6922336c..3a1dd9991d4 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 <cctz/time_zone.h>
+
#include <memory>
#include <vector>
@@ -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 bd7072ee79a..bce3e419775 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<void>(
- 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<void>(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<void>(
- 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<void>(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 c0af252d9eb..8c975d4ea0d 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<Expr> resultExprs, List<String> 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 8432bc86e70..90277ca28f2 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 d1fc5fa6313..b5c2217e48a 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 b8843a2fd68..3722161c9d2 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 608af5367dc..b1742fc9616 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 859e2baf938..7830e41751b 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 bc53b064a88..2a582480b7f 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 906795cefa2..0729d8bcfdf 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 8e1377bda10..764e4cd8b04 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 0950edc92d6..26799d9a532 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 b2a579e9698..90a5cf00ee3 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 1eb467b5fa0..3960f089d49 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 f2657b2c2b9..36e7ed2bd28 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<STRING, LARGEINT> 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<LARGEINT, STRING> 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<INT, DECIMAL(15,5)> 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<INT, DOUBLE> 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<STRING, DECIMAL(15,5)> 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<STRING, DOUBLE> 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<STRING, BIGINT> 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<STRING, BOOLEAN> 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<INT, BOOLEAN> 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<DATETIME, STRING> 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<DATETIME, INT> 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<DATE, INT> 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<DATE, STRING> 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<DATETIME, STRING> 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<BIGINT, VARCHAR(20)> 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<BOOLEAN, VARCHAR(20)> 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<BOOLEAN, STRING> 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<STRING, STRING> 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 bcd1f998b47..82519c161da 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<String, String>) conf).get("Name").toLowerCase() == "enable_outfile_to_local") {
- enableOutfileToLocal = ((Map<String, String>) 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 c4c76ae9c23..c6bb2a4e5d3 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<String, String>) conf).get("Name").toLowerCase() == "enable_outfile_to_local") {
- enableOutfileToLocal = ((Map<String, String>) 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'
- );
- """
- waiting_export.call(label)
-
- // check file amounts
- check_file_amounts.call("${outFilePath}", 1)
-
- // 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 ""
+ "format" = "${format}"
)
- DISTRIBUTED BY HASH(user_id) PROPERTIES("replication_num" = "1");
+ WITH S3(
+ "s3.endpoint" = "${s3_endpoint}",
+ "s3.region" = "${region}",
+ "s3.secret_key"="${sk}",
+ "s3.access_key" = "${ak}"
+ );
"""
-
- 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; """
+ def outfile_url = waiting_export.call(label)
+
+ 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 cd1b06af7ef..b897263ea86 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 13a7b8e960e..1b69c917835 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 d6b43a2598f..382906a1bb2 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<user_id:INT, date:DATE, datetime:DATETIME, city:VARCHAR(20), age:SMALLINT, sex:TINYINT, bool_col:BOOLEAN, int_col:INT, bigint_col:BIGINT, largeint_col:LARGEINT, float_col:FLOAT, double_col:DOUBLE, char_col:CHAR(10), decimal_col:DECIMAL> NULL"
- def hive_field_define = "`s_info` STRUCT<user_id:INT, `date`:STRING, `datetime`:STRING, city:VARCHAR(20), age:SMALLINT, sex:TINYINT, bool_col:BOOLEAN, int_col:INT, bigint_col:BIGINT, largeint_col:STRING, float_col:FLOAT, double_col:DOUBLE, char_col:CHAR(10), decimal_col:DECIMAL>"
+ def hive_field_define = "`s_info` STRUCT<user_id:INT, `date`:DATE, `datetime`:TIMESTAMP, city:VARCHAR(20), age:SMALLINT, sex:TINYINT, bool_col:BOOLEAN, int_col:INT, bigint_col:BIGINT, largeint_col:STRING, float_col:FLOAT, double_col:DOUBLE, char_col:CHAR(10), decimal_col:DECIMAL>"
// create table to export data
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org