AST-based query fuzzer should randomly modify data types in CREATE TABLE queries, mostly by wrapping in Nullable, Array and LowCardinality.
else
            msg += fmt::format("ORDER BY or PRIMARY KEY clause is missing. "
                               "Consider using extended storage definition syntax with ORDER BY or PRIMARY KEY clause. "
                               "With deprecated old syntax (highly not recommended) storage {} requires ", args.engine_name);
        if (max_num_params == 0)
            msg += "no parameters";
        if (min_num_params == max_num_params)
            msg += fmt::format("{} parameters: {}", min_num_params, needed_params);
        else
            msg += fmt::format("{} to {} parameters: {}", min_num_params, max_num_params, needed_params);
        msg += getMergeTreeVerboseHelp(is_extended_storage_def);
        throw Exception(msg, ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH);
    }
    if (is_extended_storage_def)
    {
        
        
        size_t arg_idx = 0;
        try
        {
            for (; arg_idx < engine_args.size(); ++arg_idx)
            {
                auto & arg = engine_args[arg_idx];
                auto * arg_func = arg->as<ASTFunction>();
                if (!arg_func)
                    continue;
                
                
                if (arg_func->name == "array" || arg_func->name == "tuple")
                    continue;