Repository: cassandra Updated Branches: refs/heads/cassandra-3.11 bd0804065 -> 5cbe08b6a refs/heads/trunk 2ad06d65b -> 8d32d9100
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/cassandra-3.11 Commit: 5cbe08b6a84cfa51ffd952a7c997b9a5f5e46e92 Parents: bd08040 Author: Francisco Fernandez <francisco.fernandez.cast...@gmail.com> Authored: Wed Mar 28 15:17:06 2018 +0200 Committer: Benjamin Lerer <b.le...@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-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org