[NO ISSUE][OTH] Use Request Stats When Printing Results on NC
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- When printing a result on an NC, use the stats object
of the original request rather than the object received
from the CC as part of the execute statement response
message. This is done because the metrics returned to the
user are generated from the stats object of the request.
- Add metrics test case to sqlpp test suite to test returning
metrics from NCQueryServiceServlet.
Change-Id: I54c3b3e72cfb0c2499a95bfc0f514dd5d6774293
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3444
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 7d7bad2..254f92a 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -119,7 +119,7 @@
}
if (hasResult(responseMsg)) {
responsePrinter.addResultPrinter(
- new NcResultPrinter(appCtx, responseMsg, getResultSet(), delivery, sessionOutput));
+ new NcResultPrinter(appCtx, responseMsg, getResultSet(), delivery, sessionOutput, stats));
}
buildResponseResults(responsePrinter, sessionOutput, responseMsg.getExecutionPlans());
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/NcResultPrinter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/NcResultPrinter.java
index 2989d2c..000dd6a 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/NcResultPrinter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/NcResultPrinter.java
@@ -43,14 +43,17 @@
private final IApplicationContext appCtx;
private final IResultSet resultSet;
private final SessionOutput sessionOutput;
+ private final IStatementExecutor.Stats stats;
public NcResultPrinter(IApplicationContext appCtx, ExecuteStatementResponseMessage responseMsg,
- IResultSet resultSet, IStatementExecutor.ResultDelivery delivery, SessionOutput sessionOutput) {
+ IResultSet resultSet, IStatementExecutor.ResultDelivery delivery, SessionOutput sessionOutput,
+ IStatementExecutor.Stats stats) {
this.appCtx = appCtx;
this.responseMsg = responseMsg;
this.delivery = delivery;
this.resultSet = resultSet;
this.sessionOutput = sessionOutput;
+ this.stats = stats;
}
@Override
@@ -58,7 +61,6 @@
IStatementExecutor.ResultMetadata resultMetadata = responseMsg.getMetadata();
List<Triple<JobId, ResultSetId, ARecordType>> resultSets = resultMetadata.getResultSets();
if (delivery == IStatementExecutor.ResultDelivery.IMMEDIATE && !resultSets.isEmpty()) {
- final IStatementExecutor.Stats stats = responseMsg.getStats();
stats.setProcessedObjects(responseMsg.getStats().getProcessedObjects());
for (int i = 0; i < resultSets.size(); i++) {
Triple<JobId, ResultSetId, ARecordType> rsmd = resultSets.get(i);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 15c0702..7191d03 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -12342,4 +12342,11 @@
</compilation-unit>
</test-case>
</test-group>
+ <test-group name="metrics">
+ <test-case FilePath="metrics">
+ <compilation-unit name="full-scan">
+ <output-dir compare="Text">full-scan</output-dir>
+ </compilation-unit>
+ </test-case>
+ </test-group>
</test-suite>