```
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.
```
const DataTypes & tuple_types = type_tuple->getElements();
            size_t tuple_size = tuple_columns.size();
            for (size_t i = 0; i < tuple_size; ++i)
                columns_of_key_columns.insert({ tuple_columns[i], tuple_types[i], "" });
        }
        else
            columns_of_key_columns.insert(left_arg);
        return set->execute(columns_of_key_columns, negative);
    }
};
template<bool ignore_set>
void registerFunctionsInImpl(FunctionFactory & factory)
{
    factory.registerFunction<FunctionIn<false, false, true, ignore_set>>();
    factory.registerFunction<FunctionIn<false, true, true, ignore_set>>();
    factory.registerFunction<FunctionIn<true, false, true, ignore_set>>();
    factory.registerFunction<FunctionIn<true, true, true, ignore_set>>();
    factory.registerFunction<FunctionIn<false, false, false, ignore_set>>();
    factory.registerFunction<FunctionIn<false, true, false, ignore_set>>();
    factory.registerFunction<FunctionIn<true, false, false, ignore_set>>();
    factory.registerFunction<FunctionIn<true, true, false, ignore_set>>();
}
}
void registerFunctionsIn(FunctionFactory & factory)
{
    registerFunctionsInImpl<false>(factory);
    registerFunctionsInImpl<true>(factory);
}
}