`SELECT ... WHERE match(key, '^prefix...')`
should use index similarly to
`SELECT ... WHERE key LIKE 'prefix%'`
{
    switch (node.type)
    {
        case (ActionsDAG::ActionType::INPUT):
            writeString(node.result_name, out);
            break;
        case (ActionsDAG::ActionType::COLUMN):
        {
            
            
            if (const auto * column_const = typeid_cast<const ColumnConst *>(node.column.get()))
                writeString(applyVisitor(FieldVisitorToString(), column_const->getField()), out);
            
            else
                writeString(node.result_name, out);
            break;
        }
        case (ActionsDAG::ActionType::ALIAS):
            appendColumnNameWithoutAlias(*node.children.front(), out, legacy);
            break;
        case (ActionsDAG::ActionType::ARRAY_JOIN):
            writeCString("arrayJoin(", out);