Re: [doc] plan invalidation when statistics are update

torikoshia <torikoshia@oss.nttdata.com>

From: torikoshia <torikoshia@oss.nttdata.com>
To: Fujii Masao <masao.fujii@oss.nttdata.com>
Cc: pgsql-hackers@postgresql.org
Date: 2020-11-19T05:33:54Z
Lists: pgsql-hackers

Attachments

On 2020-11-18 11:35, Fujii Masao wrote:

Thanks for your comment!

> On 2020/11/18 11:04, torikoshia wrote:
>> 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?
> 
> +1 to add that note.
> 
> -   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.
> 
> I don't think "For example," is necessary.
> 
> "planner statistics of the statement" sounds vague? Does the statement
> is re-analyzed and re-planned only when the planner statistics of 
> database
> objects used in the statement are updated? If yes, we should describe
> that to make the note a bit more explicitly?

Yes. As far as I confirmed, updating statistics which are not used in
prepared statements doesn't trigger re-analyze and re-plan.

Since plan invalidations for DDL changes and statistcal changes are 
caused
by PlanCacheRelCallback(Oid 'relid'), only the prepared statements using
'relid' relation seem invalidated.

Attached updated patch.


Regards,

-
Atsushi Torikoshi

Commits

  1. doc: Add description about re-analysis and re-planning of a prepared statement.