pgsql: Don't include CaseTestExpr in JsonValueExpr.formatted_expr

From: Amit Langote <amitlan(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Don't include CaseTestExpr in JsonValueExpr.formatted_expr
Date: 2023-07-13 03:33:07
Message-ID: E1qJn4l-00072K-8q@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Don't include CaseTestExpr in JsonValueExpr.formatted_expr

A CaseTestExpr is currently being put into
JsonValueExpr.formatted_expr as placeholder for the result of
evaluating JsonValueExpr.raw_expr, which in turn is evaluated
separately. Though, there's no need for this indirection if
raw_expr itself can be embedded into formatted_expr and evaluated
as part of evaluating the latter, especially as there is no
special reason to evaluate it separately. So this commit makes it
so. As a result, JsonValueExpr.raw_expr no longer needs to be
evaluated in ExecInterpExpr(), eval_const_exprs_mutator() etc. and
is now only used for displaying the original "unformatted"
expression in ruleutils.c.

While at it, this also removes the function makeCaseTestExpr(),
because the code in makeJsonConstructorExpr() looks more readable
without it IMO and isn't used by anyone else either.

Finally, a note is added in the comment above CaseTestExpr's
definition that JsonConstructorExpr is also using it.

Reviewed-by: Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Discussion: https://postgr.es/m/CA+HiwqE4XTdfb1nW=Ojoy_tQSRhYt-q_kb6i5d4xcKyrLC1Nbg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/b6e1157e7d339c4e20d68448125a4cef42b1ac9d

Modified Files
--------------
src/backend/executor/execExpr.c | 17 ++------------
src/backend/nodes/makefuncs.c | 4 ++++
src/backend/optimizer/util/clauses.c | 23 +++++--------------
src/backend/parser/parse_expr.c | 43 ++++++++++++++++++------------------
src/include/nodes/primnodes.h | 7 +++++-
5 files changed, 39 insertions(+), 55 deletions(-)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Nathan Bossart 2023-07-13 03:35:28 pgsql: Teach in-tree getopt_long() to move non-options to the end of ar
Previous Message Michael Paquier 2023-07-13 00:09:18 pgsql: Simplify some conditions related to [LW]Lock in generate-wait_ev