#36718: Enable JSON negative indexing for Oracle 21c+ using [last-N]
-------------------------------------+-------------------------------------
Reporter: Clifford Gama | Type: New
| feature
Status: new | Component: Database
| layer (models, ORM)
Version: dev | Severity: Normal
Keywords: JSONField array | Triage Stage:
negative indexing | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Follow up to #36085 which added negative indexing for sqlite (as a new
feature for 6.0).
While doing some reading on JSON queries on Oracle, I found that you
[
https://docs.oracle.com/en/database/oracle/oracle-database/21/adjsn/json-
path-expressions.html can index elements from the right] by using
`[last-N]`.
> An array index can also have the form last - N, where - is a minus sign
(hyphen) and N is a literal whole number (0, 1, 2,…) that is no greater
than the array size minus 1. The next-to-last array element can be
referenced using index last-1, the second-to-last by index last-2, and so
on. Whitespace surrounding the minus sign (hyphen) is ignored.
I think we can use this to support negative indexing on Oracle versions
that support `[last-N]`. Currently, trying to do so raises a
`NotSupportedError` per #36085 which was focused on sqlite.
I can't find Oracle release notes specifying when [last-N] indexing was
added, but the note I quoted is only available in 21c+ docs.
--
Ticket URL: <
https://code.djangoproject.com/ticket/36718>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.