On Thu, Oct 17, 2024 at 9:59 PM Bruce Momjian <br...@momjian.us> wrote: > > > > > > >> 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" > > Yes, done in the attached patch. >
- <literal>false</literal>, or <literal>unknown</literal>. + <literal>false</literal>, or <literal>NULL</literal>. nearby are all examples related to jsonb_path_query. As mentioned before, jsonb_path_query returns JSON null. so change to + <literal>false</literal>, or <literal>null</literal> would be better. since we can select 'null'::jsonb; but cannot select 'NULL'::jsonb;