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)
{
    auto syntax_result = TreeRewriter(context).analyze(node, all_columns);
    Block block_with_constants = KeyCondition::getBlockWithConstants(node, syntax_result, context);
    InDepthNodeVisitor<ReplacingConstantExpressionsMatcherNumOrStr, true> visitor(block_with_constants);
    visitor.visit(node);
}
void dropAliases(ASTPtr & node)
{
    DropAliasesMatcher::Data data;
    InDepthNodeVisitor<DropAliasesMatcher, true> visitor(data);
    visitor.visit(node);
}
bool isCompatible(const IAST & node)
{
    if (const auto * function = node.as<ASTFunction>())
    {
        if (function->parameters)   
            return false;
        if (!function->arguments)
            throw Exception("Logical error: function->arguments is not set", ErrorCodes::LOGICAL_ERROR);
        String name = function->name;
        if (!(name == "and"
            || name == "or"
            || name == "not"
            || name == "equals"
            || name == "notEquals"
            || name == "less"
            || name == "greater"
            || name == "lessOrEquals"