in athena-federation-sdk/src/main/java/com/amazonaws/athena/connector/lambda/data/Block.java [378:421]
public boolean equals(Object o)
{
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Block that = (Block) o;
if (this.schema.getFields().size() != that.schema.getFields().size()) {
return false;
}
if (this.vectorSchema.getRowCount() != that.vectorSchema.getRowCount()) {
return false;
}
try {
for (Field next : this.schema.getFields()) {
FieldReader thisReader = vectorSchema.getVector(next.getName()).getReader();
FieldReader thatReader = that.vectorSchema.getVector(next.getName()).getReader();
for (int i = 0; i < this.vectorSchema.getRowCount(); i++) {
thisReader.setPosition(i);
thatReader.setPosition(i);
if (ArrowTypeComparator.compare(thisReader, thisReader.readObject(), thatReader.readObject()) != 0) {
return false;
}
}
}
}
catch (IllegalArgumentException ex) {
//can happen when comparator doesn't support the type
throw ex;
}
catch (RuntimeException ex) {
//There are many differences which can cause an exception, easier to handle them this way
logger.warn("equals: ", ex);
return false;
}
return true;
}