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