**Describe the bug**
It's not possible to compare Decimal and Float values. But actually both of them point to some specific value on real number line, so we can compare and that wouldn't produce any precision loss.

**How to reproduce**
Clickhouse 21.5
```
SELECT toDecimal32('11.00', 2) > 1.

Query id: f2c1cba1-748e-42ea-83ac-e117b542d576


0 rows in set. Elapsed: 0.002 sec.

Received exception from server (version 21.5.1):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: No operation greater between Decimal(9, 2) and Float64: While processing toDecimal32('11.00', 2) > 1..
```



Loosely related https://github.com/ClickHouse/ClickHouse/issues/5690
throw Exception("Cannot compare tuples of different sizes.", ErrorCodes::BAD_ARGUMENTS);
        if (result_type->onlyNull())
            return result_type->createColumnConstWithDefaultValue(input_rows_count);
        ColumnsWithTypeAndName x(tuple_size);
        ColumnsWithTypeAndName y(tuple_size);
        const auto * x_const = checkAndGetColumnConst<ColumnTuple>(c0.column.get());
        const auto * y_const = checkAndGetColumnConst<ColumnTuple>(c1.column.get());
        Columns x_columns;
        Columns y_columns;
        if (x_const)
            x_columns = convertConstTupleToConstantElements(*x_const);
        else
            x_columns = assert_cast<const ColumnTuple &>(*c0.column).getColumnsCopy();
        if (y_const)
            y_columns = convertConstTupleToConstantElements(*y_const);
        else
            y_columns = assert_cast<const ColumnTuple &>(*c1.column).getColumnsCopy();
        for (size_t i = 0; i < tuple_size; ++i)
        {
            x[i].type = static_cast<const DataTypeTuple &>(*c0.type).getElements()[i];
            y[i].type = static_cast<const DataTypeTuple &>(*c1.type).getElements()[i];
            x[i].column = x_columns[i];
            y[i].column = y_columns[i];
        }
        return executeTupleImpl(x, y, tuple_size, input_rows_count);
    }
    ColumnPtr executeTupleImpl(const ColumnsWithTypeAndName & x,
                          const ColumnsWithTypeAndName & y, size_t tuple_size,
                          size_t input_rows_count) const;
    ColumnPtr executeTupleEqualityImpl(