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 =

Reply via email to