Hi,
AFAIU, when the planner statistics are updated, generic plans are
invalidated and PostgreSQL recreates. However, the manual doesn't seem
to explain it explicitly.
https://www.postgresql.org/docs/devel/sql-prepare.html
I guess this case is included in 'whenever database objects used in the
statement have definitional (DDL) changes undergone', but I feel it's
hard to infer.
Since updates of the statistics can often happen, how about describing
this case explicitly like an attached patch?
Regards,
--
Atsushi Torikoshi
From d71dbb0b100f706f19d92175b72f9e1833a8a442 Mon Sep 17 00:00:00 2001
From: Atsushi Torikoshi <torikos...@oss.nttdata.com>
Date: Thu, 12 Nov 2020 17:18:29 +0900
Subject: [PATCH v1] When the planner statistics are updated, generic plans are
invalidated and PostgreSQL recreates. However, the manual didn't explain it
explicitly. This patch adds this case as a example.
---
doc/src/sgml/ref/prepare.sgml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/doc/src/sgml/ref/prepare.sgml b/doc/src/sgml/ref/prepare.sgml
index 57a34ff83c..4075de5689 100644
--- a/doc/src/sgml/ref/prepare.sgml
+++ b/doc/src/sgml/ref/prepare.sgml
@@ -185,7 +185,10 @@ EXPLAIN EXECUTE <replaceable>name</replaceable>(<replaceable>parameter_values</r
force re-analysis and re-planning of the statement before using it
whenever database objects used in the statement have undergone
definitional (DDL) changes since the previous use of the prepared
- statement. Also, if the value of <xref linkend="guc-search-path"/> changes
+ statement. For example, when the planner statistics of the statement
+ are updated, <productname>PostgreSQL</productname> re-analyzes and
+ re-plans the statement.
+ Also, if the value of <xref linkend="guc-search-path"/> changes
from one use to the next, the statement will be re-parsed using the new
<varname>search_path</varname>. (This latter behavior is new as of
<productname>PostgreSQL</productname> 9.3.) These rules make use of a
--
2.18.1