Attached is a patch implementing:
create or replace rule ...
create or replace view ...
It passes all regression tests. There's only one really sketchy part of
the patch: UpdateAttributeTuples(). This routine is fairly dangerous since
it simply removes a given relid's pg_attribute entries and creates a new
set basic on a given TupleDesc. Naturally, it is only useful for views.
It is important to have this functionality so that you can do something
like:
template1=# create view abc as select 'test'::text as a;
CREATE VIEW
template1=# select * from abc;
a
------
test
(1 row)
template1=# create or replace view abc as select '1'::int2 as a;
CREATE VIEW
template1=# select * from abc;
a
---
1
(1 row)
Regardless, the patch may need some cleaning up. Unfortunately, I don't
have enough time on my hands over the coming week. Considering beta is
coming up I thought it best to submit and see what happens.
Gavin