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();