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(&timestamp, 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