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