Hi, On Sat, Apr 13, 2024 at 11:12 PM jian he <jian.universal...@gmail.com> wrote: > On Fri, Apr 12, 2024 at 5:44 PM Amit Langote <amitlangot...@gmail.com> wrote: > > > > > elog(ERROR, "unrecognized json wrapper %d", wrapper); > > > should be > > > elog(ERROR, "unrecognized json wrapper %d", (int) wrapper); > > > > Fixed in 0003. > > > the fix seems not in 0003? > other than that, everything looks fine. > > > <programlisting> > SELECT * FROM JSON_TABLE ( > '{"favorites": > {"movies": > [{"name": "One", "director": "John Doe"}, > {"name": "Two", "director": "Don Joe"}], > "books": > [{"name": "Mystery", "authors": [{"name": "Brown Dan"}]}, > {"name": "Wonder", "authors": [{"name": "Jun Murakami"}, > {"name":"Craig Doe"}]}] > }}'::json, '$.favs[*]' > COLUMNS (user_id FOR ORDINALITY, > NESTED '$.movies[*]' > COLUMNS ( > movie_id FOR ORDINALITY, > mname text PATH '$.name', > director text), > NESTED '$.books[*]' > COLUMNS ( > book_id FOR ORDINALITY, > bname text PATH '$.name', > NESTED '$.authors[*]' > COLUMNS ( > author_id FOR ORDINALITY, > author_name text PATH '$.name')))); > </programlisting> > > I actually did run the query, it returns null. > '$.favs[*]' > should be > '$.favorites[*]'
Oops, fixed. I've combined these patches into one -- attached 0001. Will push tomorrow. > one more minor thing, I previously mentioned in getJsonPathVariable > ereport(ERROR, > (errcode(ERRCODE_UNDEFINED_OBJECT), > errmsg("could not find jsonpath variable \"%s\"", > pnstrdup(varName, varNameLength)))); > > do we need to remove pnstrdup? Looking at this again, it seems like that's necessary because varName, being a string extracted from JsonPathItem, is not necessarily null-terminated. There are many pndstrdup()s in jsonpath_exec.c because of that aspect. Now studying the JsonBehavior DEFAULT expression issue and your patch. -- Thanks, Amit Langote
v4-0001-SQL-JSON-Miscellaneous-fixes-and-improvements.patch
Description: Binary data