Till Westmann has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/1208

Change subject: Print non-numeric floating point values as strings
......................................................................

Print non-numeric floating point values as strings

Change-Id: I423fa30005a0987b1b98dc111a489a64e347df15
---
M 
asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ADoublePrinterFactory.java
M 
asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AFloatPrinterFactory.java
2 files changed, 20 insertions(+), 4 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/08/1208/1

diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ADoublePrinterFactory.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ADoublePrinterFactory.java
index 03088fb..abf9ced 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ADoublePrinterFactory.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/ADoublePrinterFactory.java
@@ -29,8 +29,16 @@
     private static final long serialVersionUID = 1L;
     public static final ADoublePrinterFactory INSTANCE = new 
ADoublePrinterFactory();
 
-    public static final IPrinter PRINTER = (byte[] b, int s, int l, 
PrintStream ps) -> ps
-            .print(ADoubleSerializerDeserializer.getDouble(b, s + 1));
+    public static final IPrinter PRINTER = (byte[] b, int s, int l, 
PrintStream ps) -> {
+        final double d = ADoubleSerializerDeserializer.getDouble(b, s + 1);
+        if (Double.isFinite(d)) {
+            ps.print(d);
+        } else {
+            ps.append('"');
+            ps.print(Double.toString(d));
+            ps.append('"');
+        }
+    };
 
     @Override
     public IPrinter createPrinter() {
diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AFloatPrinterFactory.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AFloatPrinterFactory.java
index 827ebec..a6cdc0d 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AFloatPrinterFactory.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/json/clean/AFloatPrinterFactory.java
@@ -29,8 +29,16 @@
     private static final long serialVersionUID = 1L;
     public static final AFloatPrinterFactory INSTANCE = new 
AFloatPrinterFactory();
 
-    public static final IPrinter PRINTER = (byte[] b, int s, int l, 
PrintStream ps) -> ps
-            .print(AFloatSerializerDeserializer.getFloat(b, s + 1));
+    public static final IPrinter PRINTER = (byte[] b, int s, int l, 
PrintStream ps) -> {
+        final float aFloat = AFloatSerializerDeserializer.getFloat(b, s + 1);
+        if (Float.isFinite(aFloat)) {
+            ps.print(aFloat);
+        } else {
+            ps.append('"');
+            ps.print(Float.toString(aFloat));
+            ps.append('"');
+        }
+    };
 
     @Override
     public IPrinter createPrinter() {

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1208
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I423fa30005a0987b1b98dc111a489a64e347df15
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Till Westmann <[email protected]>

Reply via email to