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")