From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> |
Cc: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Ongoing issues with representation of empty arrays |
Date: | 2017-04-19 20:10:23 |
Message-ID: | CAKFQuwact6-KWtkGEtC66JdjO89r66L7E1Wm7RXb4+FGLGgXow@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Apr 10, 2017 at 4:57 PM, Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
wrote:
> The distinction between the standard representation of '{}' as an array
> with zero dimensions and nonstandard representations as a 1-dimensional
> array with zero elements has come up in a couple of contexts on the IRC
> channel recently.
>
Just to add to the listing of annoyances.
The following makes me want some way, in SQL, to create an empty
1-dimensional array ...
SELECT array_agg(e_arr)
FROM ( VALUES (ARRAY['1']::text[]), (ARRAY[]::text[]) ) v (e_arr);
--ERROR: cannot accumulate arrays of different dimensionality
We moved the goals posts nicely with bac27394a1c but not being able to mix
empty and non-empty arrays is problematic. Ideally an empty array could
become an array of any dimension on-the-fly so that if even explicitly
dimensioned input to array_agg is 1-dimensioned then all empty arrays would
be promoted to 1-dimension and the resultant output would become two
dimensional. unnest'ing such a structure would pose its own challenges
though...
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Merlin Moncure | 2017-04-19 20:36:16 | Re: Ongoing issues with representation of empty arrays |
Previous Message | Andres Freund | 2017-04-19 20:08:28 | Re: Relation cache invalidation on replica |