diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java index 297b318772e3dc..5714970483c5dc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java @@ -665,6 +665,13 @@ private void setChildrenTColumn(Column children, TColumn tColumn) { toChildrenThrift(children, childrenTColumn); } + private void addChildren(Column column, TColumn tColumn) { + List childrenColumns = column.getChildren(); + for (Column c : childrenColumns) { + setChildrenTColumn(c, tColumn); + } + } + private void toChildrenThrift(Column column, TColumn tColumn) { if (column.type.isArrayType()) { Column children = column.getChildren().get(0); @@ -676,13 +683,11 @@ private void toChildrenThrift(Column column, TColumn tColumn) { tColumn.setChildrenColumn(new ArrayList<>()); setChildrenTColumn(k, tColumn); setChildrenTColumn(v, tColumn); - } else if (column.type.isStructType() - || (column.type.isVariantType() && !((VariantType) (column.type)).getPredefinedFields().isEmpty())) { - List childrenColumns = column.getChildren(); - tColumn.setChildrenColumn(new ArrayList<>()); - for (Column children : childrenColumns) { - setChildrenTColumn(children, tColumn); - } + } else if (column.type.isStructType()) { + addChildren(column, tColumn); + } else if (column.type.isVariantType()) { + // variant may contain predefined structured fields + addChildren(column, tColumn); } }