Add an option for `clickhouse-client` with a list of tests for extensive fuzzing.
Processing of these tests will be interleaved between every other tests, so we will get much better fuzzing coverage.
// Some functions (e.g. protocol parsers) don't throw, but
                // set last_exception instead, so we'll also do it here for
                // uniformity.
                last_exceptiom_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_exceptiom_server->message());
            }
            if (!n->isConnected())
            {
                // Probably the server is dead because we found an assertion
                // failure. Fail fast.
                fmt::nnection to the server\n");
                return false;
            }
            // The server is still alive so we're going to continue fuzzing.
            // Determine what we're going to use as the starting AST.
            if (received_exception_from_server)
            {
                // Query completed with error, keep the previous starting AST.
                // Also discard the exception that we now know to be non-fatal,
                // so that it doesn't influence the exit code.
                last_exceptiom_server.reset(nullptr);
                received_exception_from_server = false;
            }
            else if (ast_to_process->formatForErrorMessage().size() > 500)