Return-Path: X-Original-To: apmail-avro-dev-archive@www.apache.org Delivered-To: apmail-avro-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A9C4018CBC for ; Thu, 23 Jul 2015 15:16:27 +0000 (UTC) Received: (qmail 48284 invoked by uid 500); 23 Jul 2015 15:16:05 -0000 Delivered-To: apmail-avro-dev-archive@avro.apache.org Received: (qmail 48190 invoked by uid 500); 23 Jul 2015 15:16:05 -0000 Mailing-List: contact dev-help@avro.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@avro.apache.org Delivered-To: mailing list dev@avro.apache.org Received: (qmail 47920 invoked by uid 99); 23 Jul 2015 15:16:05 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Jul 2015 15:16:05 +0000 Date: Thu, 23 Jul 2015 15:16:05 +0000 (UTC) From: "Charlie Quillard (JIRA)" To: dev@avro.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (AVRO-1674) Optional field does not work in avro-cpp MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/AVRO-1674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14638977#comment-14638977 ] Charlie Quillard commented on AVRO-1674: ---------------------------------------- duplicate of https://issues.apache.org/jira/browse/AVRO-1335 > Optional field does not work in avro-cpp > ---------------------------------------- > > Key: AVRO-1674 > URL: https://issues.apache.org/jira/browse/AVRO-1674 > Project: Avro > Issue Type: Bug > Components: c++ > Affects Versions: 1.7.7 > Reporter: Charlie Quillard > > I have to implement an optional field in my avro schema and when i test this one with avro-py that works and that does not works with avro-cpp. > That is my schema (cpx.json) : > {code} > { > "type" : "record", > "name" : "example", > "fields" : [ > { > "name": "city", > "type": ["null", "string"], > "defaults":null > } > ] > } > {code} > That is my cpp code: > {code} > typedef std::pair Pair; > int main(int ac, char **av) > { > std::ifstream ifs("cpx.json"); > avro::ValidSchema schema; > avro::compileJsonSchema(ifs, schema); > Pair p(schema, avro::GenericDatum()); > avro::GenericDatum &Data = p.second; > Data = avro::GenericDatum(schema); > avro::GenericRecord &sReord = Data.value(); > sReord.setFieldAt(sReord.fieldIndex("city"), avro::GenericDatum("test")); > avro::DataFileWriter dataFileWriter("test.bin", schema); > dataFileWriter.write(p); > dataFileWriter.close(); > } > {code} > This is my error when i transform my binary to json with avo-tools : > {quote} > Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 > at org.apache.avro.io.parsing.Symbol$Alternative.getSymbol(Symbol.java:402) > at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:290) > at org.apache.avro.io.parsing.Parser.advance(Parser.java:88) > at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:267) > at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:155) > at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193) > at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183) > at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151) > at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142) > at org.apache.avro.file.DataFileStream.next(DataFileStream.java:233) > at org.apache.avro.file.DataFileStream.next(DataFileStream.java:220) > at org.apache.avro.tool.DataFileReadTool.run(DataFileReadTool.java:77) > at org.apache.avro.tool.Main.run(Main.java:84) > at org.apache.avro.tool.Main.main(Main.java:73) > {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)