Re: [HACKERS] check constraint validation takes access exclusive locks

2012-02-27 Thread hubert depesz lubaczewski
On Sun, Feb 26, 2012 at 03:04:28PM +0100, Pavel Stehule wrote:
 Hello
 
 I rechecked Depesz's article -
 http://www.depesz.com/2011/07/01/waiting-for-9-2-not-valid-checks/
 
 The behave of current HEAD is different than behave described in article.
 
 alter table a validate constraint a_a_check needs a access exclusive
 locks and blocks table modification - I tested inserts.
 
 Is it expected behave.
 
 session one:
 
 postgres=# create table a(a int);
 CREATE TABLE
 postgres=# alter table a add check (a  0) not valid;
 ALTER TABLE
 postgres=# begin;
 BEGIN
 postgres=# alter table a validate constraint a_a_check;
 ALTER TABLE
 
 session two:
 
 postgres=# update a set a = 100; -- it waits to commit in session one

yes, looks like we have revert to access exclusive lock:

$ begin;
BEGIN
Time: 0.352 ms

*$ ALTER TABLE test2 ADD CHECK ( field = 0 ) NOT VALID;
ALTER TABLE
Time: 0.662 ms

*$ select * from pg_locks where pid = pg_backend_pid();
   locktype│ database │ relation │  page  │ tuple  │ virtualxid │ 
transactionid │ classid │ objid  │ objsubid │ virtualtransaction │ pid  │   
 mode │ granted │ fastpath
───┼──┼──┼┼┼┼───┼─┼┼──┼┼──┼─┼─┼──
 relation  │16387 │11070 │ [null] │ [null] │ [null] │
[null] │  [null] │ [null] │   [null] │ 2/174  │ 8975 │ 
AccessShareLock │ t   │ t
 virtualxid│   [null] │   [null] │ [null] │ [null] │ 2/174  │
[null] │  [null] │ [null] │   [null] │ 2/174  │ 8975 │ 
ExclusiveLock   │ t   │ t
 transactionid │   [null] │   [null] │ [null] │ [null] │ [null] │   
854 │  [null] │ [null] │   [null] │ 2/174  │ 8975 │ ExclusiveLock   
│ t   │ f
 relation  │16387 │18653 │ [null] │ [null] │ [null] │
[null] │  [null] │ [null] │   [null] │ 2/174  │ 8975 │ 
AccessExclusiveLock │ t   │ f
(4 rows)

Time: 0.921 ms

Relation 18653 is table test2, of course.

*$ commit;
COMMIT

$ begin;
BEGIN
Time: 0.271 ms

*$ ALTER TABLE test2 VALIDATE CONSTRAINT test2_field_check;
ALTER TABLE
Time: 286.035 ms

*$ select * from pg_locks where pid = pg_backend_pid();
   locktype│ database │ relation │  page  │ tuple  │ virtualxid │ 
transactionid │ classid │ objid  │ objsubid │ virtualtransaction │ pid  │   
 mode │ granted │ fastpath
───┼──┼──┼┼┼┼───┼─┼┼──┼┼──┼─┼─┼──
 relation  │16387 │11070 │ [null] │ [null] │ [null] │
[null] │  [null] │ [null] │   [null] │ 2/175  │ 8975 │ 
AccessShareLock │ t   │ t
 virtualxid│   [null] │   [null] │ [null] │ [null] │ 2/175  │
[null] │  [null] │ [null] │   [null] │ 2/175  │ 8975 │ 
ExclusiveLock   │ t   │ t
 transactionid │   [null] │   [null] │ [null] │ [null] │ [null] │   
855 │  [null] │ [null] │   [null] │ 2/175  │ 8975 │ ExclusiveLock   
│ t   │ f
 relation  │16387 │18653 │ [null] │ [null] │ [null] │
[null] │  [null] │ [null] │   [null] │ 2/175  │ 8975 │ 
AccessExclusiveLock │ t   │ f
(4 rows)

Time: 0.631 ms

And it clearly shows that validation of constraint did lock the table
using AccessExclusiveLock, which kinda defeats the purpose of
INVALID/VALIDATE.

Best regards,

depesz

-- 
The best thing about modern society is how easy it is to avoid contact with it.
 http://depesz.com/

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


Re: [HACKERS] check constraint validation takes access exclusive locks

2012-02-27 Thread Alvaro Herrera

Excerpts from hubert depesz lubaczewski's message of lun feb 27 10:02:57 -0300 
2012:
 On Sun, Feb 26, 2012 at 03:04:28PM +0100, Pavel Stehule wrote:
  Hello
  
  I rechecked Depesz's article -
  http://www.depesz.com/2011/07/01/waiting-for-9-2-not-valid-checks/
  
  The behave of current HEAD is different than behave described in article.
  
  alter table a validate constraint a_a_check needs a access exclusive
  locks and blocks table modification - I tested inserts.

 yes, looks like we have revert to access exclusive lock:

See commits
2c3d9db56d5d49bdc777b174982251c01348e3d8
and
a195e3c34f1eeb6a607c342121edf48e49067ea9

-- 
Álvaro Herrera alvhe...@commandprompt.com
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

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


Re: [HACKERS] check constraint validation takes access exclusive locks

2012-02-27 Thread Pavel Stehule
2012/2/27 Alvaro Herrera alvhe...@commandprompt.com:

 Excerpts from hubert depesz lubaczewski's message of lun feb 27 10:02:57 
 -0300 2012:
 On Sun, Feb 26, 2012 at 03:04:28PM +0100, Pavel Stehule wrote:
  Hello
 
  I rechecked Depesz's article -
  http://www.depesz.com/2011/07/01/waiting-for-9-2-not-valid-checks/
 
  The behave of current HEAD is different than behave described in article.
 
  alter table a validate constraint a_a_check needs a access exclusive
  locks and blocks table modification - I tested inserts.

 yes, looks like we have revert to access exclusive lock:

 See commits
 2c3d9db56d5d49bdc777b174982251c01348e3d8
 and
 a195e3c34f1eeb6a607c342121edf48e49067ea9

 this block a sense of NOT VALIDATE constraints. Is it final behave or
will be fixed on 9.2?

Regards

Pavel




 --
 Álvaro Herrera alvhe...@commandprompt.com
 The PostgreSQL Company - Command Prompt, Inc.
 PostgreSQL Replication, Consulting, Custom Development, 24x7 support

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


Re: [HACKERS] check constraint validation takes access exclusive locks

2012-02-27 Thread Alvaro Herrera

Excerpts from Pavel Stehule's message of lun feb 27 10:41:32 -0300 2012:
 
 2012/2/27 Alvaro Herrera alvhe...@commandprompt.com:
 
  Excerpts from hubert depesz lubaczewski's message of lun feb 27 10:02:57 
  -0300 2012:
  On Sun, Feb 26, 2012 at 03:04:28PM +0100, Pavel Stehule wrote:
   Hello
  
   I rechecked Depesz's article -
   http://www.depesz.com/2011/07/01/waiting-for-9-2-not-valid-checks/
  
   The behave of current HEAD is different than behave described in article.
  
   alter table a validate constraint a_a_check needs a access exclusive
   locks and blocks table modification - I tested inserts.
 
  yes, looks like we have revert to access exclusive lock:
 
  See commits
  2c3d9db56d5d49bdc777b174982251c01348e3d8
  and
  a195e3c34f1eeb6a607c342121edf48e49067ea9
 
  this block a sense of NOT VALIDATE constraints.

Yeah :-(

 Is it final behave or will be fixed on 9.2?

It's final for 9.2 AFAIK.  It's supposed to get fixed during the 9.3
timeframe.

-- 
Álvaro Herrera alvhe...@commandprompt.com
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

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


Re: [HACKERS] check constraint validation takes access exclusive locks

2012-02-27 Thread Pavel Stehule
2012/2/27 Alvaro Herrera alvhe...@commandprompt.com:

 Excerpts from Pavel Stehule's message of lun feb 27 10:41:32 -0300 2012:

 2012/2/27 Alvaro Herrera alvhe...@commandprompt.com:
 
  Excerpts from hubert depesz lubaczewski's message of lun feb 27 10:02:57 
  -0300 2012:
  On Sun, Feb 26, 2012 at 03:04:28PM +0100, Pavel Stehule wrote:
   Hello
  
   I rechecked Depesz's article -
   http://www.depesz.com/2011/07/01/waiting-for-9-2-not-valid-checks/
  
   The behave of current HEAD is different than behave described in 
   article.
  
   alter table a validate constraint a_a_check needs a access exclusive
   locks and blocks table modification - I tested inserts.
 
  yes, looks like we have revert to access exclusive lock:
 
  See commits
  2c3d9db56d5d49bdc777b174982251c01348e3d8
  and
  a195e3c34f1eeb6a607c342121edf48e49067ea9

  this block a sense of NOT VALIDATE constraints.

 Yeah :-(

 Is it final behave or will be fixed on 9.2?

 It's final for 9.2 AFAIK.  It's supposed to get fixed during the 9.3
 timeframe.

ok

thank you for info

Pavel


 --
 Álvaro Herrera alvhe...@commandprompt.com
 The PostgreSQL Company - Command Prompt, Inc.
 PostgreSQL Replication, Consulting, Custom Development, 24x7 support

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