Re: [HACKERS] disallow LOCK on a view - the Tom Lane remix

Alfred Perlstein <bright@wintelcom.net>

From: Alfred Perlstein <bright@wintelcom.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Mark Hollomon <mhh@mindspring.com>, pgsql-hackers@postgresql.org, pgsql-patches@postgresql.org
Date: 2000-08-30T05:05:11Z
Lists: pgsql-hackers
* Tom Lane <tgl@sss.pgh.pa.us> [000829 20:52] wrote:
> Alfred Perlstein <bright@wintelcom.net> writes:
> > Ok, I'm wondering if this patch will cause problems locking a table
> > that has had:
> > CREATE RULE "_RETfoo" AS ON SELECT TO foo DO INSTEAD SELECT * FROM foo1;
> > I need to be able to lock the table 'foo' exclusively while I swap
> > out the underlying rule to forward to another table.
> 
> Uh, do you actually need any sort of lock for that?
> 
> Seems to me that if you do
> 	BEGIN;
> 	DELETE RULE "_RETfoo";
> 	CREATE RULE "_RETfoo" AS ...;
> 	COMMIT;
> then any other transaction will see either the old rule definition
> or the new one.  No intermediate state, no need for a lock as such.
> 

Ugh!  I keep on forgetting that transactions are atomic.  Thanks.

> BTW, this seems to be a counterexample for my prior suggestion that
> pg_class should have a "relviewrule" OID column.  If it did, you'd
> have to update that field when doing something like the above.
> Pain-in-the-neck factor looms large...

I'd prefer this stuff be as simple as possible, it's already
getting quite complex.

thanks,
-Alfred