Re: Lock a viewe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Gaetano Mendola wrote:
> Hi,
> I was wondering if there is a clean view to lock the usage of a view.
> 
> Basically during a schema migration, with applications still running a
> typical
> schema change is:
> 
> BEGIN;
> ALTER TABLE x ADD COLUMN (a INTEGER);
> CREATE OR REPLACE VIEW v_x
> AS
> SELECT a,b FROM x;
> COMMIT;
> 
> now the issue is that if an application performs a:
> 
> SELECT * from v_x;
> 
> between the ALTER and the view redefinition then a deadlock happens.
> 
> I'm preventing this issue doing a:
> 
> ALTER VIEW v_x ALTER COLUMN b DROP DEFAULT;
> (anyway there was no default on the view)
> before the ALTER TABLE, that's basically reorders the locks sequence
> avoiding the dead lock.

So what you want is
   LOCK VIEW f;
(which is exactly what your hack does) but we don't allow that: you can
only lock tables.  I wonder what's the reason for that restriction.
AFAICT changing it is trivial, since it just requires a very minor
change in RangeVarCallbackForLockTable() to allow views.

> Is there a clean way to achieve it without the "hack"?

I can't think of anything.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


-- 
Sent via pgsql-admin mailing list (pgsql-admin@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux