Jackie-Jiang commented on a change in pull request #5643: URL: https://github.com/apache/incubator-pinot/pull/5643#discussion_r448528028
########## File path: pinot-common/src/main/java/org/apache/pinot/pql/parsers/PinotQuery2BrokerRequestConverter.java ########## @@ -272,7 +271,11 @@ private FilterQuery traverseFilterExpression(Expression filterExpression, Filter filterQuery.setColumn(ParserUtils.standardizeExpression(operands.get(0), false)); filterQuery.setValue(ParserUtils.getFilterValues(filterKind, operands)); break; - + case IS_NULL: + case IS_NOT_NULL: + //first operand is the always the column Review comment: (nit) Change line 270 as well ```suggestion // First operand is the left-hand side column/expression of the predicate ``` ########## File path: pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java ########## @@ -1664,4 +1664,64 @@ public void testLiteralExpressionCheck() throws SqlParseException { Assert.assertFalse(CalciteSqlParser.isLiteralOnlyExpression(CalciteSqlParser.compileToExpression("a+B"))); Assert.assertFalse(CalciteSqlParser.isLiteralOnlyExpression(CalciteSqlParser.compileToExpression("c+1"))); } + + @Test + public void testCaseInsensitiveFilter() { + String query = "SELECT count(*) FROM foo where text_match(col, 'expr')"; + PinotQuery pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + PinotQuery2BrokerRequestConverter converter = new PinotQuery2BrokerRequestConverter(); + BrokerRequest brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "TEXT_MATCH"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.TEXT_MATCH); + + query = "SELECT count(*) FROM foo where TEXT_MATCH(col, 'expr')"; + pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "TEXT_MATCH"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.TEXT_MATCH); + + query = "SELECT count(*) FROM foo where regexp_like(col, 'expr')"; + pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "REGEXP_LIKE"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.REGEXP_LIKE); + + query = "SELECT count(*) FROM foo where REGEXP_LIKE(col, 'expr')"; + pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "REGEXP_LIKE"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.REGEXP_LIKE); + + query = "SELECT count(*) FROM foo where col is not null"; + pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "IS_NOT_NULL"); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperands().get(0).getIdentifier().getName(), "col"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.IS_NOT_NULL); + Assert.assertEquals(brokerRequest.getFilterQuery().getColumn(), "col"); + + query = "SELECT count(*) FROM foo where col IS NOT NULL"; + pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "IS_NOT_NULL"); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperands().get(0).getIdentifier().getName(), "col"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.IS_NOT_NULL); + Assert.assertEquals(brokerRequest.getFilterQuery().getColumn(), "col"); + + query = "SELECT count(*) FROM foo where col is null"; + pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "IS_NULL"); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperands().get(0).getIdentifier().getName(), "col"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.IS_NULL); + Assert.assertEquals(brokerRequest.getFilterQuery().getColumn(), "col"); + + query = "SELECT count(*) FROM foo where col IS NULL"; + pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + brokerRequest = converter.convert(pinotQuery); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperator(), "IS_NULL"); + Assert.assertEquals(pinotQuery.getFilterExpression().getFunctionCall().getOperands().get(0).getIdentifier().getName(), "col"); + Assert.assertEquals(brokerRequest.getFilterQuery().getOperator(), FilterOperator.IS_NULL); + Assert.assertEquals(brokerRequest.getFilterQuery().getColumn(), "col"); + } } Review comment: (nit) empty line ---------------------------------------------------------------- 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. 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