github-actions[bot] commented on code in PR #67757:
URL: https://github.com/apache/doris/pull/67757#discussion_r3975411164
##########
be/src/storage/segment/column_reader.cpp:
##########
@@ -1274,7 +1276,22 @@ Result<ColumnIterator::AccessPathSplit>
ColumnIterator::_split_access_paths(
components->size() == 1 &&
is_meta_access_path_component((*components)[0]) &&
(path.type == TAccessPathType::META || uses_legacy_encoding);
if (is_current_level_meta) {
- if (StringCaseEqual()((*components)[0], ACCESS_OFFSET)) {
+ const bool is_offset = StringCaseEqual()((*components)[0],
ACCESS_OFFSET);
+ if (is_offset && !owns_offset_meta) {
Review Comment:
[P1] Please preserve legacy fields named `null` here too. Immediately before
the typed protocol, both string and ordinal Struct selectors were normalized to
lowercase, so `element_at(s, 'null')` is sent as legacy DATA `[s, "null"]`; `s
IS NULL` appends the exact uppercase sentinel and is sent as `[s, "NULL"]`.
Because `is_meta_access_path_component()` is case-insensitive and this new
disambiguation only handles OFFSET, the lowercase field path still becomes
`NULL_MAP_ONLY`, after which `_prepare_nested_access_paths()` marks every
Struct child SKIP and the old-FE/new-BE rolling-upgrade query silently returns
defaults. Please use that stable casing distinction for legacy Struct NULL
handling and add missing/explicit-v0 all/predicate tests, while retaining the
uppercase sentinel test.
--
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]