mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Move most /contrib README files into SGML. Some still need conversion
or will never be converted.
This commit is contained in:
@ -1,88 +0,0 @@
|
||||
$PostgreSQL: pgsql/contrib/pgrowlocks/README.pgrowlocks,v 1.2 2007/08/27 00:13:51 tgl Exp $
|
||||
|
||||
pgrowlocks README Tatsuo Ishii
|
||||
|
||||
1. What is pgrowlocks?
|
||||
|
||||
pgrowlocks shows row locking information for specified table.
|
||||
|
||||
pgrowlocks returns following columns:
|
||||
|
||||
locked_row TID, -- row TID
|
||||
lock_type TEXT, -- lock type
|
||||
locker XID, -- locking XID
|
||||
multi bool, -- multi XID?
|
||||
xids xid[], -- multi XIDs
|
||||
pids INTEGER[] -- locker's process id
|
||||
|
||||
Here is a sample execution of pgrowlocks:
|
||||
|
||||
test=# SELECT * FROM pgrowlocks('t1');
|
||||
locked_row | lock_type | locker | multi | xids | pids
|
||||
------------+-----------+--------+-------+-----------+---------------
|
||||
(0,1) | Shared | 19 | t | {804,805} | {29066,29068}
|
||||
(0,2) | Shared | 19 | t | {804,805} | {29066,29068}
|
||||
(0,3) | Exclusive | 804 | f | {804} | {29066}
|
||||
(0,4) | Exclusive | 804 | f | {804} | {29066}
|
||||
(4 rows)
|
||||
|
||||
locked_row -- tuple ID(TID) of each locked rows
|
||||
lock_type -- "Shared" for shared lock, "Exclusive" for exclusive lock
|
||||
locker -- transaction ID of locker (note 1)
|
||||
multi -- "t" if locker is a multi transaction, otherwise "f"
|
||||
xids -- XIDs of lockers (note 2)
|
||||
pids -- process ids of locking backends
|
||||
|
||||
note1: if the locker is multi transaction, it represents the multi ID
|
||||
|
||||
note2: if the locker is multi, multiple data are shown
|
||||
|
||||
2. Installing pgrowlocks
|
||||
|
||||
Installing pgrowlocks requires PostgreSQL 8.0 or later source tree.
|
||||
|
||||
$ cd /usr/local/src/postgresql-8.1/contrib
|
||||
$ tar xfz /tmp/pgrowlocks-1.0.tar.gz
|
||||
|
||||
If you are using PostgreSQL 8.0, you need to modify pgrowlocks source code.
|
||||
Around line 61, you will see:
|
||||
|
||||
#undef MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
|
||||
|
||||
change this to:
|
||||
|
||||
#define MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
|
||||
|
||||
$ make
|
||||
$ make install
|
||||
|
||||
$ psql -e -f pgrowlocks.sql test
|
||||
|
||||
3. How to use pgrowlocks
|
||||
|
||||
pgrowlocks grab AccessShareLock for the target table and read each
|
||||
row one by one to get the row locking information. You should
|
||||
notice that:
|
||||
|
||||
1) if the table is exclusive locked by someone else, pgrowlocks
|
||||
will be blocked.
|
||||
|
||||
2) pgrowlocks may show incorrect information if there's a new
|
||||
lock or a lock is freeed while its execution.
|
||||
|
||||
pgrowlocks does not show the contents of locked rows. If you want
|
||||
to take a look at the row contents at the same time, you could do
|
||||
something like this:
|
||||
|
||||
SELECT * FROM accounts AS a, pgrowlocks('accounts') AS p WHERE p.locked_ row = a.ctid;
|
||||
|
||||
|
||||
4. License
|
||||
|
||||
pgrowlocks is distribute under (modified) BSD license described in
|
||||
the source file.
|
||||
|
||||
5. History
|
||||
|
||||
2006/03/21 pgrowlocks version 1.1 released (tested on 8.2 current)
|
||||
2005/08/22 pgrowlocks version 1.0 released
|
Reference in New Issue
Block a user