@Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (obj instanceof Column) {
            Column that = (Column) obj;
            return this.name().equalsIgnoreCase(that.name()) && this.typeExpression()
                    .equalsIgnoreCase(that.typeExpression()) && this.typeName().equalsIgnoreCase(that.typeName())
                    && this.jdbcType() == that.jdbcType() && Strings.equalsIgnoreCase(this.charsetName(),
                            that.charsetName())
                    && this.position() == that.position() && this.length() == that.length()
                    && this.scale().equals(that.scale()) && this.isOptional() == that.isOptional()
                    && this.isAutoIncremented() == that.isAutoIncremented() && this.isGenerated() == that.isGenerated()
                    && Objects.equals(this.defaultValue(), that.defaultValue())
                    && this.hasDefaultValue() == that.hasDefaultValue() && this.enumValues().equals(that.enumValues());
        }
        return false;
    }
A implementation class of {@link Column}, which can used by {@link TableChange}
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/postgres-cdc/src/main/java/org/apache/inlong/sort/cdc/postgres/debezium/internal/ColumnImpl.java