Re: BUG #13457: postgres_fdw, non-postgres user mapping, materialized view leads to failed pg_upgrade

From: Joe Van Dyk <joe(at)tanga(dot)com>
To: gregburek(at)heroku(dot)com
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #13457: postgres_fdw, non-postgres user mapping, materialized view leads to failed pg_upgrade
Date: 2015-08-02 14:05:06
Message-ID: CACfv+p+-gnC+hUj5wBaYsXcarMMbXh5SMfp0oVkWEfZU15DsjA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

I'm running into this same problem using pg_dumpall.

On Sun, Jun 21, 2015 at 9:20 PM, <gregburek(at)heroku(dot)com> wrote:

> The following bug has been logged on the website:
>
> Bug reference: 13457
> Logged by: Greg Burek
> Email address: gregburek(at)heroku(dot)com
> PostgreSQL version: 9.4.2
> Operating system: Linux
> Description:
>
> Hello,
>
> A customer has run into a strange interaction between the postgres_fdw
> extension, materialized view and pg_restore, as used by pg_upgrade.
>
> Reproduction schema:
>
> CREATE SERVER redshift_dw FOREIGN DATA WRAPPER postgres_fdw OPTIONS (
> dbname 'reporting',
> host 'example.com',
> port '5439',
> sslmode 'require'
> );
> ALTER SERVER redshift_dw OWNER TO u5cuus46hhtdfs;
> CREATE USER MAPPING FOR u5cuus46hhtdfs SERVER redshift_dw OPTIONS (
> password '',
> "user" 'user'
> );
>
> CREATE MATERIALIZED VIEW daily_stats_mv AS
> SELECT daily_stats_v.campaign_id,
> daily_stats_v.targeting_group_id,
> daily_stats_v.creative_id,
> daily_stats_v.date,
> daily_stats_v.impressions,
> daily_stats_v.clicks,
> daily_stats_v.media_cost,
> daily_stats_v.spend,
> daily_stats_v.serving_fees
> FROM daily_stats_v
> WITH NO DATA;
> ALTER TABLE public.daily_stats_mv OWNER TO u5cuus46hhtdfs;
>
> When running upgrading from postgres version 9.3.5 to 9.4.2, the pg_upgrade
> command fails with logs that include:
>
> pg_restore: creating MATERIALIZED VIEW daily_stats_mv
> pg_restore: [archiver (db)] Error while PROCESSING TOC:
> pg_restore: [archiver (db)] Error from TOC entry 354; 1259 266280
> MATERIALIZED VIEW daily_stats_mv u5cuus46hhtdfs
> pg_restore: [archiver (db)] could not execute query: ERROR: user mapping
> not found for "postgres"
> Command was:
> -- For binary upgrade, must preserve pg_type oid
> SELECT binary_upgrade.set_next_pg_type_oid('266282'::pg_catalog.oid);
>
> It appears that as part of the pg_upgrade script, the db is run through
> pg_dump and pg_restore. The schema generated by pg_dump appears to attempt
> to create the MATERIALIZED VIEW daily_stats_mv as user postgres and then
> change ownership to user u5cuus46hhtdfs. The table create fails because the
> postgres_fdw that the materialized view is based on has no user mapping for
> the postgres user, even though the correct user is set as the next
> statement.
>
> Should the schema be rendered by pg_dump so that the materialized view is
> created as the intended user to avoid a trip through the postgres user,
> which may or may not have a user mapping that dictates if the materialized
> view may be created?
>
> User worked around the issue by dropping the fdw and the materialized view
> before performing a dump and restore upgrade.
>
> Greg
>
>
> --
> Sent via pgsql-bugs mailing list (pgsql-bugs(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-bugs
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Heikki Linnakangas 2015-08-02 16:57:37 Re: BUG #13442: ISBN doesn't always roundtrip with text
Previous Message Noah Misch 2015-08-02 02:54:37 Re: Missing file versions for a bunch of dll/exe files in Windows builds