[ https://issues.apache.org/jira/browse/AVRO-4117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Manik Malhotra updated AVRO-4117: --------------------------------- Description: Steps to reproduce: 1. Create cpx.json schema file: {code:java} { "fields": [ { "type": [ { "minItems": 1, "type": "array", "items": "string" } ], "name": "bug" } ], "type": "record", "name": "cpx" } {code} 2. Create bug.cpp file {code:java} #include <fstream> #include <avro/ValidSchema.hh> #include <avro/Schema.hh> #include <avro/Compiler.hh>int main(int argc, char* argv[]) { if (argc < 2) { std::cerr << "Usage: " << argv[0] << " <schema json>" << std::endl; return 1; } std::string schema_file = argv[1]; std::ifstream ins(schema_file); avro::ValidSchema cpxSchema; avro::compileJsonSchema(ins, cpxSchema); } {code} 3. compile and run the cpp file with schema file as argument: {code:java} g++ -std=c++17 bug.cpp -o bug -I/usr/local/include -L/usr/local/lib -lavrocpp ./bug cpx.json{code} expected behavior: 0 return code observed behavior: 134 return code with output: {code:java} terminate called after throwing an instance of 'avro::Exception' what(): Invalid type. Expected "string" actual long Aborted {code} The same schema works in c, python, and java implementations as they don't require such keys to be string. was: Steps to reproduce: 1. Create cpx.json schema file: {code:java} { "fields": [ { "type": [ { "minItems": 1, "type": "array", "items": "string" } ], "name": "bug" } ], "type": "record", "name": "cpx" } {code} 2. Create bug.cpp file {code:java} #include <fstream> #include <avro/ValidSchema.hh> #include <avro/Schema.hh> #include <avro/Compiler.hh>int main(int argc, char* argv[]) { if (argc < 2) { std::cerr << "Usage: " << argv[0] << " <schema json>" << std::endl; return 1; } std::string schema_file = argv[1]; std::ifstream ins(schema_file); avro::ValidSchema cpxSchema; avro::compileJsonSchema(ins, cpxSchema); } {code} 3. compile and run the cpp file with schema file as argument: {code:java} g++ -std=c++17 bug.cpp -o bug -I/usr/local/include -L/usr/local/lib -lavrocpp ./bug cpx.json{code} expected behavior: 0 return code observed behavior: 134 return code with output: {code:java} terminate called after throwing an instance of 'avro::Exception' what(): Invalid type. Expected "string" actual long Aborted {code} > avrocpp throws an exception if unreserved key in schema has a non string value > ------------------------------------------------------------------------------ > > Key: AVRO-4117 > URL: https://issues.apache.org/jira/browse/AVRO-4117 > Project: Apache Avro > Issue Type: Bug > Components: c++ > Affects Versions: 1.11.4 > Environment: Linux > c++17 > Reporter: Manik Malhotra > Priority: Minor > > Steps to reproduce: > 1. Create cpx.json schema file: > {code:java} > { > "fields": [ > { > "type": [ > { > "minItems": 1, > "type": "array", > "items": "string" > } > ], > "name": "bug" > } > ], > "type": "record", > "name": "cpx" > } {code} > 2. Create bug.cpp file > {code:java} > #include <fstream> > #include <avro/ValidSchema.hh> > #include <avro/Schema.hh> > #include <avro/Compiler.hh>int main(int argc, char* argv[]) > { > if (argc < 2) { > std::cerr << "Usage: " << argv[0] << " <schema json>" << std::endl; > return 1; > } std::string schema_file = argv[1]; > std::ifstream ins(schema_file); > avro::ValidSchema cpxSchema; > avro::compileJsonSchema(ins, cpxSchema); > } {code} > 3. compile and run the cpp file with schema file as argument: > {code:java} > g++ -std=c++17 bug.cpp -o bug -I/usr/local/include -L/usr/local/lib -lavrocpp > ./bug cpx.json{code} > expected behavior: 0 return code > observed behavior: 134 return code with output: > {code:java} > terminate called after throwing an instance of 'avro::Exception' > what(): Invalid type. Expected "string" actual long > Aborted {code} > > > The same schema works in c, python, and java implementations as they don't > require such keys to be string. -- This message was sent by Atlassian Jira (v8.20.10#820010)