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:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]