github-actions[bot] commented on code in PR #67921:
URL: https://github.com/apache/doris/pull/67921#discussion_r4011268684
##########
fe/fe-core/src/main/java/org/apache/doris/datasource/lance/LanceTypeConverter.java:
##########
@@ -135,24 +131,25 @@ private static Type toDorisType(Field field, boolean
allowNull) {
case LargeList:
case FixedSizeList:
requireChildren(field, 1);
- Type itemType = toDorisType(field.getChildren().get(0), false);
- return itemType.isSupported() ? new ArrayType(itemType) :
Type.UNSUPPORTED;
+ Type itemType = toDorisType(field.getChildren().get(0));
+ // Generic isSupported() rejects Null items even inside
successfully converted composites.
+ return itemType.equals(Type.UNSUPPORTED) ? Type.UNSUPPORTED :
new ArrayType(itemType);
Review Comment:
[P1] Preserve the upgrade fence through lazy materialization
Now that recursive conversion accepts Null leaves, a passive top-level
composite returned by `vector_search()` or `full_text_search()` can be pruned
by TopN lazy materialization before `LanceScanNode.projectsCurrentReaderType()`
sees it. That lets phase one run on a smooth-upgrade source BE; the global row
ID routes phase two back to that same BE and `take_rows` materializes the
omitted nested-Null field. On a pre-PR BE, the nullable SerDe forwards Arrow
Null to the Boolean-backed nested SerDe, which dereferences it as Boolean and
can crash the backend. Please carry the current-reader requirement across lazy
pruning (or keep these fields eager/current-reader-compatible), and cover both
search TVFs with a mixed-version planner 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]