This is an automated email from the ASF dual-hosted git repository. jackie pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push: new d195edf414 Allow Query Plan while dropResult=true (#15136) d195edf414 is described below commit d195edf414153b10e642140eead016edd3fd974d Author: Jhow <44998515+j-howhu...@users.noreply.github.com> AuthorDate: Wed Feb 26 17:03:36 2025 -0800 Allow Query Plan while dropResult=true (#15136) --- .../BaseSingleStageBrokerRequestHandler.java | 4 +-- .../tests/HybridClusterIntegrationTest.java | 29 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java index 15d8f772c9..465c752428 100644 --- a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java +++ b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java @@ -888,7 +888,7 @@ public abstract class BaseSingleStageBrokerRequestHandler extends BaseBrokerRequ .filter(exception -> exception.getErrorCode() == QueryException.QUERY_VALIDATION_ERROR_CODE) .findFirst() .ifPresent(exception -> _brokerMetrics.addMeteredGlobalValue(BrokerMeter.QUERY_VALIDATION_EXCEPTIONS, 1)); - if (QueryOptionsUtils.shouldDropResults(pinotQuery.getQueryOptions())) { + if (!pinotQuery.isExplain() && QueryOptionsUtils.shouldDropResults(pinotQuery.getQueryOptions())) { brokerResponse.setResultTable(null); } if (QueryOptionsUtils.isSecondaryWorkload(pinotQuery.getQueryOptions())) { @@ -1604,7 +1604,7 @@ public abstract class BaseSingleStageBrokerRequestHandler extends BaseBrokerRequ brokerResponse.setResultTable(resultTable); brokerResponse.setTimeUsedMs(System.currentTimeMillis() - requestContext.getRequestArrivalTimeMillis()); augmentStatistics(requestContext, brokerResponse); - if (QueryOptionsUtils.shouldDropResults(pinotQuery.getQueryOptions())) { + if (!pinotQuery.isExplain() && QueryOptionsUtils.shouldDropResults(pinotQuery.getQueryOptions())) { brokerResponse.setResultTable(null); } return brokerResponse; diff --git a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/HybridClusterIntegrationTest.java b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/HybridClusterIntegrationTest.java index 79ab080172..8dc4739912 100644 --- a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/HybridClusterIntegrationTest.java +++ b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/HybridClusterIntegrationTest.java @@ -342,6 +342,35 @@ public class HybridClusterIntegrationTest extends BaseClusterIntegrationTestSet Assert.assertTrue(postQueryWithOptions(query, "dropResults=truee").has(resultTag)); } + @Test(dataProvider = "useBothQueryEngines") + public void testExplainDropResults(boolean useMultiStageQueryEngine) + throws Exception { + setUseMultiStageQueryEngine(useMultiStageQueryEngine); + String resultTag = "resultTable"; + String query = String.format("EXPLAIN PLAN FOR SELECT * FROM %s limit 10", getTableName()); + + // dropResults=true - resultTable must be in the response (it is a query plan) + JsonNode jsonNode = postQueryWithOptions(query, "dropResults=true"); + Assert.assertTrue(jsonNode.has(resultTag)); + query = String.format("EXPLAIN PLAN WITHOUT IMPLEMENTATION FOR SELECT * FROM %s limit 10", getTableName()); + + // dropResults=true - resultTable must be in the response (it is a query plan) + jsonNode = postQueryWithOptions(query, "dropResults=true"); + Assert.assertTrue(jsonNode.has(resultTag)); + + query = String.format("EXPLAIN IMPLEMENTATION PLAN FOR SELECT * FROM %s limit 10", getTableName()); + + // dropResults=true - resultTable must be in the response (it is a query plan) + jsonNode = postQueryWithOptions(query, "dropResults=true"); + Assert.assertTrue(jsonNode.has(resultTag)); + + query = String.format("EXPLAIN PLAN FOR SELECT 1 + 1 FROM %s limit 10", getTableName()); + + // dropResults=true - resultTable must be in the response (it is a query plan) + jsonNode = postQueryWithOptions(query, "dropResults=true"); + Assert.assertTrue(jsonNode.has(resultTag)); + } + @Test(dataProvider = "useBothQueryEngines") public void testHardcodedQueries(boolean useMultiStageQueryEngine) throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org