diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c
index 0ce382e123..7ccfdc3aa9 100644
--- a/src/pl/plpgsql/src/pl_exec.c
+++ b/src/pl/plpgsql/src/pl_exec.c
@@ -6089,7 +6089,7 @@ exec_eval_simple_expr(PLpgSQL_execstate *estate,
 	 * to skip.
 	 */
 	oldcontext = MemoryContextSwitchTo(get_eval_mcontext(estate));
-	need_snapshot = (expr->expr_simple_mutable && !estate->readonly_func);
+	need_snapshot = (expr->expr_simple_mutable || !estate->readonly_func);
 	if (need_snapshot)
 	{
 		CommandCounterIncrement();
