/** Called to read a record instance. May be overridden for alternate record * representations.*/ protected Object readRecord(Object old, Schema expected, ResolvingDecoder in) throws IOException { Object r = data.newRecord(old, expected); Object state = data.getRecordState(r, expected); for (Field f : in.readFieldOrder()) { int pos = f.pos(); String name = f.name(); Object oldDatum = null; if (old!=null) { oldDatum = data.getField(r, name, pos, state); } readField(r, f, oldDatum, in, state); } return r; }
/** Called to read a record instance. May be overridden for alternate record * representations.*/ protected Object readRecord(Object old, Schema expected, ResolvingDecoder in) throws IOException { Object r = data.newRecord(old, expected); Object state = data.getRecordState(r, expected); for (Field f : in.readFieldOrder()) { int pos = f.pos(); String name = f.name(); Object oldDatum = null; if (old!=null) { oldDatum = data.getField(r, name, pos, state); } readField(r, f, oldDatum, in, state); } return r; }
@Override protected void readInternal(Decoder d) throws IOException { ResolvingDecoder r = (ResolvingDecoder) d; Field[] ff = r.readFieldOrder(); for (int i = 0; i < count; i++) { for (int j = 0; j < ff.length; j++) { Field f = ff[j]; switch (f.pos()) { case 0: case 1: case 3: r.readDouble(); break; case 2: case 4: case 5: r.readInt(); break; } } } } }
@Override protected void readInternal(Decoder d) throws IOException { ResolvingDecoder r = (ResolvingDecoder) d; Field[] ff = r.readFieldOrder(); for (int i = 0; i < count; i++) { for (int j = 0; j < ff.length; j++) { Field f = ff[j]; switch (f.pos()) { case 0: case 1: case 2: r.readDouble(); break; case 3: case 4: case 5: r.readLong(); break; } } } } }
@Override protected void readInternal(Decoder d) throws IOException { ResolvingDecoder r = (ResolvingDecoder) d; Field[] ff = r.readFieldOrder(); for (int i = 0; i < count; i++) { for (int j = 0; j < ff.length; j++) { Field f = ff[j]; switch (f.pos()) { case 0: case 1: case 2: r.readDouble(); break; case 3: case 4: case 5: r.readInt(); break; case 6: case 7: r.readString(null); break; } } } } }
((ResolvingDecoder) vi).readFieldOrder(); continue; default:
/** Called to read a record instance. May be overridden for alternate record * representations.*/ protected Object readRecord(Object old, Schema expected, ResolvingDecoder in) throws IOException { Object record = newRecord(old, expected); for (Field f : in.readFieldOrder()) { int pos = f.pos(); String name = f.name(); Object oldDatum = (old != null) ? getField(record, name, pos) : null; setField(record, name, pos, read(oldDatum, f.schema(), in)); } return record; }
/** Called to read a record instance. May be overridden for alternate record * representations.*/ protected Object readRecord(Object old, Schema expected, ResolvingDecoder in) throws IOException { Object record = newRecord(old, expected); for (Field f : in.readFieldOrder()) { int pos = f.pos(); String name = f.name(); Object oldDatum = (old != null) ? getField(record, name, pos) : null; setField(record, name, pos, read(oldDatum, f.schema(), in)); } return record; }
@Override protected Object readRecord(Object old, org.apache.avro.Schema expected, ResolvingDecoder in) throws IOException { StructuredRecord.Builder builder = StructuredRecord.builder(currentSchema); for (org.apache.avro.Schema.Field f : in.readFieldOrder()) { String name = f.name(); Schema tmpSchema = currentSchema; try { currentSchema = getFieldSchema(name, currentSchema); builder.set(name, read(null, f.schema(), in)); } finally { currentSchema = tmpSchema; } } return builder.build(); }
@Override protected Object readRecord(Object old, org.apache.avro.Schema expected, ResolvingDecoder in) throws IOException { StructuredRecord.Builder builder = StructuredRecord.builder(currentSchema); for (org.apache.avro.Schema.Field f : in.readFieldOrder()) { String name = f.name(); Schema tmpSchema = currentSchema; try { currentSchema = getFieldSchema(name, currentSchema); builder.set(name, read(null, f.schema(), in)); } finally { currentSchema = tmpSchema; } } return builder.build(); }
/** Called to read a record instance. May be overridden for alternate record * representations.*/ protected Object readRecord(Object old, Schema expected, ResolvingDecoder in) throws IOException { Object r = data.newRecord(old, expected); Object state = data.getRecordState(r, expected); for (Field f : in.readFieldOrder()) { int pos = f.pos(); String name = f.name(); Object oldDatum = null; if (old!=null) { oldDatum = data.getField(r, name, pos, state); } readField(r, f, oldDatum, in, state); } return r; }
/** Called to read a record instance. May be overridden for alternate record * representations.*/ protected Object readRecord(Object old, Schema expected, ResolvingDecoder in) throws IOException { Object r = data.newRecord(old, expected); Object state = data.getRecordState(r, expected); for (Field f : in.readFieldOrder()) { int pos = f.pos(); String name = f.name(); Object oldDatum = null; if (old!=null) { oldDatum = data.getField(r, name, pos, state); } readField(r, f, oldDatum, in, state); } return r; }
@Override public S read(Decoder decoder, Object reuse) throws IOException { S struct = reuseOrCreate(reuse); if (decoder instanceof ResolvingDecoder) { // this may not set all of the fields. nulls are set by default. for (org.apache.avro.Schema.Field field : ((ResolvingDecoder) decoder).readFieldOrder()) { Object reusedValue = get(struct, field.pos()); set(struct, field.pos(), readers[field.pos()].read(decoder, reusedValue)); } } else { for (int i = 0; i < readers.length; i += 1) { Object reusedValue = get(struct, i); set(struct, i, readers[i].read(decoder, reusedValue)); } } return struct; } }
@Override public InternalRow read(Decoder decoder, Object reuse) throws IOException { GenericInternalRow row = new GenericInternalRow(readers.length); if (decoder instanceof ResolvingDecoder) { // this may not set all of the fields. nulls are set by default. for (Schema.Field field : ((ResolvingDecoder) decoder).readFieldOrder()) { Object value = readers[field.pos()].read(decoder, null); if (value != null) { row.update(field.pos(), value); } else { row.setNullAt(field.pos()); } } } else { for (int i = 0; i < readers.length; i += 1) { Object value = readers[i].read(decoder, null); if (value != null) { row.update(i, value); } else { row.setNullAt(i); } } } return row; } }