summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmit Langote2024-06-28 00:42:13 +0000
committerAmit Langote2024-06-28 00:45:03 +0000
commit473a352fb393519f22cd4d31839ad3d74b1aeea1 (patch)
tree1aa69e5491908f57a16efcca04a1e078d8435a0e
parent5d6c64d290978dab76c00460ba809156874be035 (diff)
SQL/JSON: Document behavior when input document is not jsonb
The input document to functions JSON_EXISTS(), JSON_QUERY(), JSON_VALUE(), and JSON_TABLE() can be specified as character or UTF8-encoded bytea strings. These are automatically converted to jsonb with an implicit cast before being passed to the jsonpath machinery. In the current implementation, errors that occur when parsing the specified string into a valid JSON document are thrown unconditionally. This means they are not subject to the explicit or implicit ON ERROR clause of those functions, which is a standard- conforming behavior. Add a note to the documentation to mention that. Reported-by: Markus Winand Discussion: https://postgr.es/m/F7DD1442-265C-4220-A603-CB0DEB77E91D%40winand.at
-rw-r--r--doc/src/sgml/func.sgml10
1 files changed, 10 insertions, 0 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 2609269610b..323098a2377 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -18861,6 +18861,16 @@ DETAIL: Missing "]" after array dimensions.
</tbody>
</tgroup>
</table>
+ <note>
+ <para>
+ The <replaceable>context_item</replaceable> expression is converted to
+ <type>jsonb</type> by an implicit cast if the expression is not already of
+ type <type>jsonb</type>. Note, however, that any parsing errors that occur
+ during that conversion are thrown unconditionally, that is, are not
+ handled according to the (specified or implicit) <literal>ON ERROR</literal>
+ clause.
+ </para>
+ </note>
</sect2>
<sect2 id="functions-sqljson-table">