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 30c96ae7e4 [common] Fix like optimization for escaped patterns (#9205)
30c96ae7e4 is described below

commit 30c96ae7e4e5a1f7d0fdaebb2585871b976993b9
Author: Arnav Balyan <[email protected]>
AuthorDate: Thu Aug 13 19:23:23 2026 +0530

    [common] Fix like optimization for escaped patterns (#9205)
---
 .../src/main/java/org/apache/paimon/predicate/LikeOptimization.java     | 2 +-
 .../src/test/java/org/apache/paimon/predicate/PredicateTest.java        | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git 
a/paimon-common/src/main/java/org/apache/paimon/predicate/LikeOptimization.java 
b/paimon-common/src/main/java/org/apache/paimon/predicate/LikeOptimization.java
index b17898a40f..3856d914e6 100644
--- 
a/paimon-common/src/main/java/org/apache/paimon/predicate/LikeOptimization.java
+++ 
b/paimon-common/src/main/java/org/apache/paimon/predicate/LikeOptimization.java
@@ -45,7 +45,7 @@ public class LikeOptimization {
         }
 
         String pattern = patternLiteral.toString();
-        if (pattern.contains("_")) {
+        if (pattern.indexOf('_') >= 0 || pattern.indexOf('\\') >= 0) {
             return Optional.empty();
         }
 
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 f09c263429..37be3e0b4f 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
@@ -580,6 +580,8 @@ public class PredicateTest {
         assertThat(executeLike("abcde", "%c.e")).isEqualTo(false);
         assertThat(executeLike("a-c", "a\\_c")).isEqualTo(false);
         assertThat(executeLike("a_c", "a\\_c")).isEqualTo(true);
+        assertThat(Arrays.asList(executeLike("a%", "a\\%"), 
executeLike("a\\anything", "a\\%")))
+                .containsExactly(true, false);
         assertThat(executeLike("startX", "start%")).isEqualTo(true);
         assertThat(executeLike("not_startX", "start%")).isEqualTo(false);
         assertThat(executeLike("xxmiddleyy", "%middle%")).isEqualTo(true);

Reply via email to