Es gibt eine einfachere Methode, die hässlich ist, aber meiner Meinung nach technisch korrekt ist:Extrahieren Sie den größtmöglichen Slice aus dem Array, im Gegensatz zum exakten Slice mit berechneten Grenzen. Sie vermeidet die beiden Funktionsaufrufe.
Beispiel:
select ('[5:7]={1,2,3}'::int[])[-2147483648:2147483647];
ergibt:
int4 --------- {1,2,3}