Search in sources :

Example 1 with EnumSymbol

use of org.apache.avro.generic.GenericData.EnumSymbol in project avro by apache.

the class TestSkipEnumSchema method testSkipEnum.

@Test
public void testSkipEnum() throws IOException {
    Schema enumSchema = SchemaBuilder.builder().enumeration("enum").symbols("en1", "en2");
    EnumSymbol enumSymbol = new EnumSymbol(enumSchema, "en1");
    GenericDatumWriter<EnumSymbol> datumWriter = new GenericDatumWriter<>(enumSchema);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    Encoder encoder = EncoderFactory.get().validatingEncoder(enumSchema, EncoderFactory.get().binaryEncoder(byteArrayOutputStream, null));
    datumWriter.write(enumSymbol, encoder);
    encoder.flush();
    Decoder decoder = DecoderFactory.get().validatingDecoder(enumSchema, DecoderFactory.get().binaryDecoder(byteArrayOutputStream.toByteArray(), null));
    GenericDatumReader.skip(enumSchema, decoder);
}
Also used : Encoder(org.apache.avro.io.Encoder) Schema(org.apache.avro.Schema) EnumSymbol(org.apache.avro.generic.GenericData.EnumSymbol) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Decoder(org.apache.avro.io.Decoder) Test(org.junit.Test)

Example 2 with EnumSymbol

use of org.apache.avro.generic.GenericData.EnumSymbol in project avro by apache.

the class TestReadingWritingDataInEvolvedSchemas method enumRecordWithExtendedSchemaCanBeReadWithOriginalEnumSchemaIfOnlyOldValues.

@Test
public void enumRecordWithExtendedSchemaCanBeReadWithOriginalEnumSchemaIfOnlyOldValues() throws Exception {
    Schema writer = ENUM_ABC_RECORD;
    Record record = defaultRecordWithSchema(writer, FIELD_A, new EnumSymbol(writer, "A"));
    byte[] encoded = encodeGenericBlob(record);
    Record decoded = decodeGenericBlob(ENUM_AB_RECORD, writer, encoded);
    assertEquals("A", decoded.get(FIELD_A).toString());
}
Also used : Record(org.apache.avro.generic.GenericData.Record) GenericRecord(org.apache.avro.generic.GenericRecord) EnumSymbol(org.apache.avro.generic.GenericData.EnumSymbol) Test(org.junit.Test)

Example 3 with EnumSymbol

use of org.apache.avro.generic.GenericData.EnumSymbol in project avro by apache.

the class TestReadingWritingDataInEvolvedSchemas method enumRecordWithExtendedSchemaCanNotBeReadIfNewValuesAreUsed.

@Test
public void enumRecordWithExtendedSchemaCanNotBeReadIfNewValuesAreUsed() throws Exception {
    expectedException.expect(AvroTypeException.class);
    expectedException.expectMessage("No match for C");
    Schema writer = ENUM_ABC_RECORD;
    Record record = defaultRecordWithSchema(writer, FIELD_A, new EnumSymbol(writer, "C"));
    byte[] encoded = encodeGenericBlob(record);
    decodeGenericBlob(ENUM_AB_RECORD, writer, encoded);
}
Also used : Record(org.apache.avro.generic.GenericData.Record) GenericRecord(org.apache.avro.generic.GenericRecord) EnumSymbol(org.apache.avro.generic.GenericData.EnumSymbol) Test(org.junit.Test)

Example 4 with EnumSymbol

use of org.apache.avro.generic.GenericData.EnumSymbol in project avro by apache.

the class TestReadingWritingDataInEvolvedSchemas method enumRecordCanBeReadWithExtendedEnumSchema.

@Test
public void enumRecordCanBeReadWithExtendedEnumSchema() throws Exception {
    Schema writer = ENUM_AB_RECORD;
    Record record = defaultRecordWithSchema(writer, FIELD_A, new EnumSymbol(writer, "A"));
    byte[] encoded = encodeGenericBlob(record);
    Record decoded = decodeGenericBlob(ENUM_ABC_RECORD, writer, encoded);
    assertEquals("A", decoded.get(FIELD_A).toString());
}
Also used : Record(org.apache.avro.generic.GenericData.Record) GenericRecord(org.apache.avro.generic.GenericRecord) EnumSymbol(org.apache.avro.generic.GenericData.EnumSymbol) Test(org.junit.Test)

Example 5 with EnumSymbol

use of org.apache.avro.generic.GenericData.EnumSymbol in project trino by trinodb.

the class TestAvroDecoder method testEnumDecodedAsVarchar.

@Test
public void testEnumDecodedAsVarchar() {
    Schema schema = SchemaBuilder.record("record").fields().name("enum_field").type().enumeration("Weekday").symbols("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday").noDefault().endRecord();
    Schema enumType = schema.getField("enum_field").schema();
    EnumSymbol enumValue = new GenericData.EnumSymbol(enumType, "Wednesday");
    DecoderTestColumnHandle row = new DecoderTestColumnHandle(0, "row", VARCHAR, "enum_field", null, null, false, false, false);
    Map<DecoderColumnHandle, FieldValueProvider> decodedRow = buildAndDecodeColumn(row, "enum_field", enumType.toString(), enumValue);
    checkValue(decodedRow, row, "Wednesday");
}
Also used : DecoderTestColumnHandle(io.trino.decoder.DecoderTestColumnHandle) FieldValueProvider(io.trino.decoder.FieldValueProvider) Schema(org.apache.avro.Schema) EnumSymbol(org.apache.avro.generic.GenericData.EnumSymbol) DecoderColumnHandle(io.trino.decoder.DecoderColumnHandle) Test(org.testng.annotations.Test)

Aggregations

EnumSymbol (org.apache.avro.generic.GenericData.EnumSymbol)5 Test (org.junit.Test)4 Record (org.apache.avro.generic.GenericData.Record)3 GenericRecord (org.apache.avro.generic.GenericRecord)3 Schema (org.apache.avro.Schema)2 DecoderColumnHandle (io.trino.decoder.DecoderColumnHandle)1 DecoderTestColumnHandle (io.trino.decoder.DecoderTestColumnHandle)1 FieldValueProvider (io.trino.decoder.FieldValueProvider)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 Decoder (org.apache.avro.io.Decoder)1 Encoder (org.apache.avro.io.Encoder)1 Test (org.testng.annotations.Test)1