[ASTERIXDB-3478][OTH] Do not add whitespaces when printing query result
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
Whitespaces around curly braces, colons, ... etc are unnecessary.
- Change the JSON printers (LOSSLESS_ADM_JSON and CLEAN_JSON output formats)
to remove whitespaces.
Ext-ref: MB-56704
Change-Id: I6f67a4f149be8439bbaf061657773d1a245af09a
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/10043
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Reviewed-by: Wail Alkowaileet <wael.y.k@gmail.com>
Reviewed-by: Michael Blow <mblow@apache.org>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java
index 2602917..35b4866 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResultPrinter.java
@@ -54,11 +54,11 @@
private final Stats stats;
private final ARecordType recordType;
- private boolean indentJSON;
- private boolean quoteRecord;
+ private final boolean indentJSON;
+ private final boolean quoteRecord;
// Whether we are wrapping the output sequence in an array
- private boolean wrapArray = false;
+ private final boolean wrapArray;
// Whether this is the first instance being output
private boolean notFirst = false;
@@ -72,6 +72,7 @@
this.recordType = recordType;
this.indentJSON = conf.is(SessionConfig.FORMAT_INDENT_JSON);
this.quoteRecord = conf.is(SessionConfig.FORMAT_QUOTE_RECORD);
+ this.wrapArray = conf.is(SessionConfig.FORMAT_WRAPPER_ARRAY);
this.resultDisplayFrameMgr = new FrameManager(appCtx.getCompilerProperties().getFrameSize());
if (indentJSON) {
this.om = new ObjectMapper();
@@ -106,7 +107,6 @@
notfirst = true;
app.append('"').append(name.replace("\"", "\"\"")).append('"');
}
- app.append("\r\n");
} catch (IOException e) {
throw HyracksDataException.create(e);
}
@@ -126,9 +126,8 @@
throw HyracksDataException.create(e);
}
- if (conf.is(SessionConfig.FORMAT_WRAPPER_ARRAY)) {
+ if (wrapArray) {
output.out().print("[ ");
- wrapArray = true;
}
if (conf.fmt() == SessionConfig.OutputFormat.CSV && conf.is(SessionConfig.FORMAT_CSV_HEADER)) {
@@ -139,11 +138,13 @@
StringWriter sw = new StringWriter();
appendCSVHeader(sw, recordType);
output.out().print(JSONUtil.quoteAndEscape(sw.toString()));
- output.out().print("\n");
- notFirst = true;
} else {
appendCSVHeader(output.out(), recordType);
}
+ if (!wrapArray) {
+ output.out().println();
+ }
+ notFirst = true;
}
}
@@ -173,10 +174,6 @@
record = result;
}
}
- if (conf.fmt() == SessionConfig.OutputFormat.CSV) {
- // TODO(tillw): this is inefficient as well
- record = record + "\r\n";
- }
if (quoteRecord) {
// TODO(tillw): this is inefficient as well
record = JSONUtil.quoteAndEscape(record);
@@ -210,16 +207,15 @@
for (int tIndex = 0; tIndex < last; tIndex++) {
final int start = fta.getTupleStartOffset(tIndex);
int length = fta.getTupleEndOffset(tIndex) - start;
- if (conf.fmt() == SessionConfig.OutputFormat.CSV
- && ((length > 0) && (frameBytes[start + length - 1] == '\n'))) {
- length--;
- }
String result = new String(frameBytes, start, length, UTF_8);
if (wrapArray && notFirst) {
- output.out().print(", ");
+ output.out().print(',');
}
notFirst = true;
displayRecord(result);
+ if (!wrapArray) {
+ output.out().println();
+ }
}
frameBuffer.clear();
}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
index 05b8bbf..ac85052 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/ResultExtractor.java
@@ -219,6 +219,7 @@
}
final boolean isJsonFormat = isJsonFormat(fmt);
+ boolean firstResult = true;
// if we have errors field in the results, we will always return it
checkForErrors(result);
@@ -235,6 +236,10 @@
final JsonNode fieldValue = result.get(fieldName);
switch (fieldKind) {
case RESULTS:
+ if (!firstResult) {
+ resultBuilder.append('\n');
+ }
+ firstResult = false;
if (fieldValue.size() <= 1) {
if (fieldValue.size() == 0) {
resultBuilder.append("");
@@ -257,7 +262,7 @@
} else {
for (JsonNode f : fields) {
if (f.isValueNode()) {
- resultBuilder.append(f.asText());
+ resultBuilder.append(f.asText()).append('\n');
} else {
resultBuilder.append(prettyPrint(f)).append('\n');
}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.001.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.001.regexjson
index 173a9a5..628e8b0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.001.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.001.regexjson
@@ -4,7 +4,7 @@
"*": "*"
},
"type": "application/x-adm",
- "results": [ "{ \"v\": 1 }\n", "{ \"v\": 2 }\n" ],
+ "results": [ "{ \"v\": 1 }", "{ \"v\": 2 }" ],
"plans": "R{.*}",
"status": "success",
"metrics": {
@@ -13,7 +13,7 @@
"compileTime": "R{.*}",
"queueWaitTime": "R{.*}",
"resultCount": 2,
- "resultSize": 32,
+ "resultSize": "R{.*}",
"processedObjects": 0
}
}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.002.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.002.regexjson
index 8f5cf76..a041778 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.002.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.002.regexjson
@@ -4,7 +4,7 @@
"*": "*"
},
"type": "application/x-adm",
- "results": [ "{ \"$1\": 17 }\n" ],
+ "results": [ "{ \"$1\": 17 }" ],
"plans": "R{.*}",
"status": "success",
"metrics": {
@@ -13,7 +13,7 @@
"compileTime": "R{.*}",
"queueWaitTime": "R{.*}",
"resultCount": 1,
- "resultSize": 18,
+ "resultSize": "R{.*}",
"processedObjects": 17,
"bufferCacheHitRatio": "100.00%"
}
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/format-param-in-accept-01/format-param-in-accept-01.1.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/format-param-in-accept-01/format-param-in-accept-01.1.regexjson
index ad8ba0a..0134449 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/format-param-in-accept-01/format-param-in-accept-01.1.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/format-param-in-accept-01/format-param-in-accept-01.1.regexjson
@@ -2,7 +2,7 @@
"requestID": "R{[a-zA-Z0-9-]+}",
"signature": {"*": "*"},
"type": "application/x-adm",
- "results": [ "{{ \"foo\", \"bar\" }}\n" ],
+ "results": [ "{{ \"foo\", \"bar\" }}" ],
"plans":{},
"status": "success",
"metrics": "R{.*}"
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/multiple-param-values/multiple-param-values.1.regexjson b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/multiple-param-values/multiple-param-values.1.regexjson
index 0701ef3..aab9677 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/multiple-param-values/multiple-param-values.1.regexjson
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/multiple-param-values/multiple-param-values.1.regexjson
@@ -4,7 +4,7 @@
"*": "*"
},
"type": "application/x-adm",
- "results": [ "{ \"$1\": 1 }\n" ]
+ "results": [ "{ \"$1\": 1 }" ]
,
"plans":{},
"status": "success",
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
index bd85d0e..5c091b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.03.regexadm
@@ -3,21 +3,7 @@
\s*\Q"signature": {\E
\s*\Q"*": "*"\E
\s*\Q},\E
-\s*\Q"results": [ { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q]\E
+\s*\Q"results": [ {"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null} ]\E
\s*\Q,\E
\s*\Q"plans":{},\E
\s*\Q"warnings": [{\E\s*
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.04.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.04.regexadm
index dce84fe..a0d6601 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.04.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.04.regexadm
@@ -3,21 +3,7 @@
\s*\Q"signature": {\E
\s*\Q"*": "*"\E
\s*\Q},\E
-\s*\Q"results": [ { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q]\E
+\s*\Q"results": [ {"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null} ]\E
\s*\Q,\E
\s*\Q"plans":{},\E
\s*\Q"status": "success",\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.05.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.05.regexadm
index 6b1931a..ac945a7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.05.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.05.regexadm
@@ -3,21 +3,7 @@
\s*\Q"signature": {\E
\s*\Q"*": "*"\E
\s*\Q},\E
-\s*\Q"results": [ { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q]\E
+\s*\Q"results": [ {"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null} ]\E
\s*\Q,\E
\s*\Q"plans":{},\E
\s*\Q"status": "success",\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.07.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.07.regexadm
index 6b1931a..ac945a7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.07.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.07.regexadm
@@ -3,21 +3,7 @@
\s*\Q"signature": {\E
\s*\Q"*": "*"\E
\s*\Q},\E
-\s*\Q"results": [ { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q]\E
+\s*\Q"results": [ {"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null} ]\E
\s*\Q,\E
\s*\Q"plans":{},\E
\s*\Q"status": "success",\E
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
index bd85d0e..5c091b4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.08.regexadm
@@ -3,21 +3,7 @@
\s*\Q"signature": {\E
\s*\Q"*": "*"\E
\s*\Q},\E
-\s*\Q"results": [ { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": false }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q, { "F1": { "a": 1 }, "F2": null }\E
-\s*\Q]\E
+\s*\Q"results": [ {"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":false},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null},{"F1":{"a":1},"F2":null} ]\E
\s*\Q,\E
\s*\Q"plans":{},\E
\s*\Q"warnings": [{\E\s*
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
index 76768aa..f7acb96 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/clean/APrintVisitor.java
@@ -38,12 +38,12 @@
public class APrintVisitor extends AbstractPrintVisitor {
@Override
protected AListPrinter createListPrinter(AListVisitablePointable accessor) {
- return new AListPrinter("[ ", " ]", ", ");
+ return new AListPrinter("[", "]", ",");
}
@Override
protected ARecordPrinter createRecordPrinter(ARecordVisitablePointable accessor) {
- return new ARecordPrinter("{ ", " }", ", ", ": ");
+ return new ARecordPrinter("{", "}", ",", ":");
}
@Override
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/losslessadm/APrintVisitor.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/losslessadm/APrintVisitor.java
index 025590b..0decbaa 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/losslessadm/APrintVisitor.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/printer/json/losslessadm/APrintVisitor.java
@@ -39,7 +39,7 @@
@Override
protected AListPrinter createListPrinter(AListVisitablePointable accessor) {
- return new AListPrinter("[ ", " ]", ", ") {
+ return new AListPrinter("[", "]", ",") {
@Override
protected ATypeTag getItemTypeTag(IVisitablePointable item, ATypeTag typeTag) {
// avoid MISSING to NULL conversion, because we print MISSING as is in this format
@@ -50,7 +50,7 @@
@Override
protected ARecordPrinter createRecordPrinter(ARecordVisitablePointable accessor) {
- return new ARecordPrinter("{ ", " }", ", ", ": ") {
+ return new ARecordPrinter("{", "}", ",", ":") {
@Override
protected void printFieldName(PrintStream ps, IPrintVisitor visitor, IVisitablePointable fieldName)
throws HyracksDataException {
diff --git a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java
index 015ce73..6fcbdce 100644
--- a/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java
+++ b/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java
@@ -61,11 +61,10 @@
+ tAccess.getFieldStartOffset(tIdx, fields[i]);
int fldLen = tAccess.getFieldLength(tIdx, fields[i]);
if (i > 0) {
- printStream.print("; ");
+ printStream.print(';');
}
printers[i].print(tAccess.getBuffer().array(), fldStart, fldLen, printStream);
}
- printStream.println();
}
};
}
diff --git a/hyracks-fullstack/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java b/hyracks-fullstack/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java
index d23f7f9..9265f52 100644
--- a/hyracks-fullstack/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java
+++ b/hyracks-fullstack/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java
@@ -178,7 +178,7 @@
StringBuilder buf = new StringBuilder();
readFileToString(outFile, buf);
- Assert.assertEquals("400; 3", buf.toString());
+ Assert.assertEquals("400;3", buf.toString());
outFile.delete();
}
@@ -570,7 +570,7 @@
StringBuilder buf = new StringBuilder();
readFileToString(outFile, buf);
- Assert.assertEquals("400; 3", buf.toString());
+ Assert.assertEquals("400;3", buf.toString());
outFile.delete();
}
@@ -796,9 +796,9 @@
RecordDescriptor sortDesc = scannerDesc;
String fileName = "scanMicroSortWrite.out";
- String filePath = PATH_ACTUAL + SEPARATOR + fileName;
- String resultFilePath = PATH_EXPECTED + SEPARATOR + fileName;
- File outFile = new File(filePath);
+ String actualFilePath = PATH_ACTUAL + SEPARATOR + fileName;
+ String expectedFilePath = PATH_EXPECTED + SEPARATOR + fileName;
+ File outFile = new File(actualFilePath);
SinkWriterRuntimeFactory writer = new SinkWriterRuntimeFactory(new int[] { 0, 1, 2, 3 },
new IPrinterFactory[] { IntegerPrinterFactory.INSTANCE, UTF8StringPrinterFactory.INSTANCE,
IntegerPrinterFactory.INSTANCE, UTF8StringPrinterFactory.INSTANCE },
@@ -814,7 +814,7 @@
spec.addRoot(algebricksOp);
AlgebricksHyracksIntegrationUtil.runJob(spec);
- compareFiles(filePath, resultFilePath);
+ compareFiles(expectedFilePath, actualFilePath);
outFile.delete();
}
diff --git a/hyracks-fullstack/algebricks/algebricks-tests/src/test/resources/results/scanMicroSortWrite.out b/hyracks-fullstack/algebricks/algebricks-tests/src/test/resources/results/scanMicroSortWrite.out
index 1c0fd6a..978196c 100644
--- a/hyracks-fullstack/algebricks/algebricks-tests/src/test/resources/results/scanMicroSortWrite.out
+++ b/hyracks-fullstack/algebricks/algebricks-tests/src/test/resources/results/scanMicroSortWrite.out
@@ -1,25 +1 @@
-0; "ALGERIA"; 0; " haggle. carefully final deposits detect slyly agai"
-1; "ARGENTINA"; 1; "al foxes promise slyly according to the regular accounts. bold requests alon"
-2; "BRAZIL"; 1; "y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special "
-3; "CANADA"; 1; "eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold"
-18; "CHINA"; 2; "c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos"
-4; "EGYPT"; 4; "y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d"
-5; "ETHIOPIA"; 0; "ven packages wake quickly. regu"
-6; "FRANCE"; 3; "refully final requests. regular, ironi"
-7; "GERMANY"; 3; "l platelets. regular accounts x-ray: unusual, regular acco"
-8; "INDIA"; 2; "ss excuses cajole slyly across the packages. deposits print aroun"
-9; "INDONESIA"; 2; " slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull"
-10; "IRAN"; 4; "efully alongside of the slyly final dependencies. "
-11; "IRAQ"; 4; "nic deposits boost atop the quickly final requests? quickly regula"
-12; "JAPAN"; 2; "ously. final, express gifts cajole a"
-13; "JORDAN"; 4; "ic deposits are blithely about the carefully regular pa"
-14; "KENYA"; 0; " pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t"
-15; "MOROCCO"; 0; "rns. blithely bold courts among the closely regular packages use furiously bold platelets?"
-16; "MOZAMBIQUE"; 0; "s. ironic, unusual asymptotes wake blithely r"
-17; "PERU"; 1; "platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun"
-19; "ROMANIA"; 3; "ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account"
-22; "RUSSIA"; 3; " requests against the platelets use never according to the quickly regular pint"
-20; "SAUDI ARABIA"; 4; "ts. silent requests haggle. closely express packages sleep across the blithely"
-23; "UNITED KINGDOM"; 3; "eans boost carefully special requests. accounts are. carefull"
-24; "UNITED STATES"; 1; "y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be"
-21; "VIETNAM"; 2; "hely enticingly express accounts. even, final "
+0;"ALGERIA";0;" haggle. carefully final deposits detect slyly agai"1;"ARGENTINA";1;"al foxes promise slyly according to the regular accounts. bold requests alon"2;"BRAZIL";1;"y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special "3;"CANADA";1;"eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold"18;"CHINA";2;"c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos"4;"EGYPT";4;"y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d"5;"ETHIOPIA";0;"ven packages wake quickly. regu"6;"FRANCE";3;"refully final requests. regular, ironi"7;"GERMANY";3;"l platelets. regular accounts x-ray: unusual, regular acco"8;"INDIA";2;"ss excuses cajole slyly across the packages. deposits print aroun"9;"INDONESIA";2;" slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull"10;"IRAN";4;"efully alongside of the slyly final dependencies. "11;"IRAQ";4;"nic deposits boost atop the quickly final requests? quickly regula"12;"JAPAN";2;"ously. final, express gifts cajole a"13;"JORDAN";4;"ic deposits are blithely about the carefully regular pa"14;"KENYA";0;" pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t"15;"MOROCCO";0;"rns. blithely bold courts among the closely regular packages use furiously bold platelets?"16;"MOZAMBIQUE";0;"s. ironic, unusual asymptotes wake blithely r"17;"PERU";1;"platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun"19;"ROMANIA";3;"ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account"22;"RUSSIA";3;" requests against the platelets use never according to the quickly regular pint"20;"SAUDI ARABIA";4;"ts. silent requests haggle. closely express packages sleep across the blithely"23;"UNITED KINGDOM";3;"eans boost carefully special requests. accounts are. carefull"24;"UNITED STATES";1;"y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be"21;"VIETNAM";2;"hely enticingly express accounts. even, final "
\ No newline at end of file