BUG #8655: pg_restore problems with materialized views

Lists: pgsql-bugs
From: shaunc(at)factfiber(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #8655: pg_restore problems with materialized views
Date: 2013-12-04 07:12:09
Message-ID: E1Vo6cz-0004Pf-DN@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 8655
Logged by: Shaun Cutts
Email address: shaunc(at)factfiber(dot)com
PostgreSQL version: 9.3.1
Operating system: mac os 10.8.5
Description:

I have a large database (100s of millions of rows) in which there are many
"chained" materialized views -- that is: some depend on others, etc...

When I back up and then restore, only the "first layer" of views are
refreshed. I can then go back and manually restore missing views with "-t"
-- though if I do too many at once the same thing happens.

I have tried to generate a small test case, but with no luck. I suspect that
pg_restore needs to issue "refresh" before it creates successive views, and
in "small" cases it gets that right -- but there is some arbitrariness in
the order that trips it up in sufficiently complex cases.

I also have indexes defined on the materialized views. I don't know if that
matters -- an extra sequencing problem for restore though.


From: Kevin Grittner <kgrittn(at)ymail(dot)com>
To: "shaunc(at)factfiber(dot)com" <shaunc(at)factfiber(dot)com>, "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #8655: pg_restore problems with materialized views
Date: 2013-12-04 19:25:38
Message-ID: 1386185138.72693.YahooMailNeo@web162901.mail.bf1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

"shaunc(at)factfiber(dot)com" <shaunc(at)factfiber(dot)com> wrote:

> I have a large database (100s of millions of rows) in which there
> are many "chained" materialized views -- that is: some depend on
> others, etc...
>
> When I back up and then restore, only the "first layer" of views
> are refreshed. I can then go back and manually restore missing
> views with "-t"
> -- though if I do too many at once the same thing happens.
>
> I have tried to generate a small test case, but with no luck.

Yeah, it should work, and I have run a lot of test cases without
seeing this.  The one case that is a little weird is when you
populate a materialized view "b" which references materialized view
"a", REFRESH MATERIALIZED VIEW "a" WITH NO DATA, and then dump.

> I suspect that pg_restore needs to issue "refresh" before it
> creates successive views, and in "small" cases it gets that right
> -- but there is some arbitrariness in the order that trips it up
> in sufficiently complex cases.

That does sound likely, but without a failing case, it is going to
be hard to diagnose.

> I also have indexes defined on the materialized views. I don't
> know if that matters -- an extra sequencing problem for restore
> though.

Those are all supposed to be handled, but if there is an
unidentified bug, who knows what matters?

Have you tried restoring a schema-only dump and populating it with
minimal data, and seeing whether you can replicate it that way?

--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company