If name of key column equals in both tables in Storage Join `JOIN ON` trows an error:

```
:) CREATE TABLE t1 (x String) ENGINE = TinyLog;

:) CREATE TABLE t2 (x String) ENGINE = Join(ALL, INNER, x);

:) select * from t1 join t2 USING(x);

Ok.

0 rows in set. Elapsed: 0.036 sec.

:) select * from t1 join t2 ON (t1.x == t2.x);

0 rows in set. Elapsed: 0.026 sec.

Received exception from server (version 21.3.1):
Code: 8. DB::Exception: Received from localhost:9000. DB::Exception: Cannot find column `t2.x` in source stream.

```

If secondary column name match we tables cannot be joined with `USING` too:

```
:) CREATE TABLE t1 (x String, y String) ENGINE = TinyLog;

:) CREATE TABLE t2 (x String, y String) ENGINE = Join(ALL, INNER, x);

:) select * from t1 join t2 USING(x);


0 rows in set. Elapsed: 0.027 sec.

Received exception from server (version 21.3.1):
Code: 8. DB::Exception: Received from localhost:9000. DB::Exception: Cannot find column `t2.y` in source stream.

```
null_map_filter.getData().swap(row_filter);
        const IColumn::Filter & filter = null_map_filter.getData();
        
        for (size_t i = 0; i < required_right_keys.columns(); ++i)
        {
            const auto & right_key = required_right_keys.getByPosition(i);
            const auto & left_name = required_right_keys_sources[i];
            
            if (is_asof_join && right_key.name == key_names_right.back())
                continue;
            const auto & col = block.getByName(left_name);
            bool is_nullable = nullable_right_side || right_key.type->isNullable();
            ColumnPtr thin_column = filterWithBlanks(col.column, filter);
            block.insert(correctNullability({thin_column, col.type, right_key.name}, is_nullable, null_map_filter));
            if constexpr (need_replication)
                right_keys_to_replicate.push_back(block.getPositionByName(right_key.name));
        }
    }
    if constexpr (need_replication)
    {
        std::unique_ptr<IColumn::Offsets> & offsets_to_replicate = added_columns.offsets_to_replicate;
        
        for (size_t i = 0; i < existing_columns; ++i)
            block.safeGetByPosition(i).column = block.safeGetByPosition(i).column->replicate(*offsets_to_replicate);
        
        for (size_t pos : right_keys_to_replicate)
            block.safeGetByPosition(pos).column = block.safeGetByPosition(pos).column->replicate(*offsets_to_replicate);
    }
}
void HashJoin::joinBlockImplCross(Block & block, ExtraBlockPtr & not_processed) const