Currently arrayCompact doesn't work with tuples like other array functions arraySort or arrayFilter.
Please consider adding such functionality to arrayCompact.
We need something like this... SELECT arrayCompact( (x,y) -> y, arr1, arr2) AS v

Current behavior:
`SELECT
    [('a', 1), ('a', 2), ('c', 3), ('a', 2)] AS arr,
    arrayCompact(x -> (x.1), arr) AS v,
    [('a', 1), ('c', 3), ('a', 2)] AS expected_v
`
![изображение](https://user-images.githubusercontent.com/33029350/93028896-5fca5e00-f617-11ea-9d55-e0a5d3c36697.png)


{
        ColumnPtr res;
        mapped = mapped->convertToFullColumnIfConst();
        if (!(executeType< UInt8 >(mapped, array, res) ||
            executeType< UInt16>(mapped, array, res) ||
            executeType< UInt32>(mapped, array, res) ||
            executeType< UInt64>(mapped, array, res) ||
            executeType< Int8  >(mapped, array, res) ||
            executeType< Int16 >(mapped, array, res) ||
            executeType< Int32 >(mapped, array, res) ||
            executeType< Int64 >(mapped, array, res) ||
            executeType<Float32>(mapped, array, res) ||
            executeType<Float64>(mapped, array, res)) ||
            executeType<Decimal32>(mapped, array, res) ||
            executeType<Decimal64>(mapped, array, res) ||
            executeType<Decimal128>(mapped, array, res))
        {
            executeGeneric(mapped, array, res);
        }
        return res;
    }
};
struct NameArrayCompact { static constexpr auto name = "arrayCompact"; };
using FunctionArrayCompact = FunctionArrayMapped<ArrayCompactImpl, NameArrayCompact>;
void registerFunctionArrayCompact(FunctionFactory & factory)
{
    factory.registerFunction<FunctionArrayCompact>();
}
}