**Use case**
mysql repl to clickhouse

**Describe the solution you'd like**
Hope MaterializeMySQL engine can support MySQL prefix index



}
        ASTPtr data_type = declare_column->data_type;
        if (is_unsigned)
        {
            auto * data_type_function = data_type->as<ASTFunction>();
            if (data_type_function)
            {
                String type_name_upper = Poco::toUpper(data_type_function->name);
                
                if (type_name_upper.find("INT") != std::string::npos && !endsWith(type_name_upper, "SIGNED")
                    && !endsWith(type_name_upper, "UNSIGNED"))
                    data_type_function->name = type_name_upper + " UNSIGNED";
            }
        }
        if (is_nullable)
            data_type = makeASTFunction("Nullable", data_type);
        columns_name_and_type.emplace_back(declare_column->name, DataTypeFactory::instance().get(data_type));
    }
    return columns_name_and_type;
}
static NamesAndTypesList getNames(const ASTFunction & expr, const Context & context, const NamesAndTypesList & columns)
{
    if (expr.arguments->children.empty())
        return NamesAndTypesList{};
    ASTPtr temp_ast = expr.clone();
    auto syntax = TreeRewriter(context).analyze(temp_ast, columns);
    auto expression = ExpressionAnalyzer(temp_ast, syntax, context).getActions(false);
    return expression->getRequiredColumnsWithTypes();
}
static NamesAndTypesList modifyPrimaryKeysToNonNullable(const NamesAndTypesList & primary_keys, NamesAndTypesList & columns)