Abort is triggered in debug build due to logical error.

```
CREATE TABLE A(k UInt32, t UInt32, a UInt64) ENGINE = MergeTree() ORDER BY (k, t);
INSERT INTO A(k,t,a) VALUES (1,101,1),(1,102,2),(1,103,3),(1,104,4),(1,105,5);

CREATE TABLE B(k UInt32, t UInt32, b UInt64) ENGINE = MergeTree() ORDER BY (k, t);
INSERT INTO B(k,t,b) VALUES (1,102,2), (1,104,4);

SELECT 
    (257, NULL, NULL), 
    (1, -2), 
    (-2, 7), 
    ('102.5', '0.03', NULL, NULL, NULL), 
    A.k, 
    toString((10, 0), 10.000100135803223), 
    A.a, 
    B.b, 
    toString(B.t), 
    B.k
FROM A
ASOF INNER JOIN B ON (A.k = B.k) AND NULL AND greaterOrEquals(B.t)
ORDER BY tuple(A.k) ASC;


Received exception from server (version 20.7.1):
Code: 1001. DB::Exception: Received from localhost:9000. DB::Exception: St12out_of_range: vector. 
```

{
    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