diff --git a/fluss-common/src/main/java/org/apache/fluss/row/InternalArray.java b/fluss-common/src/main/java/org/apache/fluss/row/InternalArray.java index 6575de1b39..f1ed1ee676 100644 --- a/fluss-common/src/main/java/org/apache/fluss/row/InternalArray.java +++ b/fluss-common/src/main/java/org/apache/fluss/row/InternalArray.java @@ -175,6 +175,9 @@ static ElementGetter createElementGetter(DataType fieldType) { static ElementGetter createDeepElementGetter(DataType fieldType) { final ElementGetter elementGetter; switch (fieldType.getTypeRoot()) { + case STRING: + elementGetter = (array, pos) -> array.getString(pos).copy(); + break; case ARRAY: DataType nestedType = ((ArrayType) fieldType).getElementType(); ElementGetter nestedGetter = createDeepElementGetter(nestedType); diff --git a/fluss-common/src/main/java/org/apache/fluss/row/InternalRow.java b/fluss-common/src/main/java/org/apache/fluss/row/InternalRow.java index e19f42b2e0..7e0a608225 100644 --- a/fluss-common/src/main/java/org/apache/fluss/row/InternalRow.java +++ b/fluss-common/src/main/java/org/apache/fluss/row/InternalRow.java @@ -252,6 +252,9 @@ static FieldGetter createFieldGetter(DataType fieldType, int fieldPos) { static FieldGetter createDeepFieldGetter(DataType fieldType, int fieldPos) { final FieldGetter fieldGetter; switch (fieldType.getTypeRoot()) { + case STRING: + fieldGetter = row -> row.getString(fieldPos).copy(); + break; case ARRAY: DataType elementType = ((ArrayType) fieldType).getElementType(); InternalArray.ElementGetter nestedGetter = createDeepElementGetter(elementType);