Re: pg_upgrade does not upgrade pg_stat_statements properly

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Dave Cramer <davecramer(at)gmail(dot)com>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: pg_upgrade does not upgrade pg_stat_statements properly
Date: 2021-07-29 17:43:09
Message-ID: 202107291743.pqlj3s2uilfu@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2021-Jul-29, Bruce Momjian wrote:

> + If the old cluster used extensions, whether from
> + <filename>contrib</filename> or some other source, it used
> + shared object files (or DLLs) to implement these extensions, e.g.,
> + <filename>pgcrypto.so</filename>. Now, shared object files matching
> + the new server binary must be installed in the new cluster, usually
> + via operating system commands. Do not load the schema definitions,
> + e.g., <command>CREATE EXTENSION pgcrypto</command>, because these
> + will be copied from the old cluster. (Extensions should be upgraded
> + later using <literal>ALTER EXTENSION ... UPGRADE</literal>.)

I propose this:

<para>
If the old cluster used shared-object files (or DLLs) for extensions
or other loadable modules, install recompiled versions of those files
onto the new cluster.
Do not install the extension themselves (i.e., do not run
<command>CREATE EXTENSION</command>), because extension definitions
will be carried forward from the old cluster.
</para>

<para>
Extensions can be upgraded after pg_upgrade completes using
<command>ALTER EXTENSION ... UPGRADE</command>, on a per-database
basis.
</para>

I suggest " ... for extensions or other loadable modules" because
loadable modules aren't necessarily for extensions. Also, it's
perfectly possible to have extension that don't have a loadable module.

I suggest "extension definitions ... carried forward" instead of
"extensions ... copied" (your proposed text) to avoid the idea that
files are copied; use it instead of "schema definitions ... upgraded"
(the current docs) to avoid the idea that they are actually upgraded;
also, "schema definition" seems a misleading term to use here.

I suggest "can be upgraded" rather than "should be upgraded" because
we're not making a recommendation, merely stating the fact that it is
possible to do so.

I suggest using the imperative mood, to be consistent with the
surrounding text. (Applies to the first para; the second para is
informative.)

I haven't seen it mentioned in the thread, but I think the final phrase
of this <step> should be a separate step,

<step>
<title>Copy custom full-text search files</title>
<para>
Copy any custom full text search file (dictionary, synonym, thesaurus,
stop word list) to the new server.
</para>
</step>

While this is closely related to extensions, it's completely different.

--
Álvaro Herrera Valdivia, Chile — https://www.EnterpriseDB.com/
"Sallah, I said NO camels! That's FIVE camels; can't you count?"
(Indiana Jones)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Julien Rouhaud 2021-07-29 18:04:16 Re: pg_upgrade does not upgrade pg_stat_statements properly
Previous Message Robert Haas 2021-07-29 17:15:53 Re: [PoC] Improve dead tuple storage for lazy vacuum