chenboat commented on code in PR #12339:
URL: https://github.com/apache/pinot/pull/12339#discussion_r1471716017


##########
pinot-core/src/test/java/org/apache/pinot/core/query/optimizer/QueryOptimizerTest.java:
##########
@@ -250,6 +265,37 @@ public void testQueries() {
 
     testQuery("SELECT * FROM testTable WHERE 1=1 AND true", "SELECT * FROM 
testTable WHERE true");
     testQuery("SELECT * FROM testTable WHERE \"a\"=\"a\" AND true", "SELECT * 
FROM testTable WHERE true");
+
+    // TextMatchFilterOptimizer
+    testQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string, 'foo') AND 
TEXT_MATCH(string, 'bar')",
+        "SELECT * FROM testTable WHERE TEXT_MATCH(string, 'foo AND bar')");
+    testQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string, '\"foo bar\"') 
AND TEXT_MATCH(string, 'baz')",
+        "SELECT * FROM testTable WHERE TEXT_MATCH(string, '\"foo bar\" AND 
baz')");
+    testQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string, '\"foo bar\"') 
AND TEXT_MATCH(string, '/.*ooba.*/')",
+        "SELECT * FROM testTable WHERE TEXT_MATCH(string, '\"foo bar\" AND 
/.*ooba.*/')");
+    testQuery("SELECT * FROM testTable WHERE int = 1 AND TEXT_MATCH(string, 
'foo') AND TEXT_MATCH(string, 'bar')",
+        "SELECT * FROM testTable WHERE int = 1 AND TEXT_MATCH(string, 'foo AND 
bar')");
+    testQuery("SELECT * FROM testTable WHERE int = 1 OR TEXT_MATCH(string, 
'foo') AND TEXT_MATCH(string, 'bar')",
+        "SELECT * FROM testTable WHERE int = 1 OR TEXT_MATCH(string, 'foo AND 
bar')");
+    testQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string, 'foo') AND NOT 
TEXT_MATCH(string, 'bar')",
+        "SELECT * FROM testTable WHERE TEXT_MATCH(string, 'foo AND NOT bar')");
+    testQuery("SELECT * FROM testTable WHERE NOT TEXT_MATCH(string, 'foo') AND 
TEXT_MATCH(string, 'bar')",
+        "SELECT * FROM testTable WHERE TEXT_MATCH(string, 'NOT foo AND bar')");
+    testQuery("SELECT * FROM testTable WHERE NOT TEXT_MATCH(string, 'foo') AND 
NOT TEXT_MATCH(string, 'bar')",
+        "SELECT * FROM testTable WHERE NOT TEXT_MATCH(string, 'foo AND bar')");
+    testQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string, 'foo') AND 
TEXT_MATCH(string, 'bar') OR "
+        + "TEXT_MATCH(string, 'baz')", "SELECT * FROM testTable WHERE 
TEXT_MATCH(string, 'foo AND bar OR baz')");
+    testQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string1, 'foo1') AND 
TEXT_MATCH(string1, 'bar1') OR "
+            + "TEXT_MATCH(string1, 'baz1') AND TEXT_MATCH(string2, 'foo')",
+        "SELECT * FROM testTable WHERE TEXT_MATCH(string1, 'foo1 AND bar1') OR 
TEXT_MATCH(string1, 'baz1') AND "
+            + "TEXT_MATCH(string2, 'foo')");
+    testQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string1, 'foo1') AND 
TEXT_MATCH(string1, 'bar1')"
+            + "AND TEXT_MATCH(string2, 'foo2') AND TEXT_MATCH(string2, 
'bar2')",
+        "SELECT * FROM testTable WHERE TEXT_MATCH(string1, 'foo1 AND bar1') 
AND TEXT_MATCH(string2, 'foo2 AND bar2')");
+    testCannotOptimizeQuery("SELECT * FROM testTable WHERE TEXT_MATCH(string1, 
'foo') OR TEXT_MATCH(string2, 'bar')");
+    testCannotOptimizeQuery(
+        "SELECT * FROM testTable WHERE int = 1 AND TEXT_MATCH(string, 'foo') 
OR TEXT_MATCH(string, 'bar')");

Review Comment:
   why this one can not be optimized? the columns are the same "string"?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to