Github user kunal642 commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2956#discussion_r236768643
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/datastore/block/SegmentPropertiesAndSchemaHolder.java
 ---
    @@ -332,13 +334,42 @@ public void clear() {
           }
           SegmentPropertiesAndSchemaHolder.SegmentPropertiesWrapper other =
               (SegmentPropertiesAndSchemaHolder.SegmentPropertiesWrapper) obj;
    -      return tableIdentifier.equals(other.tableIdentifier) && 
columnsInTable
    -          .equals(other.columnsInTable) && Arrays
    +      return tableIdentifier.equals(other.tableIdentifier) && 
checkColumnSchemaEquality(
    +          columnsInTable, other.columnsInTable) && Arrays
               .equals(columnCardinality, other.columnCardinality);
         }
     
    +    private boolean checkColumnSchemaEquality(List<ColumnSchema> obj1, 
List<ColumnSchema> obj2) {
    +      List<ColumnSchema> clonedObj1 = new ArrayList<>(obj1);
    +      List<ColumnSchema> clonedObj2 = new ArrayList<>(obj2);
    +      clonedObj1.addAll(obj1);
    +      clonedObj2.addAll(obj2);
    +      Collections.sort(clonedObj1, new Comparator<ColumnSchema>() {
    +        @Override public int compare(ColumnSchema o1, ColumnSchema o2) {
    +          return o1.getColumnUniqueId().compareTo(o2.getColumnUniqueId());
    +        }
    +      });
    +      Collections.sort(clonedObj2, new Comparator<ColumnSchema>() {
    +        @Override public int compare(ColumnSchema o1, ColumnSchema o2) {
    +          return o1.getColumnUniqueId().compareTo(o2.getColumnUniqueId());
    +        }
    +      });
    +      boolean exists = true;
    +      for (int i = 0; i < obj1.size(); i++) {
    +        if (!clonedObj1.get(i).equalsWithColumnId(clonedObj2.get(i))) {
    +          exists = false;
    +          break;
    +        }
    +      }
    +      return exists;
    +    }
    +
         @Override public int hashCode() {
    -      return tableIdentifier.hashCode() + columnsInTable.hashCode() + 
Arrays
    +      int hashCode = 0;
    +      for (ColumnSchema columnSchema: columnsInTable) {
    +        hashCode += columnSchema.hashCodeWithColumnId();
    --- End diff --
    
    done


---

Reply via email to