Related to huge suggestions list

```
(gdb) thread apply all bt

Thread 2 (Thread 0x7fbefa6d8400 (LWP 298)):
#0  __pthread_clockjoin_ex (threadid=140458186086144, thread_return=0x0, clockid=<optimized out>, abstime=<optimized out>, block=<optimized out>) at pthread_join_common.c:145
#1  0x0000000007c42cb0 in DB::Suggest::~Suggest() ()
#2  0x00007fbefa874a27 in __run_exit_handlers (status=0, listp=0x7fbefaa16718 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:108
#3  0x00007fbefa874be0 in __GI_exit (status=<optimized out>) at exit.c:139
#4  0x00007fbefa8520ba in __libc_start_main (main=0x7b8e780 <main>, argc=1, argv=0x7ffc4e5be1e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc4e5be1d8) at ../csu/libc-start.c:342
#5  0x0000000007b3f02e in _start ()

Thread 1 (Thread 0x7fbef8499700 (LWP 299)):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007fbefa850859 in __GI_abort () at abort.c:79
#2  0x0000000010eb0edc in Poco::SignalHandler::handleSignal(int) ()
#3  <signal handler called>
#4  0x000000000d42dd4f in std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::find<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const ()
#5  0x000000000d793065 in DB::IFactoryWithAliases<std::__1::function<std::__1::shared_ptr<DB::IDataType const> (std::__1::shared_ptr<DB::IAST> const&)> >::getAliasToOrName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const ()
#6  0x000000000d7927f1 in DB::DataTypeFactory::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::IAST> const&) const ()
#7  0x000000000d792640 in DB::DataTypeFactory::get(std::__1::shared_ptr<DB::IAST> const&) const ()
#8  0x000000000d7924b1 in DB::DataTypeFactory::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const ()
#9  0x000000000ddfd267 in DB::NativeBlockInputStream::readImpl() ()
#10 0x000000000d7575d5 in DB::IBlockInputStream::read() ()
#11 0x000000000e530096 in DB::Connection::receivePacket() ()
#12 0x0000000007c6e217 in DB::Suggest::fetch(DB::Connection&, DB::ConnectionTimeouts const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) ()
#13 0x0000000007c6e0a4 in DB::Suggest::loadImpl(DB::Connection&, DB::ConnectionTimeouts const&, unsigned long) ()
#14 0x0000000007c6eb14 in ?? ()
#15 0x00007fbefaa37609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#16 0x00007fbefa94d293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
```
dump_of_cloned_ast.str().c_str())
                        fprintf(stderr, "dump after fuzz:\n")
                        fuzz_base->dumpTree(std::cerr)
                        fmt::print(stderr, "IAST::clone() is broken for some AST node. This is a bug. The original AST ('dump before fuzz') and its cloned copy ('dump of cloned AST') refer to the same nodes, hich must never happen. This means that their parent node doesn't implement clone() correctly.")
                        assert(false)
                    }
                    auto fuzzed_text = ast_to_process->formatForErrorMessage()
                    if (fuzz_step > 0 && fuzzed_text == base_before_fuzz)
                    {
                        fprintf(stderr, "got boring ast\n")
                        continue
                    }
                    parsed_query = ast_to_process
                    query_to_send = parsed_query->formatForErrorMessage()
                    processParsedSingleQuery()
                }
                tch (...)
                {
                    // Some functions (e.g. protocol parsers) don't thro, but
                    // set last_exception instead, so e'll also do it here for
                    // uniformity.
                    last_exce_from_server = std::make_unique<Exception>(getCurrentExceptionMessage(true), getCurrentExceptionCode())
                    received_exception_from_server = true
                }
                if (received_exception_from_server)
                {
                    fmt::print(stderr, "Error on processing query '{}': {}\n",
                        ast_to_process->formatForErrorMessage(),
                        last_exce_from_server->message())
                }