Gabriel39 opened a new pull request, #68396:
URL: https://github.com/apache/doris/pull/68396

   ### What problem does this PR solve?
   
   Related PR: #68381. This is the master version of the second split from 
#67784, based on the primitives merged in #68301.
   
   Arrow batch conversion mixes protocol serialization with table-specific UUID 
handling, while writers construct schemas separately. Introduce explicit Doris, 
Python, Arrow Flight, Parquet, Hive, Iceberg and Paimon convertors with 
instance-owned schema parameters and timezone. Move schema 
construction/decoding into the convertors and route nested SerDe writes through 
the selected format.
   
   Separate Parquet, Hive and Iceberg writers and migrate existing callers. 
Preserve master's tracked Arrow memory pools, Iceberg statistics and 
timestamp-nanosecond support. Master does not yet contain the Paimon write 
backend or physical Variant table writes present on branch-4.1; this pick adds 
the converter interfaces without importing those features. Parquet timestamp 
encoding and external type mappings remain unchanged.
   
   Include the Python timezone regression correction from #68381: the single 
string output uses ARRAY<STRING>, so the lateral-view comparison reaches 
execution instead of failing on a STRUCT-versus-STRING comparison. Retain 
coverage for four session timezones, microseconds, pre-epoch values, NULLs, 
UDF, UDTF and UDAF.
   
   ### Release note
   
   Fix Python UDF timestamp conversion to preserve wall-clock values when the 
Arrow protocol declares a fixed-offset timezone.
   
   ### Check List (For Author)
   
   - Test
       - [x] Unit Test: explicit schemas and independent converter instances, 
nested/null values, UUID and fixed binary bytes, timestamp bindings, and 
Iceberg writer statistics.
       - [x] Regression test: Python UDF/UDTF/UDAF timezone comparisons and the 
existing timestamp snapshot corrections.
   - Behavior changed:
       - [x] Yes: align Python UDF conversion with its Arrow timezone 
declaration; reject invalid nested bindings before casts.
   - Does this need documentation?
       - [x] No.
   
   Validation: ASAN BE build and 310 focused tests passed (53 suites), covering 
Arrow conversion, Parquet/ORC, Variant SerDe and Python. All 42 affected C++ 
files passed clang-format 16, and header hygiene passed. The original UDTF 
declaration reproduced the SQL analysis error on an isolated FE; the corrected 
declaration passed the same analysis. Groovy and embedded Python checks passed. 
Full Python SQL and external-catalog regressions remain for CI. clang-tidy was 
attempted: the new converter's size warning was resolved; analysis remains 
blocked by a pre-existing unmatched NOLINTEND in core/types.h.
   
   ### Check List (For Reviewer who merge this PR)
   
   - [ ] Confirm the release note
   - [ ] Confirm test cases
   - [ ] Confirm document
   - [ ] Add branch pick label
   


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