@@ -307,23 +307,8 @@ prepare_plan(PLpgSQL_checkstate *cstate,
307307 collect_volatility (cstate , query );
308308 plpgsql_check_detect_dependency (cstate , query );
309309
310- if (!pure_expr_check )
311- return ;
312-
313- #if PG_VERSION_NUM < 140000
314-
315- check_pure_expr (cstate , query , expr -> query );
316-
317- #else
318-
319- if (expr -> parseMode == RAW_PARSE_PLPGSQL_EXPR ||
320- expr -> parseMode == RAW_PARSE_PLPGSQL_ASSIGN1 ||
321- expr -> parseMode == RAW_PARSE_PLPGSQL_ASSIGN2 ||
322- expr -> parseMode == RAW_PARSE_PLPGSQL_ASSIGN3 )
310+ if (pure_expr_check )
323311 check_pure_expr (cstate , query , expr -> query );
324-
325- #endif
326-
327312}
328313
329314/*
@@ -1001,7 +986,7 @@ plpgsql_check_expr_generic_with_parser_setup(PLpgSQL_checkstate *cstate,
1001986 ParserSetupHook parser_setup ,
1002987 void * arg )
1003988{
1004- prepare_plan (cstate , expr , 0 , parser_setup , arg , true );
989+ prepare_plan (cstate , expr , 0 , parser_setup , arg , false );
1005990 force_plan_checks (cstate , expr );
1006991}
1007992
@@ -1115,7 +1100,7 @@ plpgsql_check_returned_expr(PLpgSQL_checkstate *cstate, PLpgSQL_expr *expr, bool
11151100 bool is_immutable_null ;
11161101 Oid first_level_typ = InvalidOid ;
11171102
1118- prepare_plan (cstate , expr , 0 , NULL , NULL , true );
1103+ prepare_plan (cstate , expr , 0 , NULL , NULL , is_expression );
11191104
11201105 /* record all variables used by the query, should be after prepare_plan */
11211106 cstate -> used_variables = bms_add_members (cstate -> used_variables , expr -> paramnos );
@@ -1334,7 +1319,7 @@ plpgsql_check_expr_as_rvalue(PLpgSQL_checkstate *cstate, PLpgSQL_expr *expr,
13341319
13351320 PG_TRY ();
13361321 {
1337- prepare_plan (cstate , expr , 0 , NULL , NULL , true );
1322+ prepare_plan (cstate , expr , 0 , NULL , NULL , is_expression );
13381323 /* record all variables used by the query */
13391324
13401325#if PG_VERSION_NUM >= 140000
0 commit comments