Always reproduced:

```
milovidov-desktop :) create table table_map (a Map(String, String), b String) engine = MergeTree() order by a;

CREATE TABLE table_map
(
    `a` Map(String, String),
    `b` String
)
ENGINE = MergeTree
ORDER BY a

Query id: 8f8120c1-c165-452a-815f-2bcae3957e2a

Ok.

0 rows in set. Elapsed: 0.002 sec. 

milovidov-desktop :) SELECT b FROM table_map WHERE a = map('name', NULL, '', NULL)

SELECT b
FROM table_map
WHERE a = {'name', NULL, '', NULL}
```
ColumnString::Offsets & offsets_to = col_to->getOffsets();
            size_t size = vec_from.size();
            if constexpr (std::is_same_v<FromDataType, DataTypeDate>)
                data_to.resize(size * (strlen("YYYY-MM-DD") + 1));
            else if constexpr (std::is_same_v<FromDataType, DataTypeDateTime>)
                data_to.resize(size * (strlen("YYYY-MM-DD hh:mm:ss") + 1));
            else if constexpr (std::is_same_v<FromDataType, DataTypeDateTime64>)
                data_to.resize(size * (strlen("YYYY-MM-DD hh:mm:ss.") + vec_from.getScale() + 1));
            else
                data_to.resize(size * 3);   
            offsets_to.resize(size);
            WriteBufferFromVector<ColumnString::Chars> write_buffer(data_to);
            for (size_t i = 0; i < size; ++i)
            {
                FormatImpl<FromDataType>::execute(vec_from[i], write_buffer, &type, time_zone);
                writeChar(0, write_buffer);
                offsets_to[i] = write_buffer.count();
            }
            write_buffer.finalize();
            return col_to;
        }
        else
            throw Exception("Illegal column " + arguments[0].column->getName()
                    + " of first argument of function " + Name::name,
                ErrorCodes::ILLEGAL_COLUMN);
    }
};
struct ConvertImplGenericToString
{
    static ColumnPtr execute(const ColumnsWithTypeAndName & arguments)