Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit66126f9

Browse files
committed
Add new contrib function pgrowlocks. See README.pgrowlocks for more details.
1 parent044c3b4 commit66126f9

File tree

5 files changed

+488
-0
lines changed

5 files changed

+488
-0
lines changed

‎contrib/pgrowlocks/Makefile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#-------------------------------------------------------------------------
2+
#
3+
# pgrowlocks Makefile
4+
#
5+
# $PostgreSQL: pgsql/contrib/pgrowlocks/Makefile,v 1.1 2006/04/23 01:12:58 ishii Exp $
6+
#
7+
#-------------------------------------------------------------------------
8+
9+
SRCS= pgrowlocks.c
10+
11+
MODULE_big= pgrowlocks
12+
OBJS=$(SRCS:.c=.o)
13+
DOCS= README.pgrowlocks README.pgrowlocks.euc_jp
14+
DATA_built= pgrowlocks.sql
15+
16+
ifdefUSE_PGXS
17+
PGXS =$(shell pg_config --pgxs)
18+
include$(PGXS)
19+
else
20+
subdir = contrib/pgrowlocks
21+
top_builddir = ../..
22+
include$(top_builddir)/src/Makefile.global
23+
include$(top_srcdir)/contrib/contrib-global.mk
24+
endif
25+

‎contrib/pgrowlocks/README.pgrowlocks

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
$PostgreSQL: pgsql/contrib/pgrowlocks/README.pgrowlocks,v 1.1 2006/04/23 01:12:58 ishii Exp $
2+
3+
pgrowlocks READMETatsuo Ishii
4+
5+
1. What is pgrowlocks?
6+
7+
pgrowlocks shows row locking information for specified table.
8+
9+
pgrowlocks returns following data type:
10+
11+
CREATE TYPE pgrowlocks_type AS (
12+
locked_row TID,-- row TID
13+
lock_type TEXT,-- lock type
14+
locker XID,-- locking XID
15+
multi bool,-- multi XID?
16+
xids xid[],-- multi XIDs
17+
pids INTEGER[]-- locker's process id
18+
);
19+
20+
Here is a sample execution of pgrowlocks:
21+
22+
test=# SELECT * FROM pgrowlocks('t1');
23+
locked_row | lock_type | locker | multi | xids | pids
24+
------------+-----------+--------+-------+-----------+---------------
25+
(0,1) | Shared | 19 | t | {804,805} | {29066,29068}
26+
(0,2) | Shared | 19 | t | {804,805} | {29066,29068}
27+
(0,3) | Exclusive | 804 | f | {804} | {29066}
28+
(0,4) | Exclusive | 804 | f | {804} | {29066}
29+
(4 rows)
30+
31+
locked_row-- tuple ID(TID) of each locked rows
32+
lock_type-- "Shared" for shared lock, "Exclusive" for exclusive lock
33+
locker-- transaction ID of locker (note 1)
34+
multi-- "t" if locker is a multi transaction, otherwise "f"
35+
xids-- XIDs of lockers (note 2)
36+
pids-- process ids of locking backends
37+
38+
note1: if the locker is multi transaction, it represents the multi ID
39+
40+
note2: if the locker is multi, multiple data are shown
41+
42+
2. Installing pgrowlocks
43+
44+
Installing pgrowlocks requires PostgreSQL 8.0 or later source tree.
45+
46+
$ cd /usr/local/src/postgresql-8.1/contrib
47+
$ tar xfz /tmp/pgrowlocks-1.0.tar.gz
48+
49+
If you are using PostgreSQL 8.0, you need to modify pgrowlocks source code.
50+
Around line 61, you will see:
51+
52+
#undef MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
53+
54+
change this to:
55+
56+
#define MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
57+
58+
$ make
59+
$ make install
60+
61+
$ psql -e -f pgrowlocks.sql test
62+
63+
3. How to use pgrowlocks
64+
65+
The calling sequence for pgrowlocks is as follows:
66+
67+
CREATE OR REPLACE FUNCTION pgrowlocks(text) RETURNS pgrowlocks_type
68+
AS 'MODULE_PATHNAME', 'pgrowlocks'
69+
LANGUAGE 'c' WITH (isstrict);
70+
71+
The parameter is a name of table. pgrowlocks returns type pgrowlocks_type.
72+
73+
pgrowlocks grab AccessShareLock for the target table and read each
74+
row one by one to get the row locking information. You should
75+
notice that:
76+
77+
1) if the table is exclusive locked by someone else, pgrowlocks
78+
will be blocked.
79+
80+
2) pgrowlocks may show incorrect information if there's a new
81+
lock or a lock is freeed while its execution.
82+
83+
pgrowlocks does not show the contents of locked rows. If you want
84+
to take a look at the row contents at the same time, you could do
85+
something like this:
86+
87+
SELECT * FROM accounts AS a, pgrowlocks('accounts') AS p WHERE p.locked_ row = a.ctid;
88+
89+
90+
4. License
91+
92+
pgrowlocks is distribute under (modified) BSD license described in
93+
the source file.
94+
95+
5. History
96+
97+
2006/03/21 pgrowlocks version 1.1 released (tested on 8.2 current)
98+
2005/08/22 pgrowlocks version 1.0 released
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
$PostgreSQL: pgsql/contrib/pgrowlocks/README.pgrowlocks.euc_jp,v 1.1 2006/04/23 01:12:58 ishii Exp $
2+
3+
pgrowlocks README�а�ã��
4+
5+
1. pgrowlocks�Ȥ�
6+
7+
pgrowlocks�ϡ����ꤵ�줿�ơ��֥�ιԥ��å��˴ؤ�������ɽ�����ޤ���
8+
9+
pgrowlocks���֤����ϡ��ʲ��Τ褦�ˤʤ�ޤ���
10+
11+
CREATE TYPE pgrowlocks_type AS (
12+
locked_row TID,-- row TID
13+
lock_type TEXT,-- lock type
14+
locker XID,-- locking XID
15+
multi bool,-- multi XID?
16+
xids xid[],-- multi XIDs
17+
pids INTEGER[]-- locker's process id
18+
);
19+
20+
�¹���򼨤��ޤ���
21+
22+
test=# SELECT * FROM pgrowlocks('t1');
23+
locked_row | lock_type | locker | multi | xids | pids
24+
------------+-----------+--------+-------+-----------+---------------
25+
(0,1) | Shared | 19 | t | {804,805} | {29066,29068}
26+
(0,2) | Shared | 19 | t | {804,805} | {29066,29068}
27+
(0,3) | Exclusive | 804 | f | {804} | {29066}
28+
(0,4) | Exclusive | 804 | f | {804} | {29066}
29+
(4 rows)
30+
31+
�ƹ��ܤ������Ǥ���
32+
33+
locked_row-- ���å����줿�ԤΥ��ץ�ID(TID)
34+
lock_type-- ��ͭ���å��ʤ�"Shared"����¾���å��ʤ�"Exclusive"
35+
locker-- ���å��򤫤��Ƥ���ȥ�󥶥������ID[��1]
36+
multi-- locker���ޥ���ȥ�󥶥������ʤ�t�����Ǥʤ����f
37+
xids-- ���å��򤫤��Ƥ���ȥ�󥶥������ID[��2]
38+
pids-- ���å��򤫤��Ƥ���Хå�����ɥץ������Υץ�����ID[��2]
39+
40+
[��1: locker���ޥ���ʤ顤�ȥ�󥶥������ID�ǤϤʤ��ƥޥ��ID�ˤʤ�
41+
�ޤ���]
42+
43+
[��2: locker���ޥ���ξ�硤ʣ���Υǡ�����ɽ������ޤ���]
44+
45+
2. pgrowlocks�Υ��󥹥ȡ���
46+
47+
pgrowlocks�Υ��󥹥ȡ���ˤϡ�PostgreSQL�򥤥󥹥ȡ��뤷���Ȥ��Υ���
48+
���ĥ꡼��ɬ�פǤ������ΤȤ����б����Ƥ���С�������PostgreSQL
49+
8.0�ʹߤǤ���
50+
51+
�����Ǥ�PostgreSQL�Υ�������/usr/local/src/postgresql-8.1/��Ÿ����
52+
��Ƥ����ΤȤ��ޤ���
53+
54+
1) pgrowlocks�Υ�������Ÿ�����ޤ����������ե������
55+
/tmp/pgrowlocks-1.0.tar.gz���֤��Ƥ����ΤȤ��ޤ���
56+
57+
$ cd /usr/local/src/postgresql-8.1/contrib
58+
$ tar xfz pgrowlocks-1.0.tar.gz
59+
60+
2) PostgreSQL 8.0�ξ��ϡ��������ΰ����˽�����ɬ�פǤ���
61+
pgrowlocks.c��61�����դ��
62+
63+
#undef MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
64+
65+
�Ȥ����Τ�����Τǡ������
66+
67+
#define MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
68+
69+
�˽񤭴����ޤ�(undef->define�ˤ��ޤ�)��
70+
71+
3) ����ѥ��뤷�ƴؿ��ζ�ͭ�饤�֥��򥤥󥹥ȡ��뤷�ޤ���
72+
73+
$ make
74+
$ make install
75+
76+
4) �桼������ؿ�����Ͽ���ޤ���
77+
78+
$ psql -e -f /usr/local/pgsql/share/contrib/pgrowlocks.sql test
79+
80+
������Ǥ�"test"�Ȥ����ǡ����١�������Ͽ���Ƥ��ޤ������⤷¾�Υǡ�
81+
���١�������Ͽ������Ϥ������ɤ��ؤ��Ƥ���������
82+
83+
3. pgrowlocks�λȤ���
84+
85+
pgrowlocks�θƤӽФ������ϰʲ��Ǥ���
86+
87+
CREATE OR REPLACE FUNCTION pgrowlocks(text) RETURNS pgrowlocks_type
88+
AS 'MODULE_PATHNAME', 'pgrowlocks'
89+
LANGUAGE 'c' WITH (isstrict);
90+
91+
������: �ơ��֥�̾
92+
93+
�ؿ�������pgrowlocks_type���Ǥ���
94+
95+
pgrowlocks�ϥơ��֥��AccessShareLock���å��򤫤���1�Ԥ����ɤ߽Ф�
96+
�ƤϹԥ��å��������äƤ��뤫�ɤ��������å����ޤ����ʲ����������դ�
97+
�Ƥ���������
98+
99+
1) �����ơ��֥����¾���å��������äƤ���ȡ�pgrowlocks�μ¹Ԥϥ֥���
100+
������ޤ���
101+
102+
2) pgrowlocks�μ¹���˿����ˤ����ä��ꡤ������줿�ԥ��å��˴ؤ���
103+
�����pgrowlocks�μ¹Է�̤�ȿ�Ǥ���Ƥ��ʤ���ǽ��������ޤ���
104+
105+
106+
pgrowlocks�ϥ��å����줿�Ԥ����Ƥ�ɽ�����ޤ��󡥹����Ƥ򸫤������
107+
�ϡ��ơ��֥��pgrowlocks��locked_rows��Ƿ�礷�ޤ�����򼨤��ޤ���
108+
109+
SELECT * FROM accounts AS a, pgrowlocks('accounts') AS p WHERE p.locked_ row = a.ctid;
110+
111+
112+
4. pgrowlocks�Υ饤���󥹾��ˤĤ���
113+
114+
pgrowlocks.c����Ƭ�˽񤤤Ƥ����̤�Ǥ�(����BSD�饤���󥹤˽स�Ƥ�
115+
�ޤ�)���ޤ���pgrowlocks �ϴ�����̵�ݾڤǤ���pgrowlocks ����Ѥ�����
116+
�Ȥˤ�ä������뤤���ʤ��̤˴ؤ��Ƥ���Ǥ���餤�ޤ���
117+
118+
5. ��������
119+
120+
2006/03/21 pgrowlocks �С������ 1.1��꡼��(8.2 current�ǥƥ���)
121+
2005/08/22 pgrowlocks �С������ 1.0��꡼��

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp