@Override
    public ClickHouseStringValue copy(boolean deep) {
        if (bytes == null || !binary) {
            return new ClickHouseStringValue(value);
        }

        byte[] b = bytes;
        if (deep) {
            b = new byte[bytes.length];
            System.arraycopy(bytes, 0, b, 0, bytes.length);
        }
        return new ClickHouseStringValue(b);
    }
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