On 11/14/2013 05:06 PM, Merlin Moncure wrote:
> On Thu, Nov 14, 2013 at 9:42 AM, Hannu Krosing <hannu@2ndquadrant.com> wrote:
>> This is supported by the fact that current functions on json-source
>> treat it as json-object (for example key lookup gives you the value
>> of latest key and not a list of all matching key values).
> yeah. hm. that's a good point.
>
> Maybe there's a middle ground here: I bet the compatibility issues
> would be minimized to an acceptable level if the 'xxx_to_json'
> functions maintained their current behaviors; they would construct the
> json type in a special internal mode that would behave like the
> current type does.
Do you have any xxx_to_json usage which can generate a field with
multiple equal keys ?
Or is it just about preserving order ?
> In other words, the marshalling into binary
> structure could happen when:
>
> *) stored do a column in a table
> *) when any modifying routine is called, updating a key, value, etc
> *) manually via a function
>
> but not at cast time. This preserves compatibility for the important
> points and allows serialization of structures that are difficult with
> the binary mode variant.
Seems like this would not play nice with how PostgreSQL type system work
in general, but could be a way forward if you say that you really do not
need
to store the order-preserving, multi-valued json.
But in this case it could also be possible for these function to just
generate
json-format "text", and with proper casts this would act exactly as you
describe
above, no ?
--
Hannu Krosing
PostgreSQL Consultant
Performance, Scalability and High Availability
2ndQuadrant Nordic OÜ