On Mon, Jul 02, 2012 at 01:01:51PM -0400, Tom Lane wrote:
> Bruce Momjian <br...@momjian.us> writes:
> > + 
> > +           /*
> > +            *      We unconditionally create the extension, so we must 
> > drop it if it
> > +            *      exists.  This could happen if the user deleted 
> > 'plpgsql' and then
> > +            *      readded it, causing its oid to be greater than 
> > FirstNormalObjectId.
> > +            */
> > +           appendPQExpBuffer(q, "DROP EXTENSION IF EXISTS %s;\n", 
> > qextname);
> 
> This doesn't seem like anything but a wart :-(.  It's unlike the
> behavior for every other kind of object, it introduces the inconsistent

Well, our use of FirstNormalObjectId by pg_dump for extensions is unique
too.

> behavior even in non-binary-upgrade cases, and it does nothing at all to

This code is in the binary-upgrade block --- not sure how it could
affect non-binary upgrades.

This is the trimmed-down code block:

    if (!binary_upgrade)
    {
        appendPQExpBuffer(q, "CREATE EXTENSION IF NOT EXISTS %s WITH SCHEMA 
%s;\n",
                          qextname, fmtId(extinfo->namespace));
    }
    else
    {
-->     appendPQExpBuffer(q, "DROP EXTENSION IF EXISTS %s;\n", qextname);
        appendPQExpBuffer(q,
                          "SELECT binary_upgrade.create_empty_extension(");

The idea is that the IF NOT EXISTS and IF EXISTS are symmetric, which is
my goal.

> address the points I made about reproducing the previous state in cases
> where the admin removed the language or changed its permissions.

Well, it still does the create extension in binary mode like before ---
not sure what the problem is.

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to