Gabriel39 opened a new pull request, #68297:
URL: https://github.com/apache/doris/pull/68297
### What problem does this PR solve?
This is the first of five planned extractions from #67784, targeting
`branch-4.1`.
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, fix binary literal encoding, 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.
- Normalize fixed timezone offsets and 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.
### Testing
- Rebuilt the BE ASAN test target from this extraction: **184 tests
passed**, zero failures. Coverage includes binary lifetime/SerDe/rejection
paths, timestamp parsing/casts, hash and partition guards, and existing
Arrow/Variant serialization tests.
- `VarBinaryUnsupportedCollectionTest`: **passed** (13 unsupported
collection expressions, plus existing byte-preserving array/collection
analysis).
- FE reactor `validate` with repository Checkstyle: **passed**.
- clang-format 16 check on all 34 changed C++ source/header files:
**passed**.
- Groovy compilation of the three new regression suites: **passed**. Live
SQL regression execution is pending CI.
The local BE test source list was narrowed for the focused build and
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]