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

Reply via email to