zclllyybb commented on code in PR #59720:
URL: https://github.com/apache/doris/pull/59720#discussion_r2703138812
##########
be/src/vec/exec/format/parquet/parquet_column_convert.h:
##########
@@ -677,6 +677,31 @@ struct Int64ToTimestamp : public
PhysicalToLogicalConverter {
}
};
+struct Int64ToTimestampTz : public PhysicalToLogicalConverter {
+ Status physical_convert(ColumnPtr& src_physical_col, ColumnPtr&
src_logical_column) override {
+ ColumnPtr src_col = remove_nullable(src_physical_col);
+ MutableColumnPtr dst_col =
remove_nullable(src_logical_column)->assume_mutable();
+
+ size_t rows = src_col->size();
+ size_t start_idx = dst_col->size();
+ dst_col->resize(start_idx + rows);
+
+ const auto& src_data = assert_cast<const
ColumnInt64*>(src_col.get())->get_data();
+ auto& dest_data =
assert_cast<ColumnTimeStampTz*>(dst_col.get())->get_data();
+ static const cctz::time_zone utc = cctz::utc_time_zone();
+
+ for (int i = 0; i < rows; i++) {
+ int64_t x = src_data[i];
+ auto& num = dest_data[start_idx + i];
+ auto& value =
reinterpret_cast<DateV2Value<DateTimeV2ValueType>&>(num);
Review Comment:
ditto. binary_cast to TimestampTzValue
##########
be/src/vec/data_types/serde/data_type_timestamptz_serde.cpp:
##########
@@ -172,4 +174,69 @@ Status
DataTypeTimeStampTzSerDe::write_column_to_mysql_binary(const IColumn& col
return Status::OK();
}
+Status DataTypeTimeStampTzSerDe::write_column_to_arrow(const IColumn& column,
+ const NullMap* null_map,
+ arrow::ArrayBuilder*
array_builder,
+ int64_t start, int64_t
end,
+ const cctz::time_zone&
ctz) const {
+ const auto& col_data = assert_cast<const
ColumnTimeStampTz&>(column).get_data();
+ auto& timestamp_builder =
assert_cast<arrow::TimestampBuilder&>(*array_builder);
+ std::shared_ptr<arrow::TimestampType> timestamp_type =
+
std::static_pointer_cast<arrow::TimestampType>(array_builder->type());
+ static const auto& utc = cctz::utc_time_zone();
+ for (size_t i = start; i < end; ++i) {
+ if (null_map && (*null_map)[i]) {
+ RETURN_IF_ERROR(checkArrowStatus(timestamp_builder.AppendNull(),
column.get_name(),
+ array_builder->type()->name()));
+ } else {
+ int64_t timestamp = 0;
+ DateV2Value<DateTimeV2ValueType> datetime_val =
Review Comment:
why need to bridge by a datetime value? looks weird. I think you can add
`unix_timestamp` to `TimestampTzValue` and directly use it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]