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

   ### What problem does this PR solve?
   
   Forward-port only the requested changes whose missing behavior is still 
present on master, in branch-4.1 merge order: #68614, then #68667, followed by 
#68859.
   
   | Source PR | Evidence on master before this change | Action |
   | --- | --- | --- |
   | #68614 | Arrow ARRAY/MAP/STRUCT child fields lose Doris logical type 
markers; JSON/VARIANT markers are absent. | Preserve recursive logical metadata 
and use protocol-specific schema converters. |
   | #68667 | Flight maps Variant V2 to UTF8 instead of native binary values. | 
Return `arrow.parquet.variant` with `struct<metadata: binary not null, value: 
binary not null>` storage; preserve SQL NULL, physical scalar types and 
row-local dictionaries. |
   | #68852 | The obsolete external-table queries are already removed. All 276 
active query tags match the 276 expected output blocks in execution order. | 
Excluded; no expected-output changes. |
   | #68856 | The preload module is already removed. The Hudi plugin resolves 
Parquet readers and format structures consistently to 1.18.0. | Excluded; no 
dependency changes. |
   | #68859 | Block metadata omits VARBINARY length, and deserialization 
constructs `DataTypeVarbinary()` with an unspecified length. | Preserve 
declared lengths, including nested and nullable columns, using optional 
protobuf field 13. |
   
   Adapt the ports to master's existing architecture: retain native UUID and 
nanosecond/timestamp mappings, reuse the shared FE Arrow mapper, and wrap 
extension storage correctly for nested Variant arrays. Master already uses 
Variant V2, so the removed legacy Variant switch and SerDe are not restored. 
Branch-4.1-only Iceberg Variant writing and prepared-statement schema machinery 
are outside this port.
   
   The Flight integration tests and Python samples cover native Variant and 
recursive metadata. The Flink regression explicitly casts Variant to STRING for 
a connector that declares that column as STRING.
   
   ### Release note
   
   Preserve nested logical type metadata in Arrow Flight SQL results, return 
Variant V2 as native Arrow Variant binary, and retain declared VARBINARY 
lengths across block serialization. Clients requiring Variant JSON text should 
explicitly cast it to STRING.
   
   ### Validation
   
   - FE targeted unit tests: 64 passed, including nested metadata, native 
Variant, UUID preservation and shared Arrow mappings.
   - FE Checkstyle: passed.
   - BE targeted ASAN unit tests: 326 passed, covering Arrow, Variant, UUID and 
VARBINARY.
   - Changed-line clang-tidy, clang-format 16 and build hygiene checks: passed.
   - Groovy regression scripts compiled; Python samples passed syntax checks.
   - Checked modified Thrift/protobuf field IDs against master and branch-3.1, 
branch-4.0, branch-4.1 and branch-4.2.
   - Confirmed the ES baseline query/output alignment and Hudi Parquet 
dependency tree before excluding those ports.
   - Live cluster, ADBC and Flink integration tests were not run locally.
   
   ### Check List (For Author)
   
   - Test
     - [x] Unit tests
     - [x] Regression tests added/updated
   - Behavior changed:
     - [x] Yes, native Variant Flight output and preserved type metadata.
   - Does this need documentation?
     - [x] Yes, Python Flight sample documentation updated.
   


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