diff --git a/paimon-lance/src/main/java/org/apache/paimon/format/lance/LanceFileFormat.java b/paimon-lance/src/main/java/org/apache/paimon/format/lance/LanceFileFormat.java index 52184ad79892..05005432b6d8 100644 --- a/paimon-lance/src/main/java/org/apache/paimon/format/lance/LanceFileFormat.java +++ b/paimon-lance/src/main/java/org/apache/paimon/format/lance/LanceFileFormat.java @@ -190,7 +190,7 @@ public Void visit(BlobType blobType) { @Override public Void visit(ArrayType arrayType) { - return null; + return arrayType.getElementType().accept(this); } @Override diff --git a/paimon-lance/src/test/java/org/apache/paimon/format/lance/LanceFileFormatTest.java b/paimon-lance/src/test/java/org/apache/paimon/format/lance/LanceFileFormatTest.java index ab63fc91ac4a..2352be764f91 100644 --- a/paimon-lance/src/test/java/org/apache/paimon/format/lance/LanceFileFormatTest.java +++ b/paimon-lance/src/test/java/org/apache/paimon/format/lance/LanceFileFormatTest.java @@ -63,6 +63,22 @@ public void testValidateDataFields_UnsupportedMultisetType() { assertThrows(UnsupportedOperationException.class, () -> format.validateDataFields(rowType)); } + @Test + public void testValidateDataFields_UnsupportedTypeNestedInArray() { + LanceFileFormat format = + new LanceFileFormat(new FileFormatFactory.FormatContext(new Options(), 1024, 1024)); + RowType rowType = RowType.of(DataTypes.ARRAY(DataTypes.MULTISET(DataTypes.STRING()))); + assertThrows(UnsupportedOperationException.class, () -> format.validateDataFields(rowType)); + } + + @Test + public void testValidateDataFields_SupportedTypeNestedInArray() { + LanceFileFormat format = + new LanceFileFormat(new FileFormatFactory.FormatContext(new Options(), 1024, 1024)); + RowType rowType = RowType.of(DataTypes.ARRAY(DataTypes.ARRAY(DataTypes.INT()))); + assertDoesNotThrow(() -> format.validateDataFields(rowType)); + } + @Test public void testValidateDataFields_SupportedTypes() { LanceFileFormat format =