On Sun, Aug 15, 2010 at 11:47 PM, Andrew Dunstan <andrew@dunslane.net> wrote:
>
> If BSON is simply in effect an efficient encoding of JSON, then it's not
> clear to me that we would want another type at all. Rather, we might want to
> consider storing the data in this supposedly more efficient format, and
> maybe also some conversion routines.
An issue is that the current JSON data type implementation preserves
the original text (meaning if you say '[1,2,"\u0020" ]'::JSON, it
will yield '[1,2,"\u0020" ]' rather than '[1,2," "]' . I haven't
researched BSON much at all, but I seriously doubt that part of its
spec includes handling external JSON encoding details like whitespace
and superfluous escapes.
Even though I spent a long time implementing it, the original text
preservation feature should be dropped, in my opinion. Users tend to
care more about the data inside of a JSON value rather than how it's
encoded, and replacement of values can have funky consequences on
indentation when working with indented JSON text (similar to how
pasting in a text editor puts pasted content at the wrong indent
level).
By dropping original text preservation, in the future (or now), JSON
could be encoded in BSON (or a more efficient format) in the database
rather than in JSON-encoded text.
Also, an idea would be to make json_send and json_recv (binary JSON
send/receive) use BSON rather than JSON-encoded text, as
sending/receiving JSON-encoded text is exactly what text send/receive
do.
Joey Adams