From 2f81e3d0b4b95dbf4a7d92cd52f8f682dc2046a1 Mon Sep 17 00:00:00 2001 From: Amit Langote Date: Fri, 7 Jul 2023 20:21:58 +0900 Subject: [PATCH v3 2/6] Don't include CaseTestExpr in JsonValueExpr.formatted_expr There doesn't appear to be any need for it. --- src/backend/executor/execExpr.c | 11 ----------- src/backend/optimizer/util/clauses.c | 5 ----- src/backend/parser/parse_expr.c | 7 ++----- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/src/backend/executor/execExpr.c b/src/backend/executor/execExpr.c index e6e616865c..21f7796e63 100644 --- a/src/backend/executor/execExpr.c +++ b/src/backend/executor/execExpr.c @@ -2297,18 +2297,7 @@ ExecInitExprRec(Expr *node, ExprState *state, ExecInitExprRec(jve->raw_expr, state, resv, resnull); if (jve->formatted_expr) - { - Datum *innermost_caseval = state->innermost_caseval; - bool *innermost_isnull = state->innermost_casenull; - - state->innermost_caseval = resv; - state->innermost_casenull = resnull; - ExecInitExprRec(jve->formatted_expr, state, resv, resnull); - - state->innermost_caseval = innermost_caseval; - state->innermost_casenull = innermost_isnull; - } break; } diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index 7f453b04f8..59d8ce789e 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -2834,15 +2834,10 @@ eval_const_expressions_mutator(Node *node, if (raw && IsA(raw, Const)) { Node *formatted; - Node *save_case_val = context->case_val; - - context->case_val = raw; formatted = eval_const_expressions_mutator((Node *) jve->formatted_expr, context); - context->case_val = save_case_val; - if (formatted && IsA(formatted, Const)) return formatted; } diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 9e8a2ac22b..f02343ef64 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -3269,11 +3269,8 @@ transformJsonValueExpr(ParseState *pstate, JsonValueExpr *ve, if (format != JS_FORMAT_DEFAULT) { Oid targettype = format == JS_FORMAT_JSONB ? JSONBOID : JSONOID; - Node *orig = makeCaseTestExpr(expr); Node *coerced; - expr = orig; - if (exprtype != BYTEAOID && typcategory != TYPCATEGORY_STRING) ereport(ERROR, errcode(ERRCODE_DATATYPE_MISMATCH), @@ -3311,7 +3308,7 @@ transformJsonValueExpr(ParseState *pstate, JsonValueExpr *ve, coerced = (Node *) fexpr; } - if (coerced == orig) + if (coerced == expr) expr = rawexpr; else { @@ -3899,7 +3896,7 @@ transformJsonParseArg(ParseState *pstate, Node *jsexpr, JsonFormat *format, { JsonValueExpr *jve; - expr = makeCaseTestExpr(raw_expr); + expr = raw_expr; expr = makeJsonByteaToTextConversion(expr, format, exprLocation(expr)); *exprtype = TEXTOID; -- 2.35.3