21.5.1.6605

```sql
create table bftest (k Int64, x Array(Int64), index ix1(x) TYPE bloom_filter GRANULARITY 3) 
Engine=MergeTree order by k;

insert into bftest select number, 
    arrayMap(i->rand64()%565656, range(10)) from numbers(10000000);
insert into bftest select number, 
    arrayMap(i->rand64()%565656, range(10)) from numbers(100000000);

###  hasAny(x, [42,-42])
select count() from bftest where hasAny(x, [42,-42]);
Elapsed: 0.909 sec. Processed 110.00 million rows

### has (x, 42) or has(x, -42)
select count() from bftest where has (x, 42) or has(x, -42);
Elapsed: 0.143 sec. Processed 6.55 million rows

```
}
        if (arguments.size() != 2)
            return false;
        if (functionIsInOrGlobalInOperator(function->name))
        {
            if (const auto & prepared_set = getPreparedSet(arguments[1]))
            {
                if (traverseASTIn(function->name, arguments[0], prepared_set, out))
                    maybe_useful = true;
            }
        }
        else if (function->name == "equals" || function->name  == "notEquals" || function->name == "has" || function->name == "indexOf")
        {
            Field const_value;
            DataTypePtr const_type;
            if (KeyCondition::getConstant(arguments[1], block_with_constants, const_value, const_type))
            {
                if (traverseASTEquals(function->name, arguments[0], const_type, const_value, out, parent))
                    maybe_useful = true;
            }
            else if (KeyCondition::getConstant(arguments[0], block_with_constants, const_value, const_type))
            {
                if (traverseASTEquals(function->name, arguments[1], const_type, const_value, out, parent))
                    maybe_useful = true;
            }
        }
    }
    return maybe_useful;
}
bool MergeTreeIndexConditionBloomFilter::traverseASTIn(