From 98480cb6aaf8f70e8b377eafece86419fc480c0c Mon Sep 17 00:00:00 2001 From: Eunbin Son Date: Mon, 10 Aug 2026 18:48:56 +0900 Subject: [PATCH] [lance] Reject unsupported VARIANT and BLOB types in LanceFileFormat schema validation LanceRowTypeVisitor accepted VariantType and BlobType, but the paimon-arrow bridge cannot convert either one. Reject both at schema validation, matching the sibling Vortex and Mosaic formats. Generated-by: Claude Code --- .../paimon/format/lance/LanceFileFormat.java | 5 +++-- .../paimon/format/lance/LanceFileFormatTest.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) 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 05005432b6d8..2eee2639b7f2 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 @@ -180,12 +180,13 @@ public Void visit(LocalZonedTimestampType localZonedTimestampType) { @Override public Void visit(VariantType variantType) { - return null; + throw new UnsupportedOperationException( + "Lance file format does not support type VARIANT"); } @Override public Void visit(BlobType blobType) { - return null; + throw new UnsupportedOperationException("Lance file format does not support type BLOB"); } @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 2352be764f91..9a7152e25944 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 @@ -101,4 +101,20 @@ public void testValidateDataFields_SupportedTypes() { // Validate that no exception is thrown for supported types assertDoesNotThrow(() -> format.validateDataFields(rowType)); } + + @Test + public void testValidateDataFields_UnsupportedVariantType() { + LanceFileFormat format = + new LanceFileFormat(new FileFormatFactory.FormatContext(new Options(), 1024, 1024)); + RowType rowType = RowType.of(DataTypes.VARIANT()); + assertThrows(UnsupportedOperationException.class, () -> format.validateDataFields(rowType)); + } + + @Test + public void testValidateDataFields_UnsupportedBlobType() { + LanceFileFormat format = + new LanceFileFormat(new FileFormatFactory.FormatContext(new Options(), 1024, 1024)); + RowType rowType = RowType.of(DataTypes.BLOB()); + assertThrows(UnsupportedOperationException.class, () -> format.validateDataFields(rowType)); + } }