On 5/25/21 4:10 PM, Tom Lane wrote:
> Magnus Hagander <mag...@hagander.net> writes:
>> On Tue, May 25, 2021 at 12:55 PM Aleksander Alekseev
>> <aleksan...@timescale.com> wrote:
>>> Back in 2016 while being at PostgresPro I developed the ZSON extension [1]. 
>>> The extension introduces the new ZSON type, which is 100% compatible with 
>>> JSONB but uses a shared dictionary of strings most frequently used in given 
>>> JSONB documents for compression.
>> If the extension is mature enough, why make it an extension in
>> contrib, and not instead either enhance the existing jsonb type with
>> it or make it a built-in type?
> IMO we have too d*mn many JSON types already.  If we can find a way
> to shoehorn this optimization into JSONB, that'd be great.  Otherwise
> I do not think it's worth the added user confusion.
>
> Also, even if ZSON was "100% compatible with JSONB" back in 2016,
> a whole lot of features have been added since then.  Having to
> duplicate all that code again for a different data type is not
> something I want to see us doing.  So that's an independent reason
> for wanting to hide this under the existing type not make a new one.



I take your point. However, there isn't really any duplication. It's
handled by this:


    CREATE FUNCTION jsonb_to_zson(jsonb)
        RETURNS zson
        AS 'MODULE_PATHNAME'
        LANGUAGE C STRICT IMMUTABLE;

    CREATE FUNCTION zson_to_jsonb(zson)
        RETURNS jsonb
        AS 'MODULE_PATHNAME'
        LANGUAGE C STRICT IMMUTABLE;

    CREATE CAST (jsonb AS zson) WITH FUNCTION jsonb_to_zson(jsonb) AS
    ASSIGNMENT;
    CREATE CAST (zson AS jsonb) WITH FUNCTION zson_to_jsonb(zson) AS
    IMPLICIT;


cheers


andrew


-- 

Andrew Dunstan
EDB: https://www.enterprisedb.com



Reply via email to