@Override
    public boolean equals(Object obj) {
        if (this == obj) { // too bad this is a mutable class :<
            return true;
        } else if (obj == null || getClass() != obj.getClass()) {
            return false;
        }

        ClickHouseStringValue v = (ClickHouseStringValue) obj;
        return binary == v.binary && Objects.equals(bytes, v.bytes) && Objects.equals(value, v.value);
    }
Update value of the given object or create a new instance if {@code ref} is
null.

@param ref   object to update, could be null
@param bytes bytes
@return same object as {@code ref} or a new instance if it's null
clickhouse-data/src/main/java/com/clickhouse/data/value/ClickHouseStringValue.java