My answer is inlined. >> My feeling is SerializerDeserializer offers another level of abstraction >> but with output I can write value directly without construct AType object. >> I am wondering if there are any preferences over these two?
I agree with you. However, a SerializerDeserializer has to be stateless, hence it cannot be used at runtime for complex type objects such as records and lists, because it will create a lot Java objects. >> in other words, parser has to guarantee that the >> processed records has to match the dataset definition(non-optional >> attribute cannot have null value). I tried to assign null value to non-null >> attributes. It will be inserted successfully but read records will have >> problem. That sounds right to me. Please file a JIRA issue and assign to you ( if you're working on that). I'm guessing that you can do similar things to CastRecordDescriptor if you want to handle general cases in that region. >> 3. Set to null or skip >> For optional(nullable) attributes, if I want to insert a record with null >> value on that attribute. Should I assign null value or should I just skip >> it? (Probably this is related to the missing attribute that Yingyi >> mentioned today?) Assign null value. Missing means the field doesn't exist in a record at all. Best, Yingyi On Fri, Apr 29, 2016 at 2:06 PM, Xikui Wang <xik...@uci.edu> wrote: > Hi devs, > > I came across several questions while I was constructing records in > AsterixDB. Hope someone can help me clear the confusion. :) > > 1. Write directly to data output or use SerializerDeserializer > I am working with AbstractDataParser now. I see people using different ways > to append attributes to data output. Either use: > output.Write(typetag.serialize()); > output.WriteInt(0); > to write into data output directly, or > use AInt8SerializerDeserializer.serialize(int8Serde) to serialize a AINT8 > instance to output. *SerializerDeserializer uses writeByte to write output. > > My feeling is SerializerDeserializer offers another level of abstraction > but with output I can write value directly without construct AType object. > I am wondering if there are any preferences over these two? > > 2. RecordType validation after parser but before add to frame? > My observation is after parser finish writing the output and pass it to > next level, there is no such validation that checks whether non-optional > field is null or not. In other words, parser has to guarantee that the > processed records has to match the dataset definition(non-optional > attribute cannot have null value). I tried to assign null value to non-null > attributes. It will be inserted successfully but read records will have > problem. > > 3. Set to null or skip > For optional(nullable) attributes, if I want to insert a record with null > value on that attribute. Should I assign null value or should I just skip > it? (Probably this is related to the missing attribute that Yingyi > mentioned today?) > > Thanks for your help. > > Best, > Xikui >