You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by th...@apache.org on 2017/01/29 12:53:35 UTC

avro git commit: AVRO-1912 fixed using John McClean's patch

Repository: avro
Updated Branches:
  refs/heads/master 3ab93ca43 -> ad42bb36c


AVRO-1912 fixed using John McClean's patch


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

Branch: refs/heads/master
Commit: ad42bb36c96e7dda17cc04900e3dedfd7b8ea9e7
Parents: 3ab93ca
Author: Thiruvalluvan M G <th...@startsmartlabs.com>
Authored: Sun Jan 29 18:23:20 2017 +0530
Committer: Thiruvalluvan M G <th...@startsmartlabs.com>
Committed: Sun Jan 29 18:23:20 2017 +0530

----------------------------------------------------------------------
 CHANGES.txt                     |  5 +++
 lang/c++/impl/parsing/Symbol.hh |  3 ++
 lang/c++/test/CodecTests.cc     | 59 +++++++++++++++++++++++++++++++-----
 3 files changed, 59 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/avro/blob/ad42bb36/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fbb1c2f..75e99d0 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -40,6 +40,8 @@ Trunk (not yet released)
     AVRO-1897: Fix build issues due to VERSION.txt newline, avro-tools.
     (Suraj Acharya via blue)
 
+    AVRO-1993: C++ Byte ordering macro does not work on FreeBSD (thiru)
+
   BUG FIXES
 
     AVRO-1741: Python3: Fix error when codec is not in the header.
@@ -117,6 +119,9 @@ Trunk (not yet released)
     AVRO-1954: Java: Schema.Field.defaultVal() generates: Unknown datum type
     (Nandor Kollar via tomwhite)
 
+    AVRO-1930: JsonParser doesn't handle integer scientific notation (Pietro Cerutti via thiru)
+    AVRO-1912: C++ Resolving Decoding doesn't work if element removed from record in array. (via thiru)
+
 Avro 1.8.1 (14 May 2016)
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/avro/blob/ad42bb36/lang/c++/impl/parsing/Symbol.hh
----------------------------------------------------------------------
diff --git a/lang/c++/impl/parsing/Symbol.hh b/lang/c++/impl/parsing/Symbol.hh
index a7c0997..2911752 100644
--- a/lang/c++/impl/parsing/Symbol.hh
+++ b/lang/c++/impl/parsing/Symbol.hh
@@ -737,6 +737,9 @@ public:
             if (s.isImplicitAction()) {
                 handler_.handle(s);
                 parsingStack.pop();
+            } else if (s.kind() == Symbol::sSkipStart) {
+                parsingStack.pop();
+                skip(*decoder_);
             } else {
                 break;
             }

http://git-wip-us.apache.org/repos/asf/avro/blob/ad42bb36/lang/c++/test/CodecTests.cc
----------------------------------------------------------------------
diff --git a/lang/c++/test/CodecTests.cc b/lang/c++/test/CodecTests.cc
index c0ca1e0..a7977b6 100644
--- a/lang/c++/test/CodecTests.cc
+++ b/lang/c++/test/CodecTests.cc
@@ -1274,6 +1274,21 @@ static const TestData4 data4[] = {
         "[Rc1sI]",
         { "100", NULL }, 1 },
 
+    // Record of array of record with deleted field as last field
+    { "{\"type\":\"record\",\"name\":\"outer\",\"fields\":["
+        "{\"name\": \"g1\","
+            "\"type\":{\"type\":\"array\",\"items\":{"
+                "\"name\":\"item\",\"type\":\"record\",\"fields\":["
+                "{\"name\":\"f1\", \"type\":\"int\"},"
+                "{\"name\":\"f2\", \"type\": \"long\", \"default\": 0}]}}}]}", "[c1sIL]",
+        { "10", "11", NULL },
+        "{\"type\":\"record\",\"name\":\"outer\",\"fields\":["
+        "{\"name\": \"g1\","
+            "\"type\":{\"type\":\"array\",\"items\":{"
+                "\"name\":\"item\",\"type\":\"record\",\"fields\":["
+                "{\"name\":\"f1\", \"type\":\"int\"}]}}}]}", "R[c1sI]",
+        { "10", NULL }, 2 },
+
     // Enum resolution
     { "{\"type\":\"enum\",\"name\":\"e\",\"symbols\":[\"x\",\"y\",\"z\"]}",
         "e2",
@@ -1302,20 +1317,12 @@ static const TestData4 data4[] = {
         "[c2sU1IsU1I]", { "100", "100", NULL } ,
         "{\"type\":\"array\", \"items\": \"int\"}",
             "[c2sIsI]", { "100", "100", NULL }, 2 },
-    { "{\"type\":\"array\", \"items\":[ \"long\", \"int\"]}",
-        "[c1sU1Ic1sU1I]", { "100", "100", NULL } ,
-        "{\"type\":\"array\", \"items\": \"int\"}",
-            "[c1sIc1sI]", { "100", "100", NULL }, 2 },
 
     // Map of unions
     { "{\"type\":\"map\", \"values\":[ \"long\", \"int\"]}",
         "{c2sS10U1IsS10U1I}", { "k1", "100", "k2", "100", NULL } ,
         "{\"type\":\"map\", \"values\": \"int\"}",
             "{c2sS10IsS10I}", { "k1", "100", "k2", "100", NULL }, 2 },
-    { "{\"type\":\"map\", \"values\":[ \"long\", \"int\"]}",
-        "{c1sS10U1Ic1sS10U1I}", { "k1", "100", "k2", "100", NULL } ,
-        "{\"type\":\"map\", \"values\": \"int\"}",
-            "{c1sS10Ic1sS10I}", { "k1", "100", "k2", "100", NULL }, 2 },
 
     // Union + promotion
     { "\"int\"", "I", { "100", NULL },
@@ -1339,6 +1346,20 @@ static const TestData4 data4[] = {
         { "1", "100", "10.75", NULL }, 1 },
 };
 
+static const TestData4 data4BinaryOnly[] = {
+    // Arrray of unions
+    { "{\"type\":\"array\", \"items\":[ \"long\", \"int\"]}",
+        "[c1sU1Ic1sU1I]", { "100", "100", NULL } ,
+        "{\"type\":\"array\", \"items\": \"int\"}",
+            "[c1sIc1sI]", { "100", "100", NULL }, 2 },
+
+    // Map of unions
+    { "{\"type\":\"map\", \"values\":[ \"long\", \"int\"]}",
+        "{c1sS10U1Ic1sS10U1I}", { "k1", "100", "k2", "100", NULL } ,
+        "{\"type\":\"map\", \"values\": \"int\"}",
+            "{c1sS10Ic1sS10I}", { "k1", "100", "k2", "100", NULL }, 2 },
+};
+
 #define COUNTOF(x)  sizeof(x) / sizeof(x[0])
 #define ENDOF(x)    (x) + COUNTOF(x)
 
@@ -1405,6 +1426,21 @@ struct BinaryEncoderResolvingDecoderFactory : public BinaryEncoderFactory {
     }
 };
 
+struct JsonEncoderResolvingDecoderFactory {
+    static EncoderPtr newEncoder(const ValidSchema& schema) {
+        return jsonEncoder(schema);
+    }
+
+    static DecoderPtr newDecoder(const ValidSchema& schema) {
+        return resolvingDecoder(schema, schema, jsonDecoder(schema));
+    }
+
+    static DecoderPtr newDecoder(const ValidSchema& writer,
+        const ValidSchema& reader) {
+        return resolvingDecoder(writer, reader, jsonDecoder(writer));
+    }
+};
+
 struct ValidatingEncoderResolvingDecoderFactory :
     public ValidatingEncoderFactory {
     static DecoderPtr newDecoder(const ValidSchema& schema) {
@@ -1426,14 +1462,21 @@ void add_tests(boost::unit_test::test_suite& ts)
     ADD_TESTS(ts, JsonCodec, testCodec, data);
     ADD_TESTS(ts, JsonPrettyCodec, testCodec, data);
     ADD_TESTS(ts, BinaryEncoderResolvingDecoderFactory, testCodec, data);
+    ADD_TESTS(ts, JsonEncoderResolvingDecoderFactory, testCodec, data);
     ADD_TESTS(ts, ValidatingCodecFactory, testReaderFail, data2);
     ADD_TESTS(ts, ValidatingCodecFactory, testWriterFail, data2);
     ADD_TESTS(ts, BinaryEncoderResolvingDecoderFactory,
         testCodecResolving, data3);
+    ADD_TESTS(ts, JsonEncoderResolvingDecoderFactory,
+        testCodecResolving, data3);
     ADD_TESTS(ts, BinaryEncoderResolvingDecoderFactory,
         testCodecResolving2, data4);
+    ADD_TESTS(ts, JsonEncoderResolvingDecoderFactory,
+        testCodecResolving2, data4);
     ADD_TESTS(ts, ValidatingEncoderResolvingDecoderFactory,
         testCodecResolving2, data4);
+    ADD_TESTS(ts, BinaryEncoderResolvingDecoderFactory,
+        testCodecResolving2, data4BinaryOnly);
 
     ADD_TESTS(ts, ValidatingCodecFactory, testGeneric, data);
     ADD_TESTS(ts, ValidatingCodecFactory, testGenericResolving, data3);