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

Reply via email to