AST-based query fuzzer should randomly modify data types in CREATE TABLE queries, mostly by wrapping in Nullable, Array and LowCardinality.
if (orig_ast->as<ASTUseQuery>())
    {
        return true;
    }
    
    
    
    
    
    
    
    
    
    
    
    
    size_t this_query_runs = query_fuzzer_runs;
    if (orig_ast->as<ASTInsertQuery>() ||
        orig_ast->as<ASTCreateQuery>() ||
        orig_ast->as<ASTDropQuery>() ||
        orig_ast->as<ASTSetQuery>())
    {
        this_query_runs = 1;
    }
    String query_to_execute;
    ASTPtr parsed_query;
    ASTPtr fuzz_base = orig_ast;
    for (size_t fuzz_step = 0; fuzz_step < this_query_runs; ++fuzz_step)
    {
        fmt::print(stderr, "Fuzzing step {} out of {}\n", fuzz_step, this_query_runs);