From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, xtracoder(at)gmail(dot)com, "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: BUG #13884: array_to_json() works incorrectly for non-0-based arrays |
Date: | 2016-01-25 17:46:28 |
Message-ID: | CAKFQuwYR7VedN1ZrmE-_SVQVST+EqJhmTF2sHZkU-5dNrveTuA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Mon, Jan 25, 2016 at 9:57 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> writes:
> > 2016-01-24 11:47 GMT+01:00 <xtracoder(at)gmail(dot)com>:
> >> When postgres array has no elements at the beginning, array_to_json()
> >> generates json array starting at the first initialized value
>
> > It doesn't looks like bug - It hard to say, when is a start of PostgreSQL
> > array and how PostgreSQL arrays should be serialized to JSON. First field
> > in pg array is a first field in JSON array.
>
> The current behavior looks reasonable to me too. Certainly the proposed
> change wouldn't be any more consistent --- what would happen when you had
> elements with subscripts less than 1
> .
>
I'd go with "since json arrays do not have index information attached to
them it is unwise to use them with non-default (i.e., 1-based and present)
PostgreSQL arrays. Its likely to late to actually error in that
situation. If the user really needs to use a non-default array structure
they'd be advised to create their own conversion functions between
json-compatible arrays (1-based with leading nulls) and the PostgreSQL
arrays.
I would say that the current behavior is wrong since there is no way to
round-trip. Any proper solution would at least need a user-specified
option for whether to truncate leading null array positions (which would
suppress the error for using a starting index > 1). Positions <1 should be
outright disallowed - I cannot imagine adding an argument that allows one
to specify a negative starting index.
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Xtra Coder | 2016-01-25 17:47:04 | Re: BUG #13885: float->string conversion loses precision server-side on JDBC connection |
Previous Message | v_bilyak | 2016-01-25 17:09:04 | BUG #13889: psql doesn't exequte correct script |