2016-03-10 22:24 GMT+01:00 Robert Haas <robertmh...@gmail.com>:

>
> rhaas=# select query, state, wait_event, wait_event_type from
> pg_stat_activity;
>                                   query
>   | state  |  wait_event   | wait_event_type
>
> -------------------------------------------------------------------------+--------+---------------+-----------------
>  select query, state, wait_event, wait_event_type from
> pg_stat_activity; | active |               |
>  select * from foo for update;
>   | active | transactionid | Lock
> (2 rows)
>
> ...which looks right to me.
>
> > session two:
> > rollback; begin; select * from foo where a = 10 for update;
> > session two is waiting again
>
> I don't see how you can do this here - the session is blocked.
>
> There could well be a bug here, but I need a little more help to find it.
>

Maybe it be clear from attached text file

Regards



>
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
=========================================== <=== FIRST SESSION
postgres=# begin;
BEGIN
Time: 0.498 ms
postgres=# select * from foo for update;
┌────┐
│ a  │
╞════╡
│ 10 │
└────┘
(1 row)

Time: 1.152 ms
==========================================

****************************************** <=== SECOND SESSION
postgres=# begin;
BEGIN
Time: 0.426 ms
postgres=# select * from foo for update;
******************************************

==========================================
postgres=# select pid, wait_event, state, query from pg_stat_activity ;
┌───────┬───────────────┬────────┬──────────────────────────────────────────────────────────────┐
│  pid  │  wait_event   │ state  │                            query             
                │
╞═══════╪═══════════════╪════════╪══════════════════════════════════════════════════════════════╡
│ 22870 │ transactionid │ active │ select * from foo for update;                
                │
│ 22874 │ ( null )      │ active │ select pid, wait_event, state, query from 
pg_stat_activity ; │
└───────┴───────────────┴────────┴──────────────────────────────────────────────────────────────┘
(2 rows)

Time: 1.666 ms --- OOK
=========================================

*****************************************
^CCancel request sent
ERROR:  57014: canceling statement due to user request
CONTEXT:  while locking tuple (0,1) in relation "foo"
LOCATION:  ProcessInterrupts, postgres.c:2977
Time: 121895.558 ms
postgres=# rollback;
ROLLBACK
Time: 0.648 ms
postgres=# begin;
BEGIN
Time: 0.461 ms
postgres=# select * from foo where a = 10 for update;
*****************************************

=========================================
┌───────┬───────────────┬────────┬──────────────────────────────────────────────────────────────┐
│  pid  │  wait_event   │ state  │                            query             
                │
╞═══════╪═══════════════╪════════╪══════════════════════════════════════════════════════════════╡
│ 22870 │ transactionid │ active │ select * from foo for update;                
                │ <=== expecting select * from foo where a = 10 for update
│ 22874 │ ( null )      │ active │ select pid, wait_event, state, query from 
pg_stat_activity ; │
└───────┴───────────────┴────────┴──────────────────────────────────────────────────────────────┘
(2 rows)

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

Reply via email to