This is an automated email from the ASF dual-hosted git repository.

JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new a74daf8908 [hive] Fix query failure when dynamic filters are 
unavailable (#9448)
a74daf8908 is described below

commit a74daf8908cf306ca1690026223a2915b0cea17e
Author: Arnav Balyan <[email protected]>
AuthorDate: Sat Aug 29 18:25:59 2026 +0530

    [hive] Fix query failure when dynamic filters are unavailable (#9448)
---
 .../hive/SearchArgumentToPredicateConverter.java   |  3 +++
 .../SearchArgumentToPredicateConverterTest.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 0963a64930..38830af66a 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 @@ public class SearchArgumentToPredicateConverter {
                                 .collect(Collectors.toList()));
             case BETWEEN:
                 List<Object> 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 a1cdf8c361..d9a6b7c8f1 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.common.type.HiveDecimal;
 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 class SearchArgumentToPredicateConverterTest {
         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();

Reply via email to