Re: minor doc issue in 9.16.2.1.1. Boolean Predicate Check Expressions
От | jian he |
---|---|
Тема | Re: minor doc issue in 9.16.2.1.1. Boolean Predicate Check Expressions |
Дата | |
Msg-id | CACJufxG+pn2Wkma+h1PfbxX=Ub_2fGsF=Es4b-e7vnRTOmxRgw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: minor doc issue in 9.16.2.1.1. Boolean Predicate Check Expressions (Bruce Momjian <bruce@momjian.us>) |
Список | pgsql-hackers |
On Thu, Oct 17, 2024 at 7:59 AM Bruce Momjian <bruce@momjian.us> wrote: > > > Where are we on this? I still see this behavior. > > --------------------------------------------------------------------------- > > but I found following two examples returning different results, > > i think they should return the same value. > > select json_value('1', '$ == "1"' returning jsonb error on error); > > select json_query('1', '$ == "1"' returning jsonb error on error); This part has been resolved. see section Note section in https://www.postgresql.org/docs/current/functions-json.html#SQLJSON-QUERY-FUNCTIONS > > On Fri, Jun 21, 2024 at 04:53:55PM +0800, jian he wrote: > > On Fri, Jun 21, 2024 at 11:11 AM David G. Johnston > > <david.g.johnston@gmail.com> wrote: > > > > > > On Thu, Jun 20, 2024 at 7:30 PM jian he <jian.universality@gmail.com> wrote: > > >> > > >> "predicate check expressions return the single three-valued result of > > >> > > >> the predicate: true, false, or unknown." > > >> "unknown" is wrong, because `select 'unknown'::jsonb;` will fail. > > >> here "unknown" should be "null"? see jsonb_path_query doc entry also. > > >> doc (https://www.postgresql.org/docs/devel/functions-json.html#FUNCTIONS-SQLJSON-CHECK-EXPRESSIONS) <<QUOTE>> While SQL-standard path expressions return the relevant element(s) of the queried JSON value, predicate check expressions return the single three-valued result of the predicate: true, false, or unknown. <<END OF QUOTE>> https://www.postgresql.org/docs/current/datatype-boolean.html says "The boolean type can have several states: “true”, “false”, and a third state, “unknown”, which is represented by the SQL null value." but here select jsonb_path_query('1', '$ == "a"'); return JSON null value, not SQL null value. however. select jsonb_path_match('1', '$ == "a"'); return SQL null value. maybe we can change to "predicate check expressions return the single three-valued result of the predicate: true, false, or null" Then in the <note> section mention that when Predicate check expressions cannot be applied, it returns JSON null for function jsonb_path_query, return SQL NULL for function jsonb_path_match or @@ operator.
В списке pgsql-hackers по дате отправления: