On Mon, Mar 18, 2024 at 3:33 PM Amit Langote <amitlangot...@gmail.com>
wrote:

> Himanshu,
>
> On Mon, Mar 18, 2024 at 4:57 PM Himanshu Upadhyaya
> <upadhyaya.himan...@gmail.com> wrote:
> > I have tested a nested case  but  why is the negative number allowed in
> subscript(NESTED '$.phones[-1]'COLUMNS), it should error out if the number
> is negative.
> >
> > ‘postgres[170683]=#’SELECT * FROM JSON_TABLE(jsonb '{
> > ‘...>’         "id" : "0.234567897890",
> > ‘...>’         "name" : {
> "first":"Johnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
> "last":"Doe" },
> > ‘...>’         "phones" : [{"type":"home", "number":"555-3762"},
> > ‘...>’                     {"type":"work", "number":"555-7252",
> "test":123}]}',
> > ‘...>’                '$'
> > ‘...>’                COLUMNS(
> > ‘...>’                     id numeric(2,2) PATH 'lax $.id',
> > ‘...>’                     last_name varCHAR(10) PATH 'lax $.name.last',
> first_name VARCHAR(10) PATH 'lax $.name.first',
> > ‘...>’                      NESTED '$.phones[-1]'COLUMNS (
> > ‘...>’                    "type" VARCHAR(10),
> > ‘...>’                    "number" VARCHAR(10)
> > ‘...>’ )
> > ‘...>’      )
> > ‘...>’   ) as t;
> >   id  | last_name | first_name | type | number
> > ------+-----------+------------+------+--------
> >  0.23 | Doe       | Johnnnnnnn |      |
> > (1 row)
>
> You're not getting an error because the default mode of handling
> structural errors in SQL/JSON path expressions is "lax".  If you say
> "strict" in the path string, you will get an error:
>
>
ok, got it, thanks.


> SELECT * FROM JSON_TABLE(jsonb '{
>          "id" : "0.234567897890",
>          "name" : {
> "first":"Johnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
> "last":"Doe" },
>          "phones" : [{"type":"home", "number":"555-3762"},
>                      {"type":"work", "number":"555-7252", "test":123}]}',
>                 '$'
>                 COLUMNS(
>                      id numeric(2,2) PATH 'lax $.id',
>                      last_name varCHAR(10) PATH 'lax $.name.last',
> first_name VARCHAR(10) PATH 'lax $.name.first',
>                       NESTED 'strict $.phones[-1]'COLUMNS (
>                     "type" VARCHAR(10),
>                     "number" VARCHAR(10)
>  )
>       ) error on error
>    ) as t;
> ERROR:  jsonpath array subscript is out of bounds
>
> --
> Thanks, Amit Langote
>


-- 
Regards,
Himanshu Upadhyaya
EnterpriseDB: http://www.enterprisedb.com

Reply via email to