| From: | Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp> | 
|---|---|
| To: | David Fetter <david(at)fetter(dot)org>, Robert Haas <robertmhaas(at)gmail(dot)com> | 
| Cc: | PG Hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: Materialized views vs. primary keys | 
| Date: | 2016-04-06 01:44:16 | 
| Message-ID: | 570469F0.7050009@lab.ntt.co.jp | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
On 2016/04/06 8:48, David Fetter wrote:
> 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(at)fetter(dot)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);
Initially I thought it may be just an oversight of forgetting to pass
ATT_MATVIEW to ATSimplePermissions() in ALTER TABLE processing and that
there are no deeper technical reasons why that is so. But, there seem to
be. On inspecting a little, it seems I can create unique indexes on a
matview, but couldn't manage to set its columns to NOT NULL.  Only allowed
relations in the latter case are plain tables and foreign tables.  I guess
that follows from how NOT NULL constraints are enforced.
> This lack prevents things that depend on primary keys (foreign keys,
> logical replication, etc.) from operating on the materialized views.
Thanks,
Amit
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Robert Haas | 2016-04-06 01:45:26 | Re: Proposal: "Causal reads" mode for load balancing reads without stale data | 
| Previous Message | Robert Haas | 2016-04-06 01:29:13 | Re: Timeline following for logical slots |