On Jun 12, 2010, at 14:57 , Tom Lane wrote:
> But actually, there's another issue here: hstore defines not one but
> three => operators:
>
> text => text yields hstore (with 1 element)
> text[] => text[] yields hstore (with N elements)
> hstore => text[] yields hstore (subset)
>
> It's reasonable to say that the first two are bad design, but I'm
> a bit less willing to say that the last one is. What shall we
> do with that?
Hm, the last one seems to be more akin to hstore - text yields hstore (key removed) hstore - text[]
yields hstore (keys in array removed) hstore - hstore yields hstore (keys in hstore removed)
since it's not a constructor like the first two, but rather an (intersection-like) operation on an existing hstore.
Inspired by the already existing hstore ?& text[] yields boolean (true if set of keys subset of array)
I suggest hstore & text[]
as a replacement.
best regards,
Florian Pflug