**Describe the bug**
columns('regexp') didn't return all columns by regexp where 3+ joins in query 

**Does it reproduce on recent release?**
version 21.3.4 revision 54447

**How to reproduce**

in query we have 3 columns 'test' but returned only one:

```
select columns('test') from                                                                                                                                                               
(select 1 as id, 'a' as test) a                                                                                                                                                                    
left join (select 1 as id, 'b' as test) b on b.id = a.id                                                                                                                                               
left join (select 1 as id, 'c' as test) c on c.id = a.id;                                                                                                                                               
                                                                                                                               
Query id: 2fc3ebdf-8ec9-4684-af02-3b87bfe18705
                                                   
┌─test─┐                                           
│ c    │                                           
└──────┘                                           
                                                   
1 rows in set. Elapsed: 0.007 sec.
```

but if we change query:

```
select  columns('test'), a.test as t1, b.test as t2, c.test as t3 from 
(select 1 as id, 'a' as test) a 
left join (select 1 as id, 'b' as test) b on b.id = a.id 
left join (select 1 as id, 'c' as test) c on c.id = a.id

Query id: 5bf07e05-ec0e-4017-853d-b7b23b8a6b16

┌─--a.test─┬─--b.test─┬─test─┬─t1─┬─t2─┬─t3─┐
│ a        │ b        │ c    │ a  │ b  │ c  │
└──────────┴──────────┴──────┴────┴────┴────┘

1 rows in set. Elapsed: 0.006 sec.
```
for (size_t table_pos = 0; table_pos < tables_count; ++table_pos)
    {
        auto * table = src_tables[table_pos]->as<ASTTablesInSelectQueryElement>();
        if (table->table_join)
        {
            auto & join = table->table_join->as<ASTTableJoin &>();
            if (join.on_expression)
            {
                std::vector<ASTIdentifier *> on_identifiers;
                CollectColumnIdentifiersVisitor::Data data_on_identifiers(on_identifiers);
                CollectColumnIdentifiersVisitor(data_on_identifiers).visit(join.on_expression);
                identifiers.insert(identifiers.end(), on_identifiers.begin(), on_identifiers.end());
                
                if (table_pos < tables_count - 1)
                {
                    for (auto * ident : on_identifiers)
                    {
                        auto it = data.aliases.find(ident->name());
                        if (!on_aliases.count(ident->name()) && it != data.aliases.end())
                        {
                            auto alias_expression = it->second;
                            alias_pushdown[table_pos].push_back(alias_expression);
                            on_aliases[ident->name()] = alias_expression;
                        }
                    }
                }
            }
            else if (join.using_expression_list)
            {
                CollectColumnIdentifiersVisitor::Data data_using_identifiers(using_identifiers);