hstore patch, part 2

Started by Andrew Gierthalmost 17 years ago7 messages
#1Andrew Gierth
andrew@tao11.riddles.org.uk
1 attachment(s)

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)

Attachments:

hstore_20090324.patch.gzapplication/octet-streamDownload
#2Andrew Gierth
andrew@tao11.riddles.org.uk
In reply to: Andrew Gierth (#1)
Re: hstore patch, part 2

"Andrew" == Andrew Gierth <andrew@tao11.riddles.org.uk> writes:

Andrew> - many new functions and operators:

Andrew> hstore = hstore returns hstore (equality)
Andrew> hstore <> hstore returns hstore (inequality)

Of course those should be

hstore = hstore returns boolean (equality)
hstore <> hstore returns boolean (inequality)

(they are correct in the code)

--
Andrew.

#3David E. Wheeler
david@kineticode.com
In reply to: Andrew Gierth (#1)
Re: hstore patch, part 2

On Mar 24, 2009, at 2:51 PM, Andrew Gierth wrote:

By popular demand, a version of this will go up on pgfoundry for use
with 8.3 etc.

Wow. Nice stuff! I hope it's not too late for 8.4…

Best,

David

#4Josh Berkus
josh@agliodbs.com
In reply to: David E. Wheeler (#3)
Re: hstore patch, part 2

On 3/24/09 3:38 PM, David E. Wheeler wrote:

On Mar 24, 2009, at 2:51 PM, Andrew Gierth wrote:

By popular demand, a version of this will go up on pgfoundry for use
with 8.3 etc.

Wow. Nice stuff! I hope it's not too late for 8.4…

It is for anything but the undocumented size limits, which are a bug.
Let's please not add any more patches to 8.4.

--Josh

#5Andrew Gierth
andrew@tao11.riddles.org.uk
In reply to: Andrew Gierth (#1)
Re: hstore patch, part 2

"David" == "David E Wheeler" <david@kineticode.com> writes:

On Mar 24, 2009, at 2:51 PM, Andrew Gierth wrote:

By popular demand, a version of this will go up on pgfoundry for
use with 8.3 etc.

David> Wow. Nice stuff! I hope it's not too late for 8.4…

I personally have no expectation of it getting into 8.4. (If someone
decides it's a nice no-brainer that could go in, well that's fine by
me, but I really don't think it likely.)

In the absence of feedback to the contrary, I will submit it for the
first commitfest of 8.5, and maintain the pgfoundry version for 8.3
and 8.4.

--
Andrew (irc:RhodiumToad)

#6Bruce Momjian
bruce@momjian.us
In reply to: Andrew Gierth (#5)
Re: hstore patch, part 2

Andrew Gierth wrote:

"David" == "David E Wheeler" <david@kineticode.com> writes:

On Mar 24, 2009, at 2:51 PM, Andrew Gierth wrote:

By popular demand, a version of this will go up on pgfoundry for
use with 8.3 etc.

David> Wow. Nice stuff! I hope it's not too late for 8.4?

I personally have no expectation of it getting into 8.4. (If someone
decides it's a nice no-brainer that could go in, well that's fine by
me, but I really don't think it likely.)

In the absence of feedback to the contrary, I will submit it for the
first commitfest of 8.5, and maintain the pgfoundry version for 8.3
and 8.4.

Andrew, do you want to add it to the 8.5 commitfest:

http://wiki.postgresql.org/wiki/CommitFestInProgress

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#7Andrew Gierth
andrew@tao11.riddles.org.uk
In reply to: Bruce Momjian (#6)
Re: hstore patch, part 2

"Bruce" == Bruce Momjian <bruce@momjian.us> writes:

In the absence of feedback to the contrary, I will submit it for
the first commitfest of 8.5, and maintain the pgfoundry version
for 8.3 and 8.4.

Bruce> Andrew, do you want to add it to the 8.5 commitfest:

I will do so soon but I need to revise it slightly first to account
for the GIN changes.

--
Andrew (irc:RhodiumToad)