Re: Some questions about the array. - Mailing list pgsql-hackers

From Alexander Korotkov
Subject Re: Some questions about the array.
Date
Msg-id CAPpHfdug7SGK8UE757rgiC9kvbBSsdYfWCuM1Qe1pxpYhiNcaw@mail.gmail.com
Whole thread Raw
In response to Re: Some questions about the array.  (Andrew Dunstan <andrew@dunslane.net>)
List pgsql-hackers
On Fri, Oct 9, 2015 at 6:27 PM, Andrew Dunstan <andrew@dunslane.net> wrote:
On 10/09/2015 08:02 AM, YUriy Zhuravlev wrote:
We were some of the issues associated with the behavior of arrays.
1. We would like to implement arrays negative indices (from the end) like in
Python or Ruby: arr[-2]  or arr[1: -1]
but as an array can be indexed in the negative area so it probably can not be
done.
2. We would like to add the ability be omitted boundaries in the slice.
Example: arr[2:] or arr[:2]. But there was a problem with the update of an
empty array:
arr[1:][1:] = {1,2,3,4,5,6} can be interpreted as
arr[1:3][1:2] or arr[1:2] [1:3] or [1:1], [1:6]

What is the history of the emergence of such arrays? Maybe something can be
improved?

P.S. I would like List datatype as in Python.  Is there any fundamental
objections? Or we just did not have the time and enthusiasm before?
The current implementation I would call vectors or matrices but not arrays.
IMHO



The name array is now far too baked in to change it.

jsonb and json arrays have many of the characteristics you seem to want. They are always 0-based and negative indexes count from the end. They also don't have to be regular, unlike our native arrays.

jsonb and json arrays support very limited number of types. Casting other datatypes to/from text is an option, but it is both awkward and not space-compact.

Omitted boundaries in the slice looks nice for me. Considering problem with empty array, current behaviour of empty array updating doesn't look consistent for me.
When updating non-empty array its boundaries isn't extending. If one update non-empty array out of its boundaries then he get an error "ERROR:  array subscript out of range".
If we extrapolate this logic to empty arrays then we this error should be thrown on any update of empty array. Despite this, we allow any update of empty array.

------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company 

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Support for N synchronous standby servers - take 2
Next
From: David Christensen
Date:
Subject: Re: [PATCH] Teach Catalog.pm how many attributes there should be per DATA() line