ClickHouse is using infinite cache for compiled regular expressions.
Hyperscan can use several megabytes per compiled regexp.
It makes infinite memory growth possible:

```
clickhouse-benchmark --query "SELECT multiFuzzyMatchAny('Hello, world', 5, ['(' || (SELECT toString(rand(1))) || '|' || (SELECT toString(rand(2))) || ')+(' || (SELECT toString(rand(3))) || '|' || (SELECT toString(rand(4))) || ')+(' || (SELECT toString(rand(5))) || ')+'])"
```

Possible solutions:
- simply drop cache if its size is 1000 entries;
- replace to LRU cache with 1000 entries.

{
                offsets[i] = (i == 0) ? 0 : offsets[i-1];
                prev_haystack_offset = haystack_offsets[i];
                prev_needles_offset = needles_offsets[i];
                continue;
            }
            checkHyperscanRegexp(needles, max_hyperscan_regexp_length, max_hyperscan_regexp_total_length);
            const auto & hyperscan_regex = MultiRegexps::get<true, WithEditDistance>(needles, edit_distance);
            hs_scratch_t * scratch = nullptr;
            hs_error_t err = hs_clone_scratch(hyperscan_regex->getScratch(), &scratch);
            if (err != HS_SUCCESS)
                throw Exception("Could not clone scratch space for hyperscan", ErrorCodes::CANNOT_ALLOCATE_MEMORY);
            MultiRegexps::ScratchPtr smart_scratch(scratch);
            auto on_match = [](unsigned int id,
                               unsigned long long , 
                               unsigned long long , 
                               unsigned int ,
                               void * context) -> int
            {
                static_cast<PaddedPODArray<ResultType>*>(context)->push_back(id);
                return 0;
            };
            const size_t cur_haystack_length = haystack_offsets[i] - prev_haystack_offset - 1;
            
            if (cur_haystack_length > std::numeric_limits<UInt32>::max())
                throw Exception("Too long string to search", ErrorCodes::TOO_MANY_BYTES);
            
            err = hs_scan(
                hyperscan_regex->getDB(),
                reinterpret_cast<const char *>(haystack_data.data()) + prev_haystack_offset,