fx19880617 commented on a change in pull request #4216: PQL -> SQL enhancement
- phase 1 - new Pinot Query Struct
URL: https://github.com/apache/incubator-pinot/pull/4216#discussion_r291306728
##########
File path:
pinot-common/src/main/java/org/apache/pinot/pql/parsers/Pql2Compiler.java
##########
@@ -111,6 +136,64 @@ public BrokerRequest compileToBrokerRequest(String
expression)
}
}
+ private boolean validate(BrokerRequest br1, BrokerRequest br2) throws
Exception {
+ //Having not yet supported
+ if (br1.getHavingFilterQuery() != null) {
+ return true;
+ }
+ boolean result = br1.equals(br2);
+ if (!result) {
+ StringBuilder sb = new StringBuilder();
+
+ if (br1.getFilterQuery() != null) {
+ if (!br1.getFilterQuery().equals(br2.getFilterQuery())) {
+ sb.append("br1.getFilterQuery() =
").append(br1.getFilterQuery()).append("\n")
+ .append("br2.getFilterQuery() = ").append(br2.getFilterQuery());
+ LOGGER.error("Filter did not match after conversion.{}", sb);
+ return false;
+ }
+
+ if (!br1.getFilterSubQueryMap().equals(br2.getFilterSubQueryMap())) {
+ sb.append("br1.getFilterSubQueryMap() =
").append(br1.getFilterSubQueryMap()).append("\n")
+ .append("br2.getFilterSubQueryMap() =
").append(br2.getFilterSubQueryMap());
+ LOGGER.error("FilterSubQueryMap did not match after conversion. {}",
sb);
+ return false;
+ }
+ }
+ if (br1.getSelections() != null) {
+ if (!br1.getSelections().equals(br2.getSelections())) {
+ sb.append("br1.getSelections() =
").append(br1.getSelections()).append("\n")
+ .append("br2.getSelections() = ").append(br2.getSelections());
+ LOGGER.error("Selection did not match after conversion:{}", sb);
+ return false;
+ }
+ }
+ if (br1.getGroupBy() != null) {
+ if (!br1.getGroupBy().equals(br2.getGroupBy())) {
+ sb.append("br1.getGroupBy() =
").append(br1.getGroupBy()).append("\n")
+ .append("br2.getGroupBy() = ").append(br2.getGroupBy());
+ LOGGER.error("Group By did not match conversion:{}", sb);
+ return false;
+ }
+ }
+ if (br1.getAggregationsInfo() != null) {
+ List<AggregationInfo> aggregationsInfo = br1.getAggregationsInfo();
+ for (int i = 0; i < aggregationsInfo.size(); i++) {
+ AggregationInfo agg1 = br1.getAggregationsInfo().get(i);
+ AggregationInfo agg2 = br2.getAggregationsInfo().get(i);
+ if (!agg1.equals(agg2)) {
+ sb.append("br1.agg1 = ").append(agg1).append("\n")
+ .append("br2.agg2() = ").append(agg2);
+ LOGGER.error("AggregationInfo did not match after conversion: {}",
sb);
+ return false;
+ }
+ }
+ }
+ }
+ return result;
Review comment:
In that case, the query parsing will fail first. Since we don't accept
certain queries.
----------------------------------------------------------------
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]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]