Re: Custom Operators Cannot be Found for Composite Type Values - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: Custom Operators Cannot be Found for Composite Type Values
Date
Msg-id 4F59080C.1060201@dunslane.net
Whole thread Raw
In response to Re: Custom Operators Cannot be Found for Composite Type Values  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Custom Operators Cannot be Found for Composite Type Values  ("David E. Wheeler" <david@justatheory.com>)
List pgsql-hackers

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


pgsql-hackers by date:

Previous
From: Noah Misch
Date:
Subject: Re: Collect frequency statistics for arrays
Next
From: "David E. Wheeler"
Date:
Subject: Re: Custom Operators Cannot be Found for Composite Type Values