On Sun, 2011-06-19 at 21:29 +0200, Florian Pflug wrote:
> If I'm not mistaken about this, that would imply that we also cannot
> have two range types with the same base type, the same opclass,
> but different collations. Which seems rather unfortunate... In fact,
> if that's true, maybe restricing range types to the database collation
> would be best...
Yes, we cannot have two range types with the same base type. That is a
consequence of the polymorphic type system, which needs to be able to
determine the range type given the base type.
A workaround is to use domains. That is effective, but awkward. For
instance, given: CREATE DOMAIN textdomain AS text; CREATE TYPE textdomainrange AS RANGE (subtype=textdomain);
then: '[a,z)'::textdomainrange @> 'b'::textdomain
would work, but: '[a,z)'::textdomainrange @> 'b'
would not, which would be annoying.
I don't see a way around this. It's not a collation problem, but a
general "multiple range types with the same subtype" problem.
I don't think there's much benefit in restricting it to the DB
collation. If someone really needs a different collation (or opclass,
for that matter), it might as well be allowed, even if you have to do
extra type annotations.
Regards,Jeff Davis