AST-based query fuzzer should randomly modify data types in CREATE TABLE queries, mostly by wrapping in Nullable, Array and LowCardinality.
{
    if (column_like.empty())
    {
        return;
    }
    std::string old_alias = ast->tryGetAlias();
    ast = getRandomColumnLike();
    ast->setAlias(old_alias);
}
void QueryFuzzer::replaceWithTableLike(ASTPtr & ast)
{
    if (table_like.empty())
    {
        return;
    }
    ASTPtr new_ast = table_like[fuzz_rand() % table_like.size()]->clone();
    std::string old_alias = ast->tryGetAlias();
    new_ast->setAlias(old_alias);
    ast = new_ast;
}
void QueryFuzzer::fuzzOrderByElement(ASTOrderByElement * elem)