May be useful to interface with some external program, e.g. I want to use `clickhouse-format` to beautify the queries for performance test reports.

For now, DDL dictionaries don't work for `clickhouse-local` at all (https://github.com/ClickHouse/ClickHouse/issues/22354)

We should do it through DDL, because the xml config route looks hopeless. `clickhouse-local` can't even load server's `config.xml` properly.
{
            rethrowExceptionDuringReadIfNeeded();
            stream->readPrefix();
        }
        void readSuffix() override
        {
            if (thread.joinable())
                thread.join();
            rethrowExceptionDuringReadIfNeeded();
            stream->readSuffix();
        }
        void rethrowExceptionDuringReadIfNeeded()
        {
            std::lock_guard<std::mutex> lck(exception_during_read_lock);
            if (exception_during_read)
            {
                command = nullptr;
                std::rethrow_exception(exception_during_read);
            }
        }
        String getName() const override { return "PoolWithBackgroundThread"; }