forideal created FLINK-13224: -------------------------------- Summary: TupleTypeInfoBase equals function can't distinguish different struct type Key: FLINK-13224 URL: https://issues.apache.org/jira/browse/FLINK-13224 Project: Flink Issue Type: Bug Affects Versions: 1.8.0 Environment: flink 1.8.0 Reporter: forideal
Hi i have two struct type one is {code:java} // code placeholder Types.ROW_NAMED( new String[]{"device"}, Types.PRIMITIVE_ARRAY(Types.BYTE) ) {code} the other is {code:java} // code placeholder Types.ROW_NAMED( new String[]{"app"}, Types.PRIMITIVE_ARRAY(Types.BYTE) ) {code} when i compare those two types ,the equals function returns true. there are some code in TupleTypeInfoBase {code:java} // code placeholder return other.canEqual(this) && super.equals(other) && Arrays.equals(types, other.types) && totalFields == other.totalFields; {code} i think,The equals function should compare field names. eg: {code:java} // code placeholder if (totalFields == other.totalFields) { String[] otherFieldNames = other.getFieldNames(); String[] fieldNames = this.getFieldNames(); for (int i = 0; i < totalFields; i++) { if (!otherFieldNames[i].equals(fieldNames[i])) { return false; } } } else{ return false; } return other.canEqual(this) && super.equals(other) && Arrays.equals(types, other.types); {code} -- This message was sent by Atlassian JIRA (v7.6.14#76016)