**Describe the unexpected behaviour**
maxMap is removing entries with empty string or zero value.

**How to reproduce**

String array
SELECT maxMap(a, b) from values ('a Array(String), b Array(String)',(['A'],['']),(['B'],['']));

┌─maxMap(a, b) ─┐
│ ([],[])                    │ 
└───────────┘

Numeric array
`SELECT maxMap(a, b) from values ('a Array(String), b Array(UInt64)',(['A'],[0]),(['B'],[0]));

┌─maxMap(a, b) ─┐
│ ([],[])                    │ 
└───────────┘
`
It happens with all versions published.

**Expected behavior**
We expect this to maintain those keys with its value (empty string or zero).

{
        auto & merged_maps = this->data(place).merged_maps;
        const auto & rhs_maps = this->data(rhs).merged_maps;
        for (const auto & elem : rhs_maps)
        {
            const auto & it = merged_maps.find(elem.first);
            if (it != merged_maps.end())
            {
                for (size_t col = 0; col < values_types.size(); ++col)
                    applyVisitor(Visitor(elem.second[col]), it->second[col]);
            }
            else
                merged_maps[elem.first] = elem.second;
        }
    }
    void serialize(ConstAggregateDataPtr place, WriteBuffer & buf) const override
    {
        const auto & merged_maps = this->data(place).merged_maps;
        size_t size = merged_maps.size();
        writeVarUInt(size, buf);
        for (const auto & elem : merged_maps)
        {
            keys_type->serializeBinary(elem.first, buf);
            for (size_t col = 0; col < values_types.size(); ++col)
                values_types[col]->serializeBinary(elem.second[col], buf);
        }
    }
    void deserialize(AggregateDataPtr place, ReadBuffer & buf, Arena *) const override