Patch attached, also available at
http://www.rhodiumtoad.org.uk/junk/hstore_20090324.patch.txt
The user-visible changes are:
- removal of previous 65535-byte limit on keys/values; both keys and
values can now be as long as desired, within the 1GB limit for the
whole hstore value (though you'll find a lot of stuff errors if
you have hstores over 500MB, so don't try it).
- support for btree and hash opclasses (allows hstores to be
compared for equality, aggregated, and have UNIQUE indexes)
- binary I/O now supported
- many new functions and operators:
hstore -> text[] returns text[] (slice to value array)
hstore => text[] returns hstore (slice to new hstore)
hstore ?| text[] returns boolean (check for any of a list of keys)
hstore ?& text[] returns boolean (check for all of a list of keys)
hstore - text returns hstore (delete one element)
hstore - text[] returns hstore (delete many elements)
hstore - hstore returns hstore (delete matching pairs)
text[] => text[] returns hstore (construct from key/value arrays)
hstore = hstore returns hstore (equality)
hstore <> hstore returns hstore (inequality)
record #= hstore returns record (see populate_record)
- GiST and GIN support for ?| and ?& operators
- conversions between hstore and record values:
hstore(record) - construct an hstore from a record
populate_record(record,hstore)
- fill in fields of a record as specified by an hstore
(actually it's (anyelement,hstore) but it errors out if
the parameter isn't composite)
By popular demand, a version of this will go up on pgfoundry for use
with 8.3 etc.
--
Andrew (irc:RhodiumToad)