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 07149f45e8 [flink] Predicate add is true and is false (#6005)
07149f45e8 is described below

commit 07149f45e8cd9f8afc3dcbc001112db7b45268a0
Author: WenDing-Y <[email protected]>
AuthorDate: Fri Aug 1 12:28:20 2025 +0800

    [flink] Predicate add is true and is false (#6005)
---
 .../apache/paimon/flink/PredicateConverter.java    |  8 ++++++++
 .../paimon/flink/PredicateConverterTest.java       | 23 +++++++++++++++++++---
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/PredicateConverter.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/PredicateConverter.java
index bc5b6a15e7..a91b2720a3 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/PredicateConverter.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/PredicateConverter.java
@@ -186,6 +186,14 @@ public class PredicateConverter implements 
ExpressionVisitor<Predicate> {
                     }
                 }
             }
+        } else if (func == BuiltInFunctionDefinitions.IS_TRUE) {
+            FieldReferenceExpression fieldRefExpr =
+                    
extractFieldReference(children.get(0)).orElseThrow(UnsupportedExpression::new);
+            return builder.equal(builder.indexOf(fieldRefExpr.getName()), 
Boolean.TRUE);
+        } else if (func == BuiltInFunctionDefinitions.IS_FALSE) {
+            FieldReferenceExpression fieldRefExpr =
+                    
extractFieldReference(children.get(0)).orElseThrow(UnsupportedExpression::new);
+            return builder.equal(builder.indexOf(fieldRefExpr.getName()), 
Boolean.FALSE);
         }
 
         // TODO is_xxx, between_xxx, similar, in, not_in, not?
diff --git 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/PredicateConverterTest.java
 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/PredicateConverterTest.java
index f27108d866..c304a70434 100644
--- 
a/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/PredicateConverterTest.java
+++ 
b/paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/PredicateConverterTest.java
@@ -66,8 +66,10 @@ public class PredicateConverterTest {
                                             new RowType.RowField("long1", new 
BigIntType()),
                                             new RowType.RowField("double1", 
new DoubleType()),
                                             new RowType.RowField(
-                                                    "string1",
-                                                    
DataTypes.STRING().getLogicalType())))));
+                                                    "string1", 
DataTypes.STRING().getLogicalType()),
+                                            new RowType.RowField(
+                                                    "boolField",
+                                                    
DataTypes.BOOLEAN().getLogicalType())))));
 
     private static final PredicateConverter CONVERTER = new 
PredicateConverter(BUILDER);
 
@@ -109,6 +111,9 @@ public class PredicateConverterTest {
         // different type, char(4)
         ValueLiteralExpression stringLitExpr2 = new 
ValueLiteralExpression(stringLit);
 
+        FieldReferenceExpression boolRefExpr =
+                new FieldReferenceExpression("boolField", DataTypes.BOOLEAN(), 
3, 3);
+
         return Stream.of(
                 Arguments.of(longRefExpr, null),
                 Arguments.of(intLitExpr, null),
@@ -251,7 +256,19 @@ public class PredicateConverterTest {
                                 BuiltInFunctionDefinitions.BETWEEN,
                                 Arrays.asList(longRefExpr, intLitExpr, 
intLitExpr2),
                                 DataTypes.BOOLEAN()),
-                        BUILDER.between(0, 10, 20)));
+                        BUILDER.between(0, 10, 20)),
+                Arguments.of(
+                        CallExpression.permanent(
+                                BuiltInFunctionDefinitions.IS_TRUE,
+                                Arrays.asList(boolRefExpr),
+                                DataTypes.BOOLEAN()),
+                        BUILDER.equal(3, true)),
+                Arguments.of(
+                        CallExpression.permanent(
+                                BuiltInFunctionDefinitions.IS_FALSE,
+                                Arrays.asList(boolRefExpr),
+                                DataTypes.BOOLEAN()),
+                        BUILDER.equal(3, false)));
     }
 
     @MethodSource("provideLikeExpressions")

Reply via email to