```sql
CREATE TABLE t
(
   id Int64, 
   d String,
   p Map(String, String)
   
)
ENGINE = ReplacingMergeTree order by id settings index_granularity  = 0;


insert into t values (1,  's', {'a':'b'});

CH starts eating RAM until it crashes

the same with

insert into t select 1,  's', map('a','b');

```

{
    const auto settings = getSettings();
    bool has_zero_copy_parts = false;
    if (settings->allow_remote_fs_zero_copy_replication && dynamic_cast<StorageReplicatedMergeTree *>(this) != nullptr)
    {
        has_zero_copy_parts = std::any_of(
            parts_to_remove.begin(), parts_to_remove.end(),
            [] (const auto & data_part) { return data_part->isStoredOnRemoteDiskWithZeroCopySupport(); }
        );
    }
    if (parts_to_remove.size() > 1
        && settings->max_part_removal_threads > 1
        && parts_to_remove.size() > settings->concurrent_part_removal_threshold
        && !has_zero_copy_parts) 
    {
        
        size_t num_threads = std::min<size_t>(settings->max_part_removal_threads, parts_to_remove.size());
        std::mutex part_names_mutex;
        ThreadPool pool(num_threads);
        
        LOG_DEBUG(log, "Removing {} parts from filesystem: {} (concurrently)", parts_to_remove.size(), fmt::join(parts_to_remove, ", "));
        for (const DataPartPtr & part : parts_to_remove)
        {