jackjlli commented on a change in pull request #6224: URL: https://github.com/apache/incubator-pinot/pull/6224#discussion_r520187785
########## File path: pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/ClusterIntegrationTestUtils.java ########## @@ -463,21 +466,20 @@ private static Object generateRandomValue(Schema.Type fieldType) { * </ul> * * @param pinotQuery Pinot query - * @param queryFormat Pinot query format * @param brokerUrl Pinot broker URL * @param pinotConnection Pinot connection * @param sqlQueries H2 SQL queries * @param h2Connection H2 connection * @throws Exception */ - public static void testQuery(String pinotQuery, String queryFormat, String brokerUrl, + public static void testQuery(String pinotQuery, String brokerUrl, org.apache.pinot.client.Connection pinotConnection, @Nullable List<String> sqlQueries, @Nullable Connection h2Connection) throws Exception { // Use broker response for metadata check, connection response for value check - PinotQueryRequest pinotBrokerQueryRequest = new PinotQueryRequest(queryFormat, pinotQuery); + PinotQueryRequest pinotBrokerQueryRequest = new PinotQueryRequest("pql", pinotQuery); Review comment: Use `CommonConstants.Broker.Request.PQL` here? ########## File path: pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/ClusterIntegrationTestUtils.java ########## @@ -833,6 +700,33 @@ static void testSqlQuery(String pinotQuery, String brokerUrl, org.apache.pinot.c return; } + BrokerRequest brokerRequest = + PinotQueryParserFactory.get(CommonConstants.Broker.Request.SQL).compileToBrokerRequest(pinotQuery); + // Add order by columns which are not in selection clause for comparison purpose + List<String> orderByColumns = new ArrayList<>(); + List<String> selectionColumns = new ArrayList<>(); + if (isSelectionQuery(brokerRequest) && brokerRequest.getOrderBy() != null && brokerRequest.getOrderBy().size() > 0) { + orderByColumns.addAll(CalciteSqlParser.extractIdentifiers(brokerRequest.getPinotQuery().getOrderByList(), false)); + selectionColumns.addAll(CalciteSqlParser.extractIdentifiers(brokerRequest.getPinotQuery().getSelectList(), false)); + convertToUpperCase(orderByColumns); + convertToUpperCase(selectionColumns); + + if (!selectionColumns.containsAll(orderByColumns)) { + List<String> inputRequests = new ArrayList<>(); + inputRequests.add(pinotQuery); + inputRequests.addAll(sqlQueries); + + Set<String> orderByColumnsExcluded = new HashSet<>(orderByColumns); + orderByColumnsExcluded.removeAll(selectionColumns); + + // Append order-by columns not in selection clause so the order of query responses can be verified + // e.g. we can't verify the order of query `SELECT firstName FROM mytable ORDER BY lastName' if there are duplicate lastNames Review comment: If the values of lastName is exhausted, we can still verify the values, right? ########## File path: pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/ClusterIntegrationTestUtils.java ########## @@ -463,21 +466,20 @@ private static Object generateRandomValue(Schema.Type fieldType) { * </ul> * * @param pinotQuery Pinot query - * @param queryFormat Pinot query format * @param brokerUrl Pinot broker URL * @param pinotConnection Pinot connection * @param sqlQueries H2 SQL queries * @param h2Connection H2 connection * @throws Exception */ - public static void testQuery(String pinotQuery, String queryFormat, String brokerUrl, + public static void testQuery(String pinotQuery, String brokerUrl, Review comment: +1 on that ---------------------------------------------------------------- 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