jackjlli commented on a change in pull request #6942:
URL: https://github.com/apache/incubator-pinot/pull/6942#discussion_r636348514



##########
File path: 
pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseBrokerRequestHandler.java
##########
@@ -1682,6 +1685,74 @@ static void validateRequest(PinotQuery pinotQuery, int 
queryResponseLimit) {
     if (!queryOptions.isGroupByModeSQL() || 
!queryOptions.isResponseFormatSQL()) {
       throw new IllegalStateException("SQL query should always have response 
format and group-by mode set to SQL");
     }
+
+    // Validate column names from query
+    Set<String> columnsFromQuery = getColumnsFromQuery(pinotQuery);
+    if (!columnNamesFromSchema.containsAll(columnsFromQuery)) {
+      brokerMetrics.addMeteredTableValue(rawTableName, 
BrokerMeter.INVALID_COLUMN_NAMES_IN_QUERY, 1L);
+    }
+  }
+
+  /**
+   * Fetch column names from the SQL query.
+   * @param pinotQuery pinot query
+   */
+  private static Set<String> getColumnsFromQuery(PinotQuery pinotQuery) {

Review comment:
       This is a good point. I do have a PR that handles the column name 
validation in updateColumnNames 
(https://github.com/apache/incubator-pinot/pull/6066), but that doesn't seem 
like the correct place to put this logic, since it should only be used to 
fix/update the column names. Plus, there are a few places in the same 
`handleSQLRequest` method that do the similar operations on broker, and the 
overhead is very small comparing to routing the query to the server side.  
   
   If we handle the column name validation on broker side, there is no need to 
route the query to servers. I've updated this PR in the latest push. Thus, 
`DataSchemaSegmentPruner` can be deprecated.




-- 
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