From 8c97b48d226d9bd4cab4572cc437c03f7619bc43 Mon Sep 17 00:00:00 2001 From: Arnav Balyan Date: Fri, 28 Aug 2026 14:37:38 +0530 Subject: [PATCH] update --- .../SearchArgumentToPredicateConverter.java | 3 +++ ...earchArgumentToPredicateConverterTest.java | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java index 0963a6493076..38830af66a3e 100644 --- a/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java +++ b/paimon-hive/paimon-hive-connector-common/src/main/java/org/apache/paimon/hive/SearchArgumentToPredicateConverter.java @@ -158,6 +158,9 @@ private Predicate convertLeaf(PredicateLeaf leaf) { .collect(Collectors.toList())); case BETWEEN: List literalList = leaf.getLiteralList(); + if (literalList == null || literalList.size() < 2) { + throw new UnsupportedOperationException("BETWEEN literals are not available."); + } return builder.between( idx, toLiteral(columnType, literalList.get(0)), diff --git a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java index a1cdf8c36114..d9a6b7c8f145 100644 --- a/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java +++ b/paimon-hive/paimon-hive-connector-common/src/test/java/org/apache/paimon/hive/SearchArgumentToPredicateConverterTest.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf; import org.apache.hadoop.hive.ql.io.sarg.SearchArgument; import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentFactory; +import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentImpl.PredicateLeafImpl; import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable; import org.junit.jupiter.api.Test; @@ -258,6 +259,28 @@ public void testBetween() { assertExpected(sarg, expected); } + @Test + public void testUnavailableBetween() { + SearchArgument.Builder builder = SearchArgumentFactory.newBuilder(); + SearchArgument sarg = + builder.startAnd() + .between("f_bigint", PredicateLeaf.Type.LONG, 100L, 200L) + .lessThanEquals("f_int", PredicateLeaf.Type.LONG, 10L) + .end() + .build(); + sarg.getLeaves() + .set( + 0, + new PredicateLeafImpl( + PredicateLeaf.Operator.BETWEEN, + PredicateLeaf.Type.LONG, + "f_bigint", + null, + Collections.emptyList())); + + assertExpected(sarg, BUILDER.lessOrEqual(0, 10)); + } + @Test public void testNotBetween() { SearchArgument.Builder builder = SearchArgumentFactory.newBuilder();