From 95f6d415c8d9dc7ec90196027b64d28d25989378 Mon Sep 17 00:00:00 2001 From: Eunbin Son Date: Thu, 23 Jul 2026 06:21:28 +0900 Subject: [PATCH] [api] Fix VectorType#isPrunedFrom to compare vector length Generated-by: Claude Code --- .../java/org/apache/paimon/types/VectorType.java | 2 +- .../org/apache/paimon/types/VectorTypeTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/paimon-api/src/main/java/org/apache/paimon/types/VectorType.java b/paimon-api/src/main/java/org/apache/paimon/types/VectorType.java index 008b6f8abfbd..a3ea840c61a9 100644 --- a/paimon-api/src/main/java/org/apache/paimon/types/VectorType.java +++ b/paimon-api/src/main/java/org/apache/paimon/types/VectorType.java @@ -163,7 +163,7 @@ public boolean isPrunedFrom(Object o) { return false; } VectorType vectorType = (VectorType) o; - return elementType.isPrunedFrom(vectorType.elementType); + return elementType.isPrunedFrom(vectorType.elementType) && length == vectorType.length; } @Override diff --git a/paimon-api/src/test/java/org/apache/paimon/types/VectorTypeTest.java b/paimon-api/src/test/java/org/apache/paimon/types/VectorTypeTest.java index 9153d254b8ec..4e1f1e4414dc 100644 --- a/paimon-api/src/test/java/org/apache/paimon/types/VectorTypeTest.java +++ b/paimon-api/src/test/java/org/apache/paimon/types/VectorTypeTest.java @@ -38,4 +38,19 @@ void testDefaultSizeOverflowReturnsMaxValue() { assertThat(DataTypes.VECTOR(Integer.MAX_VALUE, DataTypes.DOUBLE()).defaultSize()) .isEqualTo(Integer.MAX_VALUE); } + + @Test + void testIsPrunedFromRejectsDifferentLength() { + DataType left = DataTypes.VECTOR(3, DataTypes.FLOAT()); + DataType right = DataTypes.VECTOR(5, DataTypes.FLOAT()); + assertThat(left.isPrunedFrom(right)).isFalse(); + assertThat(right.isPrunedFrom(left)).isFalse(); + } + + @Test + void testIsPrunedFromAcceptsSameElementTypeAndLength() { + DataType left = DataTypes.VECTOR(3, DataTypes.FLOAT()); + DataType right = DataTypes.VECTOR(3, DataTypes.FLOAT()); + assertThat(left.isPrunedFrom(right)).isTrue(); + } }