Re: Materialized views vs. primary keys - Mailing list pgsql-hackers

From David Fetter
Subject Re: Materialized views vs. primary keys
Date
Msg-id 20160405234825.GC8966@fetter.org
Whole thread Raw
In response to Re: Materialized views vs. primary keys  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: Materialized views vs. primary keys  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
List pgsql-hackers
On Tue, Apr 05, 2016 at 07:10:56PM -0400, Robert Haas wrote:
> On Tue, Apr 5, 2016 at 6:50 PM, David Fetter <david@fetter.org> wrote:
> > Is there a reason other than lack of tuits for this restriction?
> 
> "this" lacks an antecedent.

Try to put a primary key on a materialized view, for example:
   CREATE TABLE foo(id SERIAL PRIMARY KEY, t text);
   CREATE MATERIALIZED VIEW bar AS SELECT * FROM foo;
   REFRESH MATERIALIZED VIEW bar;
   ALTER MATERIALIZED VIEW bar ADD PRIMARY KEY(id);

At that last step, you get an error that bar is not a table.  You get
an identical error with the hoary old trick of 
   ALTER TABLE bar ADD PRIMARY KEY(id);

This lack prevents things that depend on primary keys (foreign keys,
logical replication, etc.) from operating on the materialized views.

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate



pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Unused macros in src/include/access/transam.h
Next
From: Peter Geoghegan
Date:
Subject: Re: WIP: Covering + unique indexes.