Gabriel39 commented on code in PR #67784:
URL: https://github.com/apache/doris/pull/67784#discussion_r4056549385


##########
be/src/exprs/create_predicate_function.h:
##########
@@ -130,7 +131,11 @@ inline auto create_minmax_filter(PrimitiveType type, bool 
null_aware) {
 }
 
 template <size_t N = 0>
-inline auto create_set(PrimitiveType type, bool null_aware) {
+inline HybridSetBase* create_set(PrimitiveType type, bool null_aware) {

Review Comment:
   Addressed in 19bb5f231e.
   
   Removed binary support from the shared predicate factory and restored 
StringSet. Binary IN/NOT IN now returns NotSupported; the factory rejects 
binary storage/runtime predicates. Tests cover IN/NOT IN and both set/min-max 
filter factory rejection.



##########
be/src/exprs/expr_zonemap_filter.cpp:
##########
@@ -185,6 +185,12 @@ const BloomFilterEvalContext::SlotBloomFilter* 
BloomFilterEvalContext::slot(int
 
 TExprNode create_texpr_node_from_hybrid_set_value(const void* data, const 
PrimitiveType& type,
                                                   int precision, int scale) {
+    if (type == TYPE_VARBINARY) {

Review Comment:
   Addressed in 19bb5f231e.
   
   Removed binary hybrid-set materialization from the zone-map helper. Binary 
IN is unsupported and does not advertise zone-map, dictionary, or Bloom 
evaluation capabilities. Added checks for all three capabilities.



##########
be/src/format/arrow/arrow_block_convertor.cpp:
##########
@@ -118,6 +120,94 @@ std::shared_ptr<arrow::DataType> extension_storage_type(
     }
 }
 
+bool is_declared_plain_arrow_binding(const DataTypePtr& type,

Review Comment:
   Addressed in 19bb5f231e.
   
   Documented the Doris logical type, ordinary SerDe Arrow mapping, and 
requested target representation, with the DATETIMEV2 versus TIMESTAMPTZ 
timezone example and the recursive nested-type rule.



##########
be/src/format/table/paimon/paimon_arrow_block_convertor.cpp:
##########
@@ -0,0 +1,45 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#include "format/table/paimon/paimon_arrow_block_convertor.h"
+
+#include <arrow/array/builder_base.h>
+#include <arrow/type.h>
+
+namespace doris::paimon {
+#include "common/compile_check_begin.h"
+
+Status PaimonArrowBlockConvertor::write_column(const std::shared_ptr<const 
IDataType>& type,
+                                               const DataTypeSerDe& serde, 
const IColumn& column,
+                                               const NullMap* null_map,
+                                               const 
std::shared_ptr<arrow::Field>& field,
+                                               arrow::ArrayBuilder* 
array_builder, int64_t start,
+                                               int64_t end, const 
cctz::time_zone& ctz) const {
+    // This adapter dereferences Arrow declarations that are intentionally 
forward-declared by
+    // its public header, so keep the complete definitions local to this 
implementation file.
+    return serde.write_column_to_paimon_arrow(type, column, null_map,
+                                              
field->WithType(array_builder->type()), array_builder,
+                                              start, end, ctz);
+}
+
+const PaimonArrowBlockConvertor& paimon_arrow_block_convertor() {

Review Comment:
   Addressed in 19bb5f231e.
   
   Removed paimon_arrow_block_convertor() and its static singleton. Each 
JniPaimonWriter now owns its PaimonArrowBlockConvertor, and tests construct 
their own instances. Future per-writer converter state no longer needs a global 
accessor.



##########
be/src/format/transformer/vparquet_transformer.h:
##########
@@ -83,23 +85,26 @@ struct ParquetFileOptions {
     TParquetVersion::type parquet_version;
     bool parquet_disable_dictionary = false;
     bool enable_int96_timestamps = false;
+    // Overrides only INT96 normalization; UTC preserves a wall-clock carrier.
+    std::optional<std::string> int96_timezone = std::nullopt;
 };
 
 // a wrapper of parquet output stream
-class VParquetTransformer final : public VFileFormatTransformer {
+class VParquetTransformer : public VFileFormatTransformer {
 public:
     VParquetTransformer(RuntimeState* state, doris::io::FileWriter* 
file_writer,
                         const VExprContextSPtrs& output_vexpr_ctxs,
                         std::vector<std::string> column_names, bool 
output_object_data,
                         const ParquetFileOptions& parquet_options,
-                        const std::string* iceberg_schema_json = nullptr,
-                        const iceberg::Schema* iceberg_schema = nullptr);
+                        std::unique_ptr<ArrowBlockConvertor> 
arrow_block_convertor =

Review Comment:
   Addressed in 19bb5f231e.
   
   Removed the converter parameter from both Parquet writer constructors. The 
generic writer owns its Flight converter, and the Iceberg writer owns its typed 
Iceberg converter and selects it internally alongside its schema. The schema 
path no longer downcasts an externally supplied converter.



##########
be/src/format_v2/parquet/parquet_timestamp_semantics.h:
##########
@@ -0,0 +1,47 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#pragma once
+
+#include <cstdint>
+#include <optional>
+#include <string>
+
+#include "gen_cpp/PlanNodes_types.h"
+
+namespace doris::format::parquet {
+
+inline constexpr int32_t PARQUET_TIMESTAMP_SEMANTICS_VERSION_1 = 1;
+
+inline std::optional<std::string> get_int96_timezone_override(const 
TFileScanRangeParams* params) {
+    if (params == nullptr) {

Review Comment:
   Addressed in 19bb5f231e.
   
   Deleted parquet_timestamp_semantics.h and moved timezone selection into 
TableReader, its production consumer. Moved the intermediate-protocol test with 
it; absent, explicitly empty, explicitly named, and versioned timezone states 
remain distinct.



-- 
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]

Reply via email to