ensure rest api returns a single json object with a single 'results' field for each query
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/QueryResultAPIServlet.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/QueryResultAPIServlet.java
index f06dbcd..05c9023 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/QueryResultAPIServlet.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/QueryResultAPIServlet.java
@@ -81,7 +81,7 @@
JSONObject jsonResponse = new JSONObject();
JSONArray results = new JSONArray();
while (resultReader.read(buffer) > 0) {
- results.put(ResultUtils.getJSONFromBuffer(buffer, resultReader.getFrameTupleAccessor()));
+ ResultUtils.getJSONFromBuffer(buffer, resultReader.getFrameTupleAccessor(), results);
}
jsonResponse.put("results", results);
out.write(jsonResponse.toString());
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java b/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java
index 4202db3..1883e1a 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/aql/translator/AqlTranslator.java
@@ -1750,21 +1750,24 @@
resultReader.open(jobId, metadataProvider.getResultSetId());
buffer.clear();
+ JSONArray results = new JSONArray();
while (resultReader.read(buffer) > 0) {
- response.put("results",
- ResultUtils.getJSONFromBuffer(buffer, resultReader.getFrameTupleAccessor()));
+ ResultUtils.getJSONFromBuffer(buffer, resultReader.getFrameTupleAccessor(), results);
buffer.clear();
- switch (pdf) {
- case HTML:
- ResultUtils.prettyPrintHTML(out, response);
- break;
- case TEXT:
- case JSON:
- out.print(response);
- break;
- }
- out.flush();
}
+
+ response.put("results", results);
+ switch (pdf) {
+ case HTML:
+ ResultUtils.prettyPrintHTML(out, response);
+ break;
+ case TEXT:
+ case JSON:
+ out.print(response);
+ break;
+ }
+ out.flush();
+
if (pdf == DisplayFormat.HTML) {
out.println("</pre>");
}
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java b/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java
index ad60843..18ed62a 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java
@@ -35,8 +35,8 @@
import edu.uci.ics.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
public class ResultUtils {
- public static JSONArray getJSONFromBuffer(ByteBuffer buffer, IFrameTupleAccessor fta) throws HyracksDataException {
- JSONArray resultRecords = new JSONArray();
+ public static void getJSONFromBuffer(ByteBuffer buffer, IFrameTupleAccessor fta, JSONArray resultRecords)
+ throws HyracksDataException {
ByteBufferInputStream bbis = new ByteBufferInputStream();
try {
@@ -56,7 +56,6 @@
throw new HyracksDataException(e);
}
}
- return resultRecords;
}
public static JSONObject getErrorResponse(int errorCode, String errorMessage, String errorSummary,