pgsql: SQL/JSON: Rethink c2d93c3802b

From: Amit Langote <amitlan(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: SQL/JSON: Rethink c2d93c3802b
Date: 2024-07-17 08:46:59
Message-ID: E1sU0JP-0020wQ-BF@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

SQL/JSON: Rethink c2d93c3802b

This essentially reverts c2d93c3802b except tests. The problem with
c2d93c3802b was that it only changed the casting behavior for types
with typmod, and had coding issues noted in the post-commit review.

This commit changes coerceJsonFuncExpr() to use assignment-level casts
instead of explicit casts to coerce the result of JSON constructor
functions to the specified or the default RETURNING type. Using
assignment-level casts fixes the problem that using explicit casts was
leading to the wrong typmod / length coercion behavior -- truncating
results longer than the specified length instead of erroring out --
which c2d93c3802b aimed to solve.

That restricts the set of allowed target types to string types, the
same set that's currently allowed.

Discussion: https://postgr.es/m/202406291824.reofujy7xdj3@alvherre.pgsql

Branch
------
REL_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/2177306a64137f50158d0d1ce7c4196ff8f05350

Modified Files
--------------
src/backend/parser/parse_expr.c | 34 ++++++++++------------------------
1 file changed, 10 insertions(+), 24 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Amit Langote 2024-07-17 08:47:12 pgsql: SQL/JSON: Rethink c2d93c3802b
Previous Message Michael Paquier 2024-07-17 03:06:41 pgsql: Make write of pgstats file durable at shutdown