[ 
https://issues.apache.org/jira/browse/AVRO-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16647275#comment-16647275
 ] 

ASF GitHub Bot commented on AVRO-1256:
--------------------------------------

aniket486 commented on a change in pull request #345:  AVRO-1256: C++ API 
compileJsonSchema ignores "doc" and custom attributes on a field/record
URL: https://github.com/apache/avro/pull/345#discussion_r224649978
 
 

 ##########
 File path: lang/c++/impl/NodeImpl.cc
 ##########
 @@ -125,54 +125,60 @@ NodeUnion::resolve(const Node &reader) const
     return match;
 }
 
-SchemaResolution 
+SchemaResolution
 NodeFixed::resolve(const Node &reader) const
 {
     if(reader.type() == AVRO_FIXED) {
         return (
                 (reader.fixedSize() == fixedSize()) &&
-                (reader.name() == name()) 
-            ) ? 
+                (reader.name() == name())
+            ) ?
             RESOLVE_MATCH : RESOLVE_NO_MATCH;
     }
     return furtherResolution(reader);
 }
 
-SchemaResolution 
+SchemaResolution
 NodeSymbolic::resolve(const Node &reader) const
 {
     const NodePtr &node = leafAt(0);
     return node->resolve(reader);
 }
 
-// Wrap an indentation in a struct for ostream operator<< 
-struct indent { 
+// Wrap an indentation in a struct for ostream operator<<
+struct indent {
     indent(int depth) :
         d(depth)
     { }
-    int d; 
+    int d;
 };
 
 /// ostream operator for indent
 std::ostream& operator <<(std::ostream &os, indent x)
 {
     static const std::string spaces("    ");
     while(x.d--) {
-        os << spaces; 
+        os << spaces;
     }
     return os;
 }
 
-void 
+void
 NodePrimitive::printJson(std::ostream &os, int depth) const
 {
     os << '\"' << type() << '\"';
+    if (getDoc().size()) {
+        os << ",\n" << indent(depth) << "\"doc\": \"" << getDoc() << "\"";
 
 Review comment:
   ack

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> C++ API compileJsonSchema ignores "doc" and custom attributes on a 
> field/record
> -------------------------------------------------------------------------------
>
>                 Key: AVRO-1256
>                 URL: https://issues.apache.org/jira/browse/AVRO-1256
>             Project: Avro
>          Issue Type: Improvement
>          Components: c++
>    Affects Versions: 1.7.2
>         Environment: Running on all platforms (Windows, OSX, Linux)
>            Reporter: Tim Menninger
>            Priority: Minor
>         Attachments: AVRO-1256.patch
>
>
> It appears that when my JSON is compiled into a valid schema object it is 
> ignoring all types of "documentation" that I am trying to adorn with each 
> field in my record. Reading through the Java issues it seems that this was a 
> bug and fixed (AVRO-601, AVRO-612, AVRO-779) but it seems the C++ 
> implementation has yet to adopt this feature? This is my sample schema, I 
> have attempted to insert both "doc" and "mycustom" in multiple places to see 
> if it is supported at any level. Please excuse if there appears to be a 
> syntax error in the JSON I hand tweaked some of this. The schema is valid and 
> successfully parses.
> {
>       "type": "record",
>       "name": "myschema",
>       "doc": "Doc Meta",
>       "mycustom": "My Custom",
>       "fields": [
>               { "name":"field_a","type":["string","null"], "doc":"Doc Meta", 
> "mycustom":"My Custom A"},
>               { "name":"field_b","type":["string","null"], "doc":"Doc Meta", 
> "mycustom":"My Custom B"},
>               { "name":"field_c","type":["string","null"], "doc":"Doc Meta", 
> "mycustom":"My Custom C"}
>       ]
> }
> I looked through the SchemaTests.cc code for 1.7.3 and there was not a test 
> case for this there so i didn't think this was addressed in that version. I 
> am running 1.7.2. When this schema is used to load with compileJsonSchema and 
> then a file is serialized the file schema looks like this.
> {
>       "type":"record",
>       "name":"myschema",
>       "fields": [
>               { "name":"field_a","type":["string","null"]},
>               { "name":"field_b","type":["string","null"]},
>               { "name":"field_c","type":["string","null"]}
>       ]
> }



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to