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

   ### What problem does this PR solve?
   
   This ports #68297 to `master`, preserving the first of five planned 
extractions from #67784.
   
   Binary `Field` values can retain references to released source storage, and 
Hive binary text needs its own Base64 contract. TIMESTAMPTZ output can lose 
historical offset seconds, format invalid NULL payloads, or fail again while 
reporting a boundary cast error.
   
   - Own long binary Field values while keeping short values inline. Preserve 
execution type lengths and decoder bytes, and add Hive Base64 and hexadecimal 
decoding support.
   - Explicitly reject unsupported binary hash keys, IN, aggregates, predicates 
and computed partition transforms. Keep the existing FE comparison/group/join 
restrictions and existing binary scalar functions. Reject unsupported 
collection kernels before coercion.
   - Preserve historical second offsets in both TIMESTAMPTZ formatting and 
parsing. Skip masked NULL payloads, reject unrepresentable local years, and 
preserve cast error/NULL behavior at boundaries.
   
   Arrow convertor migration, Parquet/ORC semantics, external writer changes 
and catalog mapping migration belong to the subsequent extractions. This PR 
does not enable native VARBINARY storage.
   
   ### Master adaptation
   
   - Retain the fixed-offset normalization and tests already present on master.
   - Use the current void-returning `VInPredicate::_prepare_zonemap_min_max` 
interface in both the guard and its test.
   - Retain master header cleanup and existing timestamp-nanosecond tests.
   - Retain the existing master binary-literal encoder and its StringView input 
contract; the older std::string-based caller fix is not applicable.
   
   ### Testing
   
   - BE ASAN build and **199 tests passed** across 17 suites using 
`run-be-ut.sh`, including binary lifetime/SerDe/rejection, timestamp 
parsing/casts, and existing Arrow/Variant serialization coverage.
   - `VarBinaryUnsupportedCollectionTest`: **passed** (13 unsupported 
expressions plus supported byte-preserving collection analysis). The FE test 
reactor and repository Checkstyle passed after cleaning stale branch build 
artifacts.
   - Repository clang-format 16 check and build-header hygiene checks: 
**passed**; 31 changed C++ source/header files.
   - Groovy compilation of the three regression suites: **passed**. Live SQL 
regression execution remains pending CI.
   - clang-tidy was attempted but could not complete because master already 
contains an unmatched `NOLINTEND` in `be/src/core/types.h`. A diagnostic run 
with the compiler resource directory corrected reproduced that blocker; the 
other reported findings in `column_varbinary.cpp` were outside changed lines. 
This is not a clean clang-tidy result.
   
   The focused BE test source list and local test/build settings were restored 
before committing. No build configuration changes are included.
   
   ### Release note
   
   Fix binary value lifetime and serialization, reject unsupported binary 
computation paths, and preserve TIMESTAMPTZ historical offsets and boundary 
error behavior.
   
   ### Check List (For Author)
   
   - Test
     - [x] Regression test (three self-checking suites added; execution pending 
CI)
     - [x] Unit Test
   - Behavior changed:
     - [x] Yes. Binary rejection and timestamp boundary behavior are described 
above.
   - Does this need documentation?
     - [x] No. This fixes existing type behavior without introducing a 
configuration option.
   
   ### 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