On 03/08/2012 02:16 PM, Tom Lane wrote:
> "David E. Wheeler"<david@justatheory.com> writes:
>> CREATE OPERATOR CLASS json_ops
>> DEFAULT FOR TYPE JSON USING btree AS
>> OPERATOR 3 = (json, json),
>> FUNCTION 1 json_cmp(json, json);
>> This seems to work.
> Urk. You really ought to provide the whole opclass (all 5 operators).
> I'm not sure what will blow up if you leave it like that, but it won't
> be pretty.
Yeah. Note too that this is at best dubious:
CREATE OR REPLACE FUNCTION json_cmp( json, json ) RETURNS INTEGER LANGUAGE SQL STRICT IMMUTABLE AS
$$ SELECT bttextcmp($1::text, $2::text); $$;
Two pieces of JSON might well be textually different but semantically
identical (e.g. by one having additional non-semantic whitespace).
cheers
andrew