https://clickhouse-test-reports.s3.yandex.net/15348/34addcf61f653e50e493ff8d94fab015db91fa59/fuzzer/report.html#fail1
const std::string & attribute_name,
    const Columns & key_columns, const DataTypes & key_types, ColumnString * out) const
{
    const auto index = getAttributeIndex(attribute_name);
    checkAttributeType(this, attribute_name, dict_struct.attributes[index].underlying_type, AttributeUnderlyingType::utString);
    const auto null_value = StringRef{std::get<String>(null_values[index])};
    getItemsStringImpl(index, key_columns, key_types, out, [&](const size_t) { return null_value; });
}
void SSDComplexKeyCacheDictionary::getString(
        const std::string & attribute_name,
        const Columns & key_columns, const DataTypes & key_types,
        const ColumnString * const def, ColumnString * const out) const
{
    const auto index = getAttributeIndex(attribute_name);
    checkAttributeType(this, attribute_name, dict_struct.attributes[index].underlying_type, AttributeUnderlyingType::utString);
    getItemsStringImpl(index, key_columns, key_types, out, [&](const size_t row) { return def->getDataAt(row); });
}
void SSDComplexKeyCacheDictionary::getString(
        const std::string & attribute_name,
        const Columns & key_columns,
        const DataTypes & key_types,
        const String & def,
        ColumnString * const out) const
{
    const auto index = getAttributeIndex(attribute_name);
    checkAttributeType(this, attribute_name, dict_struct.attributes[index].underlying_type, AttributeUnderlyingType::utString);
    getItemsStringImpl(index, key_columns, key_types, out, [&](const size_t) { return StringRef{def}; });
}
template <typename DefaultGetter>
void SSDComplexKeyCacheDictionary::getItemsStringImpl(