pgsql: Don't include CaseTestExpr in JsonValueExpr.formatted_expr

Поиск
Список
Период
Сортировка
От Amit Langote
Тема pgsql: Don't include CaseTestExpr in JsonValueExpr.formatted_expr
Дата
Msg-id E1qMnNj-000awS-Tg@gemulon.postgresql.org
обсуждение исходный текст
Список 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.  Comments about and the code manipulating
formatted_expr is updated to mention that it is now always set and
is the expression that gives a JsonValueExpr its runtime value.

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.

Backpatched to 16 from the development branch to keep the code in
sync across branches.

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

Branch
------
REL_16_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/66a9003e2e3ec05e9b62d6bfb6797fa35fb01d15

Modified Files
--------------
src/backend/executor/execExpr.c      | 17 ++---------
src/backend/nodes/makefuncs.c        |  7 +++--
src/backend/nodes/nodeFuncs.c        |  4 +--
src/backend/optimizer/util/clauses.c | 23 ++++-----------
src/backend/parser/gram.y            |  4 ++-
src/backend/parser/parse_expr.c      | 57 ++++++++++++++++++++----------------
src/include/nodes/makefuncs.h        |  3 +-
src/include/nodes/primnodes.h        |  8 ++++-
8 files changed, 56 insertions(+), 67 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: pgsql: Fix worker_spi when launching workers without shared_preload_lib
Следующее
От: Amit Langote
Дата:
Сообщение: pgsql: Code review for commit b6e1157e7d