Dave Cramer

On Thu, 29 Jul 2021 at 12:16, Bruce Momjian <br...@momjian.us> wrote:

> On Thu, Jul 29, 2021 at 09:00:36AM -0700, David G. Johnston wrote:
> > On Thu, Jul 29, 2021 at 8:42 AM Bruce Momjian <br...@momjian.us> wrote:
> >
> >     On Thu, Jul 29, 2021 at 11:36:19AM -0400, Dave Cramer wrote:
> >     >
> >     >
> >     >     I have an issue with the fragment "whether they are from
> contrib" -
> >     my
> >     >     understanding at this point is that because of the way we
> package and
> >     >     version contrib it should not be necessary to copy those shared
> >     object
> >     >     files from the old to the new server (maybe, just maybe, with a
> >     >     qualification that you are upgrading between two versions that
> were
> >     in
> >     >     support during the same time period).
> >     >
> >     >
> >     > Just to clarify. In no case are binaries copied from the old
> server to
> >     the new
> >     > server. Whether from contrib or otherwise.
> >
> >     Right.  Those are _binaries_ and therefore made to match a specific
> >     Postgres binary.  They might work or might not, but copying them is
> >     never a good idea --- they should be recompiled to match the new
> server
> >     binary, even if the extension had no version/API changes.
> >
> >
> > Ok, looking at the flow again, where exactly would the user even be able
> to
> > execute "CREATE EXTENSION" meaningfully?  The relevant databases do not
> exist
> > (not totally sure what happens to the postgres database created during
> the
> > initdb step...) so at the point where the user is "installing the
> extension"
> > all they can reasonably do is a server-level install (they could maybe
> create
> > extension in the postgres database, but does that even matter?).
>
> They could technically start the new cluster and use "CREATE EXTENSION"
> before the upgrade, and then the ugprade would fail since there would be
> duplicate object errors.
>
> > So, I'd propose simplifying this all to something like:
> >
> > Install extensions on the new server
> >
> > Any extensions that are used by the old cluster need to be installed
> into the
> > new cluster.  Each database in the old cluster will have its current
> version of
> > all extensions migrated to the new cluster as-is.  You can use the ALTER
> > EXTENSION command, on a per-database basis, to update its extensions
> > post-upgrade.
>
> Can you review the text I just posted?  Thanks.   I think we are making
> progress.  ;-)
>

I am OK with Everything except

Do not load the schema definitions,
e.g., <command>CREATE EXTENSION pgcrypto</command>, because these
will be recreated from the old cluster.  (The extensions may be
upgraded later using <literal>ALTER EXTENSION ... UPGRADE</literal>.)

 I take issue with the word "recreated". This implies something new is
created, when in fact the old definitions are simply copied over.

As I said earlier; using the wording "may be upgraded" is not nearly
cautionary enough.

Dave

Reply via email to