eldenmoon opened a new pull request, #70492:
URL: https://github.com/apache/doris/pull/70492
cherry-pick #69434
Supersedes #69454, which was opened for branch-4.1 and closed unmerged
before #69434 merged.
Problem: during a mixed-version upgrade a 4.1 backend can receive a Variant
V1 block from a 4.0
backend. The 4.0 block carries `variant_max_subcolumns_count` but no
`variant_enable_doc_mode`
field and no trailing doc-value map; the current 4.1 V1 deserializer reads
that map
unconditionally, so it decodes past the payload and can crash the receiving
backend.
Fix: pass the presence of `variant_enable_doc_mode` through the factory's
Variant V1 branch and
reject a V1 block at the deserialization entry when the field is absent.
Presence is the format
marker: this branch sets the field even when doc mode is false and always
writes the trailing map.
The V1/V2 wire layout and `be_exec_version` are unchanged.
Validation:
- ASAN `./build.sh --be`
- `./run-be-ut.sh --run --filter=BlockVariantWireFormatTest.*`: 4/4 passed
(legacy marker absent,
raw pre-doc payload, nested ARRAY/MAP/STRUCT, V1/V2 round trips)
--
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]