github-actions[bot] commented on code in PR #67784:
URL: https://github.com/apache/doris/pull/67784#discussion_r3977794509


##########
gensrc/thrift/PlanNodes.thrift:
##########
@@ -655,7 +655,10 @@ struct TFileScanRangeParams {
     34: optional i32 iceberg_scan_semantics_version
     // FE-generated identity for sharing a deserialized table across JNI 
scanners in one scan node.
     35: optional string serialized_table_cache_key
-    // 31-33 and 36 are used in master; do not allocate them in branch-4.1.
+    // HMS catalog property hive.parquet.time-zone. When absent, format_v2 
keeps INT96 wall-clock

Review Comment:
   [P1] Preserve legacy INT96 decoding when this field is absent
   
   Old FEs cannot send field 36, and pre-patch BEs decode INT96 with the 
session timezone. An upgraded BE maps the same absence to an empty string, 
leaves `_int96_timezone` null, then passes that raw null pointer into an 
`optional`, making the native reader preserve wall-clock bytes instead. During 
the supported BE-first rolling upgrade, one old-FE query can therefore return 
values differing by the session offset depending on which BE reads a split. 
Please use an explicit semantics version/presence marker and keep absence on 
upgraded BEs as the legacy session-timezone behavior.



##########
be/src/format_v2/parquet/reader/native_column_reader.cpp:
##########
@@ -202,6 +202,24 @@ const NativeFieldSchema* find_child_field(const 
NativeFieldSchema& parent,
     return field_it == parent.children.end() ? nullptr : &*field_it;
 }
 
+Status sync_native_field_types(const ParquetColumnSchema& schema, 
NativeFieldSchema* field) {
+    DORIS_CHECK(field != nullptr);
+    field->data_type = schema.type;

Review Comment:
   [P1] Preserve Variant's physical STRUCT in this copy
   
   At a Variant node, `schema.type` is the public `DataTypeVariantV2`, while 
`NativeFieldSchema::data_type` deliberately remains `variant_physical_type` (a 
STRUCT) because `native::ColumnReader::create` dispatches groups solely from 
this primitive type. This assignment turns the copied group into a scalar; its 
`physical_column_index` is still -1, so every top-level or nested native 
Variant scan fails while constructing the row-group reader. Please preserve 
`variant_physical_type` for Variant nodes (or restrict synchronization to the 
timestamp leaves that need request-local semantics).



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