Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-1049

GenericData.Record#equals() does not return false when the schemas are not equal

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.6.0
    • 1.7.0
    • java
    • None

    Description

      GenericData.Record#equals() does not return false when the schemas are not equal: it currently only checks
      the schema names as a performance optimization; this test code illustrates the issue:

      @Test
      public void test() {
         Schema schema1 = Schema.createRecord("test_record", null, "my.namespace", false);
         List<Field> fields1 = new ArrayList<Field>();
         fields1.add(new Field("attribute1", Schema.create(Schema.Type.STRING), null, null, Order.IGNORE));
         schema1.setFields(fields1);
      
         Schema schema2 = Schema.createRecord("test_record", null, "my.namespace", false);
         List<Field> fields2 = new ArrayList<Field>();
         fields2.add(new Field("attribute1", Schema.create(Schema.Type.STRING), null, null, Order.ASCENDING));
         schema2.setFields(fields2);
      
         GenericRecord record1 = new GenericData.Record(schema1);
         record1.put("attribute1", "1");
      
         GenericRecord record2 = new GenericData.Record(schema2);
         record2.put("attribute1", "2");
      
         System.out.println(record1.equals(record2)); // returns TRUE
         System.out.println(record2.equals(record1)); // returns FALSE
      }
      

      See also:

      http://mail-archives.apache.org/mod_mbox/avro-user/201202.mbox/%3C4F355A77.1070009@apache.org%3E

      Attachments

        1. AVRO-1049.patch
          4 kB
          Doug Cutting

        Activity

          People

            cutting Doug Cutting
            adwkenworthy Andrew Kenworthy
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: