```
SELECT * FROM t0 ASOF LEFT JOIN t1 ON (t1.x = t0.x) AND greater(('\0llall\0ll\0ll\0llall\0llall\0llall\0llall\0llall\0llall\0llall\0llall\0llall\0llall\0ll\0ll\0llall\0llall\0llall', x, x, y), t0.y, t1.y)
```

{
    size_t table_number = 0;
    for (auto & ident : identifiers)
    {
        const ASTIdentifier * identifier = unrollAliases(ident, data.aliases);
        if (!identifier)
            continue;
        
        
        auto opt = IdentifierSemantic::getMembership(*identifier);
        size_t membership = opt ? (*opt + 1) : 0;
        if (!membership)
        {
            const String & name = identifier->name;
            bool in_left_table = data.left_table.hasColumn(name);
            bool in_right_table = data.right_table.hasColumn(name);
            if (in_left_table && in_right_table)
            {
                
                if (auto original_name = IdentifierSemantic::uncover(*identifier))
                {
                    auto match = IdentifierSemantic::canReferColumnToTable(*original_name, data.right_table.table);
                    if (match == IdentifierSemantic::ColumnMatch::NoMatch)
                        in_right_table = false;
                    in_left_table = !in_right_table;
                }
                else