[ 
https://issues.apache.org/jira/browse/AVRO-220?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Scott Banachowski updated AVRO-220:
-----------------------------------

    Attachment:     (was: AVRO-220.patch)

> Dynamic schema resolution from writer to reader
> -----------------------------------------------
>
>                 Key: AVRO-220
>                 URL: https://issues.apache.org/jira/browse/AVRO-220
>             Project: Avro
>          Issue Type: Improvement
>          Components: c++
>            Reporter: Scott Banachowski
>         Attachments: AVRO-220.patch, AVRO-220.patch
>
>
> This introduces a new feature for C++, which enables data written by one 
> schema to be read by a different schema.
> Before parse time, it examines the two schemas, and assembles a list of 
> instructions on how to parse the data, and how to translate the parsed data 
> to the expected schema (or skip it, as appropriate).  The result of this 
> operation is a sequence of instructions.
> At parse time, it basically follows the assembled list of instructions.  The 
> instructions can be created once, and then reused to read multiple messages 
> (analogous to assembling a program that does the parsing, and then executing 
> this program when you want to read the data).
> A structure is used when assembling the instructions, that holds a mapping of 
> memory locations for primitives (relative to the start of some structure).   
> This tells the parser where to copy the data to while parsing from the writer 
> schema to a C++ structure. For non-primitive types, it stores the memory 
> location for a functor that returns a destination address when invoked (for 
> example, to add a map entry the functor will allocate the map entry, and 
> return an address for the parser to write the actual data.  Then the 
> instruction for the map data type is invoked to populate this address).  
> Setting up this offset structure is a chore, but using the code generator 
> make it simple. The code generator correctly cranks out these structures for 
> all the data types it generates. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to