Fix contrib/ltree's subpath() with negative offset.
authorTom Lane <[email protected]>
Sat, 1 Nov 2025 17:25:42 +0000 (13:25 -0400)
committerTom Lane <[email protected]>
Sat, 1 Nov 2025 17:25:42 +0000 (13:25 -0400)
commitff8aba65d463b144db7c081181b5ccf6eaaf1af4
tree7415692122eeb385d663f0117fa370ea0db61154
parent2648eab3779b0204368f785f9df84de01270e537
Fix contrib/ltree's subpath() with negative offset.

subpath(ltree,offset,len) now correctly errors when given an offset
less than -n, where n is the number of labels in the given ltree.
There was a duplicate block of code that allowed an offset as low
as -2n.  The documentation says no such thing, so this must have
been a copy-and-paste error in the original ltree patch.

While here, avoid redundant calculation of "end" and write
LTREE_MAX_LEVELS rather than its hard-coded value.

Author: Marcus Gartner <[email protected]>
Reviewed-by: Tom Lane <[email protected]>
Discussion: https://postgr.es/m/CAAUGV_SvBO9gWYbaejb9nhe-mS9FkNP4QADNTdM3wdRhvLobwA@mail.gmail.com
contrib/ltree/expected/ltree.out
contrib/ltree/ltree_op.c
contrib/ltree/sql/ltree.sql