Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit faf5cee

Browse files
committed
Fix another Assert issue exposed by CLOBBER_CACHE_ALWAYS.
plpgsql's exec_stmt_execsql was Assert'ing that a CachedPlanSource was is_valid immediately after exec_prepare_plan. The risk factor in this case is that after building the prepared statement, exec_prepare_plan calls exec_simple_check_plan, which might try to generate a generic plan --- and with CLOBBER_CACHE_ALWAYS or other unusual causes of invalidation, that could result in an invalidation. However, that path could only be taken for a SELECT query, for which we need not set mod_stmt. So in this case I think it's best to just remove the Assert; it's okay to look at a slightly-stale querytree for what we need here. Per buildfarm testing.
1 parent c4ae968 commit faf5cee

File tree

1 file changed

+0
-1
lines changed

1 file changed

+0
-1
lines changed

src/pl/plpgsql/src/pl_exec.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3027,7 +3027,6 @@ exec_stmt_execsql(PLpgSQL_execstate *estate,
30273027
CachedPlanSource *plansource = (CachedPlanSource *) lfirst(l);
30283028
ListCell *l2;
30293029

3030-
Assert(plansource->is_valid);
30313030
foreach(l2, plansource->query_list)
30323031
{
30333032
Query *q = (Query *) lfirst(l2);

0 commit comments

Comments
 (0)