@@ -3693,8 +3693,7 @@ makeCaseTestExpr(Node *expr)
36933693 */
36943694static Node *
36953695transformJsonValueExprExt (ParseState * pstate , JsonValueExpr * ve ,
3696- JsonFormatType default_format , bool isarg ,
3697- Node * * prawexpr )
3696+ JsonFormatType default_format , bool isarg )
36983697{
36993698 Node * expr = transformExprRecurse (pstate , (Node * ) ve -> raw_expr );
37003699 Node * rawexpr ;
@@ -3715,17 +3714,6 @@ transformJsonValueExprExt(ParseState *pstate, JsonValueExpr *ve,
37153714
37163715 rawexpr = expr ;
37173716
3718- if (prawexpr )
3719- {
3720- /*
3721- * Save a raw context item expression if it is needed for the isolation
3722- * of error handling in the formatting stage.
3723- */
3724- * prawexpr = expr ;
3725- assign_expr_collations (pstate , expr );
3726- expr = makeCaseTestExpr (expr );
3727- }
3728-
37293717 if (ve -> format -> format != JS_FORMAT_DEFAULT )
37303718 {
37313719 if (ve -> format -> encoding != JS_ENC_DEFAULT && exprtype != BYTEAOID )
@@ -3846,7 +3834,7 @@ transformJsonValueExprExt(ParseState *pstate, JsonValueExpr *ve,
38463834static Node *
38473835transformJsonValueExpr (ParseState * pstate , JsonValueExpr * jve )
38483836{
3849- return transformJsonValueExprExt (pstate , jve , JS_FORMAT_JSON , false, NULL );
3837+ return transformJsonValueExprExt (pstate , jve , JS_FORMAT_JSON , false);
38503838}
38513839
38523840/*
@@ -3855,7 +3843,7 @@ transformJsonValueExpr(ParseState *pstate, JsonValueExpr *jve)
38553843static Node *
38563844transformJsonValueExprDefault (ParseState * pstate , JsonValueExpr * jve )
38573845{
3858- return transformJsonValueExprExt (pstate , jve , JS_FORMAT_DEFAULT , false, NULL );
3846+ return transformJsonValueExprExt (pstate , jve , JS_FORMAT_DEFAULT , false);
38593847}
38603848
38613849/*
@@ -4505,7 +4493,7 @@ transformJsonPassingArgs(ParseState *pstate, JsonFormatType format, List *args,
45054493 {
45064494 JsonArgument * arg = castNode (JsonArgument , lfirst (lc ));
45074495 Node * expr = transformJsonValueExprExt (pstate , arg -> val ,
4508- format , true, NULL );
4496+ format , true);
45094497
45104498 assign_expr_collations (pstate , expr );
45114499
@@ -4550,20 +4538,12 @@ transformJsonExprCommon(ParseState *pstate, JsonFuncExpr *func)
45504538
45514539 jsexpr -> location = func -> location ;
45524540 jsexpr -> op = func -> op ;
4553- jsexpr -> formatted_expr = transformJsonValueExprExt (pstate ,
4554- func -> common -> expr ,
4555- JS_FORMAT_JSON ,
4556- false,
4557- & jsexpr -> raw_expr );
4541+ jsexpr -> formatted_expr = transformJsonValueExpr (pstate , func -> common -> expr );
45584542
45594543 assign_expr_collations (pstate , jsexpr -> formatted_expr );
45604544
45614545 /* format is determined by context item type */
4562- format = exprType (jsexpr -> formatted_expr ) == JSONBOID ?
4563- JS_FORMAT_JSONB : JS_FORMAT_JSON ;
4564-
4565- if (jsexpr -> formatted_expr == jsexpr -> raw_expr )
4566- jsexpr -> formatted_expr = NULL ;
4546+ format = exprType (jsexpr -> formatted_expr ) == JSONBOID ? JS_FORMAT_JSONB : JS_FORMAT_JSON ;
45674547
45684548 jsexpr -> result_coercion = NULL ;
45694549 jsexpr -> omit_quotes = false;
@@ -4662,8 +4642,7 @@ static void
46624642transformJsonFuncExprOutput (ParseState * pstate , JsonFuncExpr * func ,
46634643 JsonExpr * jsexpr )
46644644{
4665- Node * expr = jsexpr -> formatted_expr ?
4666- jsexpr -> formatted_expr : jsexpr -> raw_expr ;
4645+ Node * expr = jsexpr -> formatted_expr ;
46674646
46684647 jsexpr -> returning = transformJsonOutput (pstate , func -> output , false);
46694648
@@ -4689,7 +4668,7 @@ transformJsonFuncExprOutput(ParseState *pstate, JsonFuncExpr *func,
46894668 return ;
46904669 }
46914670
4692- assignDefaultJsonReturningType (jsexpr -> raw_expr , jsexpr -> format , & ret );
4671+ assignDefaultJsonReturningType (jsexpr -> formatted_expr , jsexpr -> format , & ret );
46934672
46944673 if (ret .typid != jsexpr -> returning -> typid ||
46954674 ret .typmod != jsexpr -> returning -> typmod )
@@ -4704,7 +4683,7 @@ transformJsonFuncExprOutput(ParseState *pstate, JsonFuncExpr *func,
47044683 }
47054684 }
47064685 else
4707- assignDefaultJsonReturningType (jsexpr -> raw_expr , jsexpr -> format ,
4686+ assignDefaultJsonReturningType (jsexpr -> formatted_expr , jsexpr -> format ,
47084687 jsexpr -> returning );
47094688}
47104689
@@ -4809,9 +4788,8 @@ static Node *
48094788transformJsonFuncExpr (ParseState * pstate , JsonFuncExpr * func )
48104789{
48114790 JsonExpr * jsexpr = transformJsonExprCommon (pstate , func );
4812- Node * contextItemExpr =
4813- jsexpr -> formatted_expr ? jsexpr -> formatted_expr : jsexpr -> raw_expr ;
48144791 const char * func_name = NULL ;
4792+ Node * contextItemExpr = jsexpr -> formatted_expr ;
48154793
48164794 switch (func -> op )
48174795 {
0 commit comments