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/

Reply via email to