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

Commit752f064

Browse files
committed
Fix and improve description of locktag types in lock.h
The description of the lock type for speculative insertions wasincorrect, being copy-pasted from another one.As discussed, also move the description for all the fields of lock tagtypes from the structure listing lock tag types to the set of macrossetting each LOCKTAG.Author: John NaylorDiscussion:https://postgr.es/m/CACPNZCtA0-ybaC4fFfaDq_8p_TUOLvGxZH9Dm-=TMHZJarBa7Q@mail.gmail.com
1 parent97b1654 commit752f064

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

‎src/include/storage/lock.h

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -138,27 +138,13 @@ typedef uint16 LOCKMETHODID;
138138
typedefenumLockTagType
139139
{
140140
LOCKTAG_RELATION,/* whole relation */
141-
/* ID info for a relation is DB OID + REL OID; DB OID = 0 if shared */
142141
LOCKTAG_RELATION_EXTEND,/* the right to extend a relation */
143-
/* same ID info as RELATION */
144142
LOCKTAG_PAGE,/* one page of a relation */
145-
/* ID info for a page is RELATION info + BlockNumber */
146143
LOCKTAG_TUPLE,/* one physical tuple */
147-
/* ID info for a tuple is PAGE info + OffsetNumber */
148144
LOCKTAG_TRANSACTION,/* transaction (for waiting for xact done) */
149-
/* ID info for a transaction is its TransactionId */
150145
LOCKTAG_VIRTUALTRANSACTION,/* virtual transaction (ditto) */
151-
/* ID info for a virtual transaction is its VirtualTransactionId */
152146
LOCKTAG_SPECULATIVE_TOKEN,/* speculative insertion Xid and token */
153-
/* ID info for a transaction is its TransactionId */
154147
LOCKTAG_OBJECT,/* non-relation database object */
155-
/* ID info for an object is DB OID + CLASS OID + OBJECT OID + SUBID */
156-
157-
/*
158-
* Note: object ID has same representation as in pg_depend and
159-
* pg_description, but notice that we are constraining SUBID to 16 bits.
160-
* Also, we use DB OID = 0 for shared objects such as tablespaces.
161-
*/
162148
LOCKTAG_USERLOCK,/* reserved for old contrib/userlock code */
163149
LOCKTAG_ADVISORY/* advisory user locks */
164150
}LockTagType;
@@ -190,6 +176,8 @@ typedef struct LOCKTAG
190176
* the physical fields of LOCKTAG. Use these to set up LOCKTAG values,
191177
* rather than accessing the fields directly. Note multiple eval of target!
192178
*/
179+
180+
/* ID info for a relation is DB OID + REL OID; DB OID = 0 if shared */
193181
#defineSET_LOCKTAG_RELATION(locktag,dboid,reloid) \
194182
((locktag).locktag_field1 = (dboid), \
195183
(locktag).locktag_field2 = (reloid), \
@@ -198,6 +186,7 @@ typedef struct LOCKTAG
198186
(locktag).locktag_type = LOCKTAG_RELATION, \
199187
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
200188

189+
/* same ID info as RELATION */
201190
#defineSET_LOCKTAG_RELATION_EXTEND(locktag,dboid,reloid) \
202191
((locktag).locktag_field1 = (dboid), \
203192
(locktag).locktag_field2 = (reloid), \
@@ -206,6 +195,7 @@ typedef struct LOCKTAG
206195
(locktag).locktag_type = LOCKTAG_RELATION_EXTEND, \
207196
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
208197

198+
/* ID info for a page is RELATION info + BlockNumber */
209199
#defineSET_LOCKTAG_PAGE(locktag,dboid,reloid,blocknum) \
210200
((locktag).locktag_field1 = (dboid), \
211201
(locktag).locktag_field2 = (reloid), \
@@ -214,6 +204,7 @@ typedef struct LOCKTAG
214204
(locktag).locktag_type = LOCKTAG_PAGE, \
215205
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
216206

207+
/* ID info for a tuple is PAGE info + OffsetNumber */
217208
#defineSET_LOCKTAG_TUPLE(locktag,dboid,reloid,blocknum,offnum) \
218209
((locktag).locktag_field1 = (dboid), \
219210
(locktag).locktag_field2 = (reloid), \
@@ -222,6 +213,7 @@ typedef struct LOCKTAG
222213
(locktag).locktag_type = LOCKTAG_TUPLE, \
223214
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
224215

216+
/* ID info for a transaction is its TransactionId */
225217
#defineSET_LOCKTAG_TRANSACTION(locktag,xid) \
226218
((locktag).locktag_field1 = (xid), \
227219
(locktag).locktag_field2 = 0, \
@@ -230,6 +222,7 @@ typedef struct LOCKTAG
230222
(locktag).locktag_type = LOCKTAG_TRANSACTION, \
231223
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
232224

225+
/* ID info for a virtual transaction is its VirtualTransactionId */
233226
#defineSET_LOCKTAG_VIRTUALTRANSACTION(locktag,vxid) \
234227
((locktag).locktag_field1 = (vxid).backendId, \
235228
(locktag).locktag_field2 = (vxid).localTransactionId, \
@@ -238,6 +231,10 @@ typedef struct LOCKTAG
238231
(locktag).locktag_type = LOCKTAG_VIRTUALTRANSACTION, \
239232
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
240233

234+
/*
235+
* ID info for a speculative insert is TRANSACTION info +
236+
* its speculative insert counter.
237+
*/
241238
#defineSET_LOCKTAG_SPECULATIVE_INSERTION(locktag,xid,token) \
242239
((locktag).locktag_field1 = (xid), \
243240
(locktag).locktag_field2 = (token),\
@@ -246,6 +243,13 @@ typedef struct LOCKTAG
246243
(locktag).locktag_type = LOCKTAG_SPECULATIVE_TOKEN, \
247244
(locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
248245

246+
/*
247+
* ID info for an object is DB OID + CLASS OID + OBJECT OID + SUBID
248+
*
249+
* Note: object ID has same representation as in pg_depend and
250+
* pg_description, but notice that we are constraining SUBID to 16 bits.
251+
* Also, we use DB OID = 0 for shared objects such as tablespaces.
252+
*/
249253
#defineSET_LOCKTAG_OBJECT(locktag,dboid,classoid,objoid,objsubid) \
250254
((locktag).locktag_field1 = (dboid), \
251255
(locktag).locktag_field2 = (classoid), \

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp