Table renaming does not propagate to views

From: Jordan Deitch <jd(at)rsa(dot)pub>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Table renaming does not propagate to views
Date: 2018-09-14 16:18:17
Message-ID: 1536941897.1054461.1508319136.2C8C7EE2@webmail.messagingengine.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Hackers -

It appears only the oid of the relations used in a view are captured in the view definition, not the relations' name itself. The effect this has is that relation renaming does not propagate to views. I would like to assert that they should.

The user has stated their intention in the view to reference a particular relation by name, not by oid, and so materializing the oid is defective behavior.

The following procedure demonstrates:

---------------------------
begin;
create table public.test (id varchar(255));
insert into public.test(id) values ('12/12/2009');

create table public.test_new (id varchar(50));
insert into public.test_new(id) select * from test;

create view public.test_v as select count(*) from test;

select * from public.test_v; <------ returns 1

alter table public.test rename to test_depricated;
alter table public.test_new rename to test;

insert into public.test(id) values ('12/12/2010');

select * from public.test_v; <------ (erroneously) returns 1

rollback;
---------------------------

Thanks!

--
Jordan Deitch
https://id.rsa.pub/

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David G. Johnston 2018-09-14 16:23:50 Re: Code of Conduct plan
Previous Message Dave Cramer 2018-09-14 15:49:18 ssl tests README and certs