This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit d3612260a4f9a51051ed3fe147b6cfc5c64423f0 Author: Ali Alsuliman <[email protected]> AuthorDate: Thu Aug 1 21:54:12 2024 -0700 [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 <[email protected]> Reviewed-by: Wail Alkowaileet <[email protected]> Reviewed-by: Michael Blow <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> --- .../apache/asterix/app/result/ResultPrinter.java | 30 ++++++++++------------ .../asterix/test/common/ResultExtractor.java | 7 ++++- .../cache-residency/cache-residency.001.regexjson | 4 +-- .../cache-residency/cache-residency.002.regexjson | 4 +-- .../format-param-in-accept-01.1.regexjson | 2 +- .../multiple-param-values.1.regexjson | 2 +- .../warnings-limit/warnings-limit.03.regexadm | 16 +----------- .../warnings-limit/warnings-limit.04.regexadm | 16 +----------- .../warnings-limit/warnings-limit.05.regexadm | 16 +----------- .../warnings-limit/warnings-limit.07.regexadm | 16 +----------- .../warnings-limit/warnings-limit.08.regexadm | 16 +----------- .../printer/json/clean/APrintVisitor.java | 4 +-- .../printer/json/losslessadm/APrintVisitor.java | 4 +-- .../runtime/writers/PrinterBasedWriterFactory.java | 3 +-- .../tests/pushruntime/PushRuntimeTest.java | 12 ++++----- .../test/resources/results/scanMicroSortWrite.out | 26 +------------------ 16 files changed, 42 insertions(+), 136 deletions(-) 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 2602917689..35b4866a5e 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 @@ public class ResultPrinter { 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 @@ public class ResultPrinter { 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 @@ public class ResultPrinter { notfirst = true; app.append('"').append(name.replace("\"", "\"\"")).append('"'); } - app.append("\r\n"); } catch (IOException e) { throw HyracksDataException.create(e); } @@ -126,9 +126,8 @@ public class ResultPrinter { 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 @@ public class ResultPrinter { 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 @@ public class ResultPrinter { 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 @@ public class ResultPrinter { 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 05b8bbfdea..ac850524e8 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 @@ public class ResultExtractor { } 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 @@ public class ResultExtractor { 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 @@ public class ResultExtractor { } 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 173a9a50c8..628e8b05db 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 8f5cf761e1..a041778d8a 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 ad8ba0a817..0134449795 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 0701ef30e7..aab9677854 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 bd85d0e46d..5c091b4c71 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 dce84fe75a..a0d66016d9 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 6b1931a742..ac945a7394 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 6b1931a742..ac945a7394 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 bd85d0e46d..5c091b4c71 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 76768aa326..f7acb96dc1 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 @@ import org.apache.hyracks.api.exceptions.HyracksDataException; 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 025590b469..0decbaa6e7 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 @@ public class APrintVisitor extends AbstractPrintVisitor { @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 @@ public class APrintVisitor extends AbstractPrintVisitor { @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 015ce73616..6fcbdcece7 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 @@ public class PrinterBasedWriterFactory implements IAWriterFactory { + 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 d23f7f9ccd..9265f5254c 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 @@ public class PushRuntimeTest { 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 @@ public class PushRuntimeTest { 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 @@ public class PushRuntimeTest { 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 @@ public class PushRuntimeTest { 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 1c0fd6a3ca..978196cbdd 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 [...] \ No newline at end of file
