```
milovidov-desktop :) SELECT * FROM (SELECT 'Hello' AS x) PREWHERE toLowCardinality(x) IN ('Hello', 'World')

SELECT *
FROM
(
    SELECT 'Hello' AS x
)
PREWHERE toLowCardinality(x) IN ('Hello', 'World')

Query id: 58d92e01-c67e-4bcc-8b0c-788bb5e1287e


0 rows in set. Elapsed: 0.037 sec. 

Received exception from server (version 21.7.1):
Code: 182. DB::Exception: Received from localhost:9000. DB::Exception: Illegal PREWHERE. 

milovidov-desktop :) SELECT * FROM (SELECT toLowCardinality('Hello') AS x) PREWHERE x IN ('Hello', 'World')

SELECT *
FROM
(
    SELECT toLowCardinality('Hello') AS x
)
PREWHERE x IN ('Hello', 'World')

Query id: 694bbad9-d228-47b8-ad60-c037005c7ee2


0 rows in set. Elapsed: 0.003 sec. 

Received exception from server (version 21.7.1):
Code: 182. DB::Exception: Received from localhost:9000. DB::Exception: Illegal PREWHERE. 

milovidov-desktop :) SELECT * FROM (SELECT toLowCardinality(materialize('Hello')) AS x) PREWHERE x IN ('Hello', 'World')

SELECT *
FROM
(
    SELECT toLowCardinality(materialize('Hello')) AS x
)
PREWHERE x IN ('Hello', 'World')

Query id: fc271924-c17c-457c-8cf8-21d0515388b7


0 rows in set. Elapsed: 0.003 sec. 

Received exception from server (version 21.7.1):
Code: 182. DB::Exception: Received from localhost:9000. DB::Exception: Illegal PREWHERE.
```
{
public:
    
    
    static constexpr auto name = FunctionInName<negative, global, null_is_skipped, ignore_set>::name;
    static FunctionPtr create(ContextPtr)
    {
        return std::make_shared<FunctionIn>();
    }
    String getName() const override
    {
        return name;
    }
    size_t getNumberOfArguments() const override
    {
        return 2;
    }
    DataTypePtr getReturnTypeImpl(const DataTypes & ) const override
    {
        return std::make_shared<DataTypeUInt8>();
    }
    bool useDefaultImplementationForConstants() const override
    {
        
        return !ignore_set;
    }
    bool useDefaultImplementationForNulls() const override { return null_is_skipped; }