aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-09-18 23:46:04 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-09-18 23:46:04 -0400
commitfaf5cee7f0189beba206a5d96c0abd8e4382b844 (patch)
tree251c6266e0b74644b5509e20e1766df930d1513b
parentc4ae968633b37e3b0a5da83e9d7d2a5518191564 (diff)
downloadpostgresql-faf5cee7f0189beba206a5d96c0abd8e4382b844.tar.gz
postgresql-faf5cee7f0189beba206a5d96c0abd8e4382b844.zip
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.
-rw-r--r--src/pl/plpgsql/src/pl_exec.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c
index 1f1acdc5e0a..f0ed762ccc3 100644
--- a/src/pl/plpgsql/src/pl_exec.c
+++ b/src/pl/plpgsql/src/pl_exec.c
@@ -3027,7 +3027,6 @@ exec_stmt_execsql(PLpgSQL_execstate *estate,
CachedPlanSource *plansource = (CachedPlanSource *) lfirst(l);
ListCell *l2;
- Assert(plansource->is_valid);
foreach(l2, plansource->query_list)
{
Query *q = (Query *) lfirst(l2);