@Override
    default Iterator<ClickHouseValue> iterator() {
        return new Iterator<ClickHouseValue>() {
            private int index = 0;

            @Override
            public boolean hasNext() {
                return index < size();
            }

            @Override
            public ClickHouseValue next() {
                try {
                    return getValue(index++);
                } catch (ArrayIndexOutOfBoundsException e) {
                    throw new NoSuchElementException(e.getMessage());
                }
            }
        };
    }
Gets deserialized value wrapped in an object using case-insensitive column
name, which usually is slower than {@link #getValue(int)}. Please avoid to
cache the wrapper object, as it's reused among records for memory efficiency
when {@link ClickHouseDataConfig#isReuseValueWrapper()} returns {@code true},
which is the default value. So instead of
{@code map.put("my_value", record.getValue("my_column"))}, try something like
{@code map.put("my_value", record.getValue("my_column").asString())}.

@param name case-insensitive name of the column
@return non-null wrapped value
clickhouse-data/src/main/java/com/clickhouse/data/ClickHouseRecord.java