Support negative indexes in split_part().
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 13 Nov 2020 18:49:48 +0000 (13:49 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 13 Nov 2020 18:49:48 +0000 (13:49 -0500)
commitec0294fb2c8287fd673c57701cdcf6c6396b2f60
treefa0351c7913ee59a410776561e7328aeb6805299
parent3bf44303b954269558c30458df8d02fb99c40c67
Support negative indexes in split_part().

This provides a handy way to get, say, the last field of the string.
Use of a negative index in this way has precedent in the nearby
left() and right() functions.

The implementation scans the string twice when N < -1, but it seems
likely that N = -1 will be the huge majority of actual use cases,
so I'm not really excited about adding complexity to avoid that.

Nikhil Benesch, reviewed by Jacob Champion; cosmetic tweakage by me

Discussion: https://postgr.es/m/cbb7f861-6162-3a51-9823-97bc3aa0b638@gmail.com
doc/src/sgml/func.sgml
src/backend/utils/adt/varlena.c
src/test/regress/expected/strings.out
src/test/regress/sql/strings.sql