Robert Haas <robertmhaas@gmail.com> writes:
> I'm going to say this one more time: I really, really, really think
> you need to avoid trying to convert the partition bounds to a common
> type. I said before that the infrastructure to do that is not present
> in our type system, and I'm pretty sure that statement is 100%
> correct. The fact that you can find other cases where we do something
> sorta like that but in a different case with different requirements
> doesn't make that false.
It's not just a matter of lack of infrastructure: the very attempt is
flawed, because in some cases there simply isn't a supertype that can
hold all values of both types. An easy counterexample is float8 vs
numeric: you can't convert float8 'Infinity' to numeric, but also there
are values of numeric that can't be converted to float8 without overflow
and/or loss of precision.
The whole business of precision loss makes things very touchy for almost
anything involving float and a non-float type, actually.
What I'm going to ask one more time, though, is why we are even discussing
this. Surely the partition bounds of a partitioned table must all be of
the same type already. If there is a case where they are not, that is
a bug we had better close off before v10 ships, not a feature that we
need to write a lot of code to accommodate.
regards, tom lane