AST-based query fuzzer should randomly modify data types in CREATE TABLE queries, mostly by wrapping in Nullable, Array and LowCardinality.
{
            def.frame_end_preceding = fuzz_rand() % 2;
            break;
        }
        default:
            break;
    }
    if (def.frame_type == WindowFrame::FrameType::RANGE
        && def.frame_begin_type == WindowFrame::BoundaryType::Unbounded
        && def.frame_begin_preceding
        && def.frame_end_type == WindowFrame::BoundaryType::Current)
    {
        def.frame_is_default = true; 
    }
    else
    {
        def.frame_is_default = false;
    }
}
void QueryFuzzer::fuzz(ASTs & asts)
{
    for (auto & ast : asts)
    {
        fuzz(ast);
    }
}
struct ScopedIncrement
{
    size_t & counter;
    explicit ScopedIncrement(size_t & counter_) : counter(counter_) { ++counter; }