table A:
![image](https://user-images.githubusercontent.com/17606375/105842341-f9b40580-6010-11eb-8507-6ea46fe814c8.png)
table B:
![image](https://user-images.githubusercontent.com/17606375/105842364-0173aa00-6011-11eb-94a3-47c162dd40fd.png)

select 
  "T_8FB5CF"."id1" "__fcol_0", 
  "T_8FB5CF"."id2" "__fcol_1", 
  "T_8FB5CF"."id3" "__fcol_2", 
  "T_8FB5CF"."id4" "__fcol_3", 
  "T_8FB5CF"."id5" "__fcol_4", 
  "T_8FB5CF"."date" "__fcol_5", 
  "T_8FB5CF"."shuzhi" "__fcol_6", 
  "T_8FB5CF"."数值2" "__fcol_7"
from "A1"."B" "T_8FB5CF"
  left outer join "A1"."A" "T_8C7546"
  on "T_8FB5CF"."id2" = "T_8C7546"."id2"
where (
  "T_8C7546"."id2" = ''
  or "T_8C7546"."id2" is null
)
limit 5000
ClickHouse exception, code: 47, host: 192.168.5.67, port: 8123; Code: 47, e.displayText() = DB::Exception: Missing columns: 'T_8C7546.id2' while processing query: '(T_8C7546.id2 = '') OR isNull(T_8C7546.id2)', required columns: 'T_8C7546.id2', source columns: '数值2' 'shuzhi' 'date' 'id5' 'id3' 'id2' 'id4' 'id1' (version 20.5.4.40)
const SelectQueryInfo & query_info,
    const NamesAndTypesList & available_columns,
    IdentifierQuotingStyle identifier_quoting_style,
    const String & database,
    const String & table,
    const Context & context)
{
    auto clone_query = query_info.query->clone();
    const Names used_columns = query_info.syntax_analyzer_result->requiredSourceColumns();
    auto select = std::make_shared<ASTSelectQuery>();
    select->replaceDatabaseAndTable(database, table);
    auto select_expr_list = std::make_shared<ASTExpressionList>();
    for (const auto & name : used_columns)
        select_expr_list->children.push_back(std::make_shared<ASTIdentifier>(name));
    select->setExpression(ASTSelectQuery::Expression::SELECT, std::move(select_expr_list));
    /** If there was WHERE,
      * copy it to transformed query if it is compatible,
      * or if it is AND expression,
      * copy only compatible parts of it.
      */
    ASTPtr original_where = clone_query->as<ASTSelectQuery &>().where();
    if (original_where)
    {
        replaceConstantExpressions(original_where, context, available_columns);
        if (isCompatible(*original_where))
        {
            select->setExpression(ASTSelectQuery::Expression::WHERE, std::move(original_where));
        }
        else if (const auto * function = original_where->as<ASTFunction>())
        {