```
SELECT categoricalInformationValue(x.1, x.2) FROM (SELECT arrayJoin([(0, 0), (NULL, 2), (1, 0), (1, 1)]) AS x)
```
first = false;
            skipWhitespaceIfAny(istr);
            if (*istr.position() == ']')
                break;
            read_nested(nested_column);
            ++size;
            skipWhitespaceIfAny(istr);
        }
        if (has_braces)
            assertChar(']', istr);
        else 
            assertEOF(istr);
    }
    catch (...)
    {
        if (size)
            nested_column.popBack(size);
        throw;
    }
    offsets.push_back(offsets.back() + size);
}
void SerializationArray::serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const
{
    serializeTextImpl(column, row_num, ostr,
        [&](const IColumn & nested_column, size_t i)
        {
            nested->serializeTextQuoted(nested_column, i, ostr, settings);
        });
}
void SerializationArray::deserializeText(IColumn & column, ReadBuffer & istr, const FormatSettings & settings, bool whole) const