AST-based query fuzzer should randomly modify data types in CREATE TABLE queries, mostly by wrapping in Nullable, Array and LowCardinality.
void onData(Block & block, ASTPtr parsed_query);
    void onLogData(Block & block);
    void onTotals(Block & block, ASTPtr parsed_query);
    void onExtremes(Block & block, ASTPtr parsed_query);
    void onReceiveExceptionFromServer(std::unique_ptr<Exception> && e);
    void onProfileInfo(const ProfileInfo & profile_info);
    void onEndOfStream();
    void onProfileEvents(Block & block);
    void sendData(Block & sample, const ColumnsDescription & columns_description, ASTPtr parsed_query);
    void sendDataFrom(ReadBuffer & buf, Block & sample,
                      const ColumnsDescription & columns_description, ASTPtr parsed_query, bool have_more_data = false);
    void sendDataFromPipe(Pipe && pipe, ASTPtr parsed_query, bool have_more_data = false);
    void sendDataFromStdin(Block & sample, const ColumnsDescription & columns_description, ASTPtr parsed_query);
    void sendExternalTables(ASTPtr parsed_query);
    void initOutputFormat(const Block & block, ASTPtr parsed_query);
    void initLogsOutputStream();
    String prompt() const;
    void resetOutput();
    void parseAndCheckOptions(OptionsDescription & options_description, po::variables_map & options, Arguments & arguments);
    void updateSuggest(const ASTPtr & ast);
    void initQueryIdFormats();
protected:
    static bool isSyncInsertWithData(const ASTInsertQuery & insert_query, const ContextPtr & context);
    bool processMultiQueryFromFile(const String & file_name);
    bool is_interactive = false; 
    bool is_multiquery = false;
    bool delayed_interactive = false;
    bool echo_queries = false; 
    bool ignore_error = false; 
    bool print_time_to_stderr = false;