Uploaded image for project: 'Beam'
  1. Beam
  2. BEAM-12581

Row.toString() method is throwing NullPointerException while processing a nullable map

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Triage Needed
    • Priority: P3
    • Resolution: Unresolved
    • Affects Version/s: 2.30.0
    • Fix Version/s: None
    • Component/s: sdk-java-core
    • Labels:
      None

      Description

      When a row object has a beam schema containing fields of type MAP which values are null, it will throw a NullPointerException while trying to call Row.toString() method.

      This could happen, for example, when you convert an AVRO record (which has unions of null and map types) to Row object and then call toString() method.

      Test showing the issue:

       

       

      @Test(expected = NullPointerException.class) 
      public void givenANullableMap_whileRowToString_thenThrowNullPointerException() { 
      Schema mapSchema = map().values().stringType();
      Schema nullableMapUnion = SchemaBuilder.unionOf().nullType().and().type(mapSchema).endUnion();
      Schema recordSchema = SchemaBuilder.record("TestRecord").fields().name("union") .type(nullableMapUnion).withDefault(null).endRecord();
      GenericRecord genericRecord = new GenericRecordBuilder(recordSchema).build();
      Row rowRecord = AvroUtils.toBeamRowStrict(genericRecord, AvroUtils.toBeamSchema(recordSchema));
      String rowAsString = rowRecord.toString();
      }
      
      

      This behaviour doesn't happen with the previous implementation of the Row.toString() method from version 2.29.0.

      Additionally when you have a non null value for the map attribute, the row representation as string in version 2.30.0 is as follow:

      Row: union:{(testing, value), } 
      

      Which has an extra comma despite the fact it is only one element in the map.

       

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              LuisMi Luis Muñoz
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: