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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]