Il existe une méthode plus simple qui est moche, mais je pense que c'est techniquement correct :extraire la plus grande tranche possible du tableau, par opposition à la tranche exacte avec des limites calculées. Cela évite les deux appels de fonction.
Exemple :
select ('[5:7]={1,2,3}'::int[])[-2147483648:2147483647];
donne :
int4 --------- {1,2,3}