20.7
```
SELECT indexOf(['a', 'b', 'c'], toLowCardinality('a'))

┌─indexOf(['a', 'b', 'c'], toLowCardinality('a'))─┐
│                                               1 │
└─────────────────────────────────────────────────┘
```

20.8
```
SELECT indexOf(['a', 'b', 'c'], toLowCardinality('a'))


Received exception from server (version 20.8.3):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Types of array and 2nd argument of function "indexOf" must be identical up to nullability, cardinality, numeric types, or Enum and numeric type. Passed: Array(String) and LowCardinality(String).. 
```

https://github.com/ClickHouse/ClickHouse/pull/12550

/cc @myrrc 

{
        return (executeIntegralImpl<A, Other>(data) || ...);
    }
    /**
     * The internal data type of the first argument (target array), if it's integral, like UInt8, may differ from the
     * second argument, namely, the @e value, so it's possible to invoke the <tt>has(Array(Int8), UInt64)</tt> e.g.
     * so we have to check all possible variants for #Initial and #Resulting types.
     */
    template <class Initial, class Resulting>
    static bool executeIntegralImpl(ExecutionData& data)
    {
        const ColumnVector<Initial> * col_nested = checkAndGetColumn<ColumnVector<Initial>>(&data.left);
        if (!col_nested)
            return false;
        const auto [null_map_data, null_map_item] = data.maps;
        if (data.right.onlyNull())
            Impl::Null<ConcreteAction>::process(
                data.offsets,
                data.result->getData(),
                null_map_data);
        else if (const auto item_arg_const = checkAndGetColumnConst<ColumnVector<Resulting>>(&data.right))
            Impl::Main<ConcreteAction, true, Initial, Resulting>::vector(
                col_nested->getData(),
                data.offsets,
                item_arg_const->template getValue<Resulting>(),