You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by bl...@apache.org on 2018/03/28 13:28:51 UTC

[2/3] cassandra git commit: Serialize empty buffer as empty string for json output format

Serialize empty buffer as empty string for json output format

patch by Francisco Fernandez; reviewed by Benjamin Lerer for CASSANDRA-14245


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5cbe08b6
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5cbe08b6
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5cbe08b6

Branch: refs/heads/trunk
Commit: 5cbe08b6a84cfa51ffd952a7c997b9a5f5e46e92
Parents: bd08040
Author: Francisco Fernandez <fr...@gmail.com>
Authored: Wed Mar 28 15:17:06 2018 +0200
Committer: Benjamin Lerer <b....@gmail.com>
Committed: Wed Mar 28 15:17:06 2018 +0200

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../apache/cassandra/cql3/selection/Selection.java    |  4 +++-
 .../cassandra/cql3/validation/entities/JsonTest.java  | 14 ++++++++++++++
 3 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5cbe08b6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 5646081..1f4ffb8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.11.3
+ * Serialize empty buffer as empty string for json output format (CASSANDRA-14245)
  * Allow logging implementation to be interchanged for embedded testing (CASSANDRA-13396)
  * SASI tokenizer for simple delimiter based entries (CASSANDRA-14247)
  * Fix Loss of digits when doing CAST from varint/bigint to decimal (CASSANDRA-14170)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5cbe08b6/src/java/org/apache/cassandra/cql3/selection/Selection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/selection/Selection.java b/src/java/org/apache/cassandra/cql3/selection/Selection.java
index 93a71b8..7b4e80c 100644
--- a/src/java/org/apache/cassandra/cql3/selection/Selection.java
+++ b/src/java/org/apache/cassandra/cql3/selection/Selection.java
@@ -297,8 +297,10 @@ public abstract class Selection
             sb.append('"');
             sb.append(Json.quoteAsJsonString(columnName));
             sb.append("\": ");
-            if (buffer == null || !buffer.hasRemaining())
+            if (buffer == null)
                 sb.append("null");
+            else if (!buffer.hasRemaining())
+                sb.append("\"\"");
             else
                 sb.append(spec.type.toJSONString(buffer, protocolVersion));
         }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5cbe08b6/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java
index 2728237..6bca8f8 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/JsonTest.java
@@ -1348,4 +1348,18 @@ public class JsonTest extends CQLTester
         executor.shutdown();
         Assert.assertTrue(executor.awaitTermination(30, TimeUnit.SECONDS));
     }
+
+    @Test
+    public void emptyStringJsonSerializationTest() throws Throwable
+    {
+        createTable("create table %s(id INT, name TEXT, PRIMARY KEY(id));");
+        execute("insert into %s(id, name) VALUES (0, 'Foo');");
+        execute("insert into %s(id, name) VALUES (2, '');");
+        execute("insert into %s(id, name) VALUES (3, null);");
+
+        assertRows(execute("SELECT JSON * FROM %s"),
+                   row("{\"id\": 0, \"name\": \"Foo\"}"),
+                   row("{\"id\": 2, \"name\": \"\"}"),
+                   row("{\"id\": 3, \"name\": null}"));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org