Re: JSON for PG 9.2
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Pavel Stehule <pavel.stehule@gmail.com>
Cc: "David E. Wheeler" <david@kineticode.com>, Claes Jakobsson <claes@surfar.nu>, Dimitri Fontaine <dimitri@2ndquadrant.fr>, Merlin Moncure <mmoncure@gmail.com>, Andrew Dunstan <andrew@dunslane.net>, Magnus Hagander <magnus@hagander.net>, Jan Urbański <wulczer@wulczer.org>, Simon Riggs <simon@2ndquadrant.com>, Joey Adams <joeyadams3.14159@gmail.com>, Bruce Momjian <bruce@momjian.us>, PostgreSQL-development Hackers <pgsql-hackers@postgresql.org>, Jan Wieck <janwieck@yahoo.com>
Date: 2012-01-11T13:33:53Z
Lists: pgsql-hackers
On Wed, Jan 11, 2012 at 1:18 AM, Pavel Stehule <pavel.stehule@gmail.com> wrote: > 2012/1/11 Robert Haas <robertmhaas@gmail.com>: >> On Tue, Dec 20, 2011 at 9:06 PM, David E. Wheeler <david@kineticode.com> wrote: >>> On Dec 20, 2011, at 10:39 AM, Claes Jakobsson wrote: >>>> Are people explicitly asking for a) *JSON* datatype or b) a type that lets you store arbitrary complex semi-untyped data structures? >>> >>> Yes. >>> >>>> if b) then this might get a lot more interesting >>> >>> JSON is the most popular/likely way to represent that, I think. >> >> On that note, here's an updated version of the patch I posted >> upthread, with some regression tests and minimal documentation. > > I like this patch and this feature. > > I see only one issue - there is not functionality that helps generate > JSON in pg. > > What do you think about functions: array_to_json(anyarray), > row_to_json(any) and format_json(text, text, ...) I think we might want all of that stuff, but I doubt there is time to do it for 9.2. Actually, I think the next logical step would be to define equality (is there an official definition of that for JSON?) and build a btree opclass. I believe the code I've already written could be extended to construct an abstract syntax tree for those operations that need it. But we need to make some decisions first. A btree opclass requires a total ordering, so we have to arbitrarily define whether 1 < true, 1 < [1], 1 < "1", etc. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company