This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 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 f47e4ccceb [core] Supported predicate leaf type char (#5295)
f47e4ccceb is described below
commit f47e4cccebd562c438ebe3feee7033cdc8f7a01e
Author: xiaochen <[email protected]>
AuthorDate: Mon Mar 17 10:23:34 2025 +0800
[core] Supported predicate leaf type char (#5295)
---
.../java/org/apache/paimon/predicate/PredicateBuilder.java | 1 +
.../java/org/apache/paimon/predicate/PredicateTest.java | 6 ++++++
.../org/apache/paimon/spark/SparkFilterConverterTest.java | 13 +++++++++++++
3 files changed, 20 insertions(+)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
index f3d0b42bdd..32df92601b 100644
---
a/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
+++
b/paimon-common/src/main/java/org/apache/paimon/predicate/PredicateBuilder.java
@@ -247,6 +247,7 @@ public class PredicateBuilder {
return ((Number) o).intValue();
case FLOAT:
return ((Number) o).floatValue();
+ case CHAR:
case VARCHAR:
return BinaryString.fromString(o.toString());
case DATE:
diff --git
a/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateTest.java
b/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateTest.java
index fe9f029044..cab2a336f9 100644
--- a/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateTest.java
+++ b/paimon-common/src/test/java/org/apache/paimon/predicate/PredicateTest.java
@@ -21,6 +21,7 @@ package org.apache.paimon.predicate;
import org.apache.paimon.data.GenericArray;
import org.apache.paimon.data.GenericRow;
import org.apache.paimon.format.SimpleColStats;
+import org.apache.paimon.types.CharType;
import org.apache.paimon.types.IntType;
import org.apache.paimon.types.RowType;
import org.apache.paimon.types.VarCharType;
@@ -391,6 +392,11 @@ public class PredicateTest {
Integer[] nullCount = {null};
assertThat(predicate.test(row)).isEqualTo(true);
assertThat(predicate.test(10, min, max, new
GenericArray(nullCount))).isEqualTo(true);
+
+ PredicateBuilder builder2 = new PredicateBuilder(RowType.of(new
CharType()));
+ Predicate predicate2 = builder2.endsWith(0, fromString("bcc"));
+ assertThat(predicate2.test(row)).isEqualTo(true);
+ assertThat(predicate2.test(10, min, max, new
GenericArray(nullCount))).isEqualTo(true);
}
@Test
diff --git
a/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
b/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
index ca976718f0..4248d07d76 100644
---
a/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
+++
b/paimon-spark/paimon-spark-ut/src/test/java/org/apache/paimon/spark/SparkFilterConverterTest.java
@@ -23,6 +23,7 @@ import org.apache.paimon.data.GenericRow;
import org.apache.paimon.data.Timestamp;
import org.apache.paimon.predicate.Predicate;
import org.apache.paimon.predicate.PredicateBuilder;
+import org.apache.paimon.types.CharType;
import org.apache.paimon.types.DataField;
import org.apache.paimon.types.DateType;
import org.apache.paimon.types.IntType;
@@ -197,6 +198,18 @@ public class SparkFilterConverterTest {
assertThat(instantExpression).isEqualTo(rawExpression);
}
+ @Test
+ public void testChar() {
+ RowType rowType =
+ new RowType(Collections.singletonList(new DataField(0, "id",
new CharType())));
+ SparkFilterConverter converter = new SparkFilterConverter(rowType);
+ StringEndsWith endsWith = StringEndsWith.apply("id", "abc");
+ Predicate endsWithPre = converter.convert(endsWith);
+ GenericRow row = GenericRow.of(fromString("aabc"));
+ boolean test = endsWithPre.test(row);
+ assertThat(test).isEqualTo(true);
+ }
+
@Test
public void testDate() {
RowType rowType =