8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/storage/lmgr/lmgr.c,v 1.75 2005/05/29 22:45:02 tgl Exp $
11
+ * $PostgreSQL: pgsql/src/backend/storage/lmgr/lmgr.c,v 1.76 2005/06/14 22:15:32 tgl Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -142,8 +142,8 @@ LockRelation(Relation relation, LOCKMODE lockmode)
142
142
relation -> rd_lockInfo .lockRelId .dbId ,
143
143
relation -> rd_lockInfo .lockRelId .relId );
144
144
145
- res = LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
146
- lockmode , false);
145
+ res = LockAcquire (LockTableId , & tag , relation -> rd_istemp ,
146
+ lockmode , false, false );
147
147
148
148
/*
149
149
* Check to see if the relcache entry has been invalidated while we
@@ -179,8 +179,8 @@ ConditionalLockRelation(Relation relation, LOCKMODE lockmode)
179
179
relation -> rd_lockInfo .lockRelId .dbId ,
180
180
relation -> rd_lockInfo .lockRelId .relId );
181
181
182
- res = LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
183
- lockmode , true);
182
+ res = LockAcquire (LockTableId , & tag , relation -> rd_istemp ,
183
+ lockmode , false, true);
184
184
185
185
if (res == LOCKACQUIRE_NOT_AVAIL )
186
186
return false;
@@ -214,7 +214,7 @@ UnlockRelation(Relation relation, LOCKMODE lockmode)
214
214
relation -> rd_lockInfo .lockRelId .dbId ,
215
215
relation -> rd_lockInfo .lockRelId .relId );
216
216
217
- LockRelease (LockTableId , & tag , GetTopTransactionId (), lockmode );
217
+ LockRelease (LockTableId , & tag , lockmode , false );
218
218
}
219
219
220
220
/*
@@ -230,14 +230,14 @@ UnlockRelation(Relation relation, LOCKMODE lockmode)
230
230
* relcache entry is up to date.
231
231
*/
232
232
void
233
- LockRelationForSession (LockRelId * relid , LOCKMODE lockmode )
233
+ LockRelationForSession (LockRelId * relid , bool istemprel , LOCKMODE lockmode )
234
234
{
235
235
LOCKTAG tag ;
236
236
237
237
SET_LOCKTAG_RELATION (tag , relid -> dbId , relid -> relId );
238
238
239
- (void ) LockAcquire (LockTableId , & tag , InvalidTransactionId ,
240
- lockmode , false);
239
+ (void ) LockAcquire (LockTableId , & tag , istemprel ,
240
+ lockmode , true, false);
241
241
}
242
242
243
243
/*
@@ -250,7 +250,7 @@ UnlockRelationForSession(LockRelId *relid, LOCKMODE lockmode)
250
250
251
251
SET_LOCKTAG_RELATION (tag , relid -> dbId , relid -> relId );
252
252
253
- LockRelease (LockTableId , & tag , InvalidTransactionId , lockmode );
253
+ LockRelease (LockTableId , & tag , lockmode , true );
254
254
}
255
255
256
256
/*
@@ -272,8 +272,8 @@ LockRelationForExtension(Relation relation, LOCKMODE lockmode)
272
272
relation -> rd_lockInfo .lockRelId .dbId ,
273
273
relation -> rd_lockInfo .lockRelId .relId );
274
274
275
- (void ) LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
276
- lockmode , false);
275
+ (void ) LockAcquire (LockTableId , & tag , relation -> rd_istemp ,
276
+ lockmode , false, false );
277
277
}
278
278
279
279
/*
@@ -288,7 +288,7 @@ UnlockRelationForExtension(Relation relation, LOCKMODE lockmode)
288
288
relation -> rd_lockInfo .lockRelId .dbId ,
289
289
relation -> rd_lockInfo .lockRelId .relId );
290
290
291
- LockRelease (LockTableId , & tag , GetTopTransactionId (), lockmode );
291
+ LockRelease (LockTableId , & tag , lockmode , false );
292
292
}
293
293
294
294
/*
@@ -307,8 +307,8 @@ LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
307
307
relation -> rd_lockInfo .lockRelId .relId ,
308
308
blkno );
309
309
310
- (void ) LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
311
- lockmode , false);
310
+ (void ) LockAcquire (LockTableId , & tag , relation -> rd_istemp ,
311
+ lockmode , false, false );
312
312
}
313
313
314
314
/*
@@ -327,8 +327,8 @@ ConditionalLockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
327
327
relation -> rd_lockInfo .lockRelId .relId ,
328
328
blkno );
329
329
330
- return (LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
331
- lockmode , true) != LOCKACQUIRE_NOT_AVAIL );
330
+ return (LockAcquire (LockTableId , & tag , relation -> rd_istemp ,
331
+ lockmode , false, true) != LOCKACQUIRE_NOT_AVAIL );
332
332
}
333
333
334
334
/*
@@ -344,7 +344,7 @@ UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
344
344
relation -> rd_lockInfo .lockRelId .relId ,
345
345
blkno );
346
346
347
- LockRelease (LockTableId , & tag , GetTopTransactionId (), lockmode );
347
+ LockRelease (LockTableId , & tag , lockmode , false );
348
348
}
349
349
350
350
/*
@@ -365,8 +365,8 @@ LockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
365
365
ItemPointerGetBlockNumber (tid ),
366
366
ItemPointerGetOffsetNumber (tid ));
367
367
368
- (void ) LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
369
- lockmode , false);
368
+ (void ) LockAcquire (LockTableId , & tag , relation -> rd_istemp ,
369
+ lockmode , false, false );
370
370
}
371
371
372
372
/*
@@ -383,7 +383,7 @@ UnlockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode)
383
383
ItemPointerGetBlockNumber (tid ),
384
384
ItemPointerGetOffsetNumber (tid ));
385
385
386
- LockRelease (LockTableId , & tag , GetTopTransactionId (), lockmode );
386
+ LockRelease (LockTableId , & tag , lockmode , false );
387
387
}
388
388
389
389
/*
@@ -400,8 +400,8 @@ XactLockTableInsert(TransactionId xid)
400
400
401
401
SET_LOCKTAG_TRANSACTION (tag , xid );
402
402
403
- (void ) LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
404
- ExclusiveLock , false);
403
+ (void ) LockAcquire (LockTableId , & tag , false ,
404
+ ExclusiveLock , false, false );
405
405
}
406
406
407
407
/*
@@ -419,7 +419,7 @@ XactLockTableDelete(TransactionId xid)
419
419
420
420
SET_LOCKTAG_TRANSACTION (tag , xid );
421
421
422
- LockRelease (LockTableId , & tag , GetTopTransactionId (), ExclusiveLock );
422
+ LockRelease (LockTableId , & tag , ExclusiveLock , false );
423
423
}
424
424
425
425
/*
@@ -438,19 +438,18 @@ void
438
438
XactLockTableWait (TransactionId xid )
439
439
{
440
440
LOCKTAG tag ;
441
- TransactionId myxid = GetTopTransactionId ();
442
441
443
442
for (;;)
444
443
{
445
444
Assert (TransactionIdIsValid (xid ));
446
- Assert (!TransactionIdEquals (xid , myxid ));
445
+ Assert (!TransactionIdEquals (xid , GetTopTransactionId () ));
447
446
448
447
SET_LOCKTAG_TRANSACTION (tag , xid );
449
448
450
- (void ) LockAcquire (LockTableId , & tag , myxid ,
451
- ShareLock , false);
449
+ (void ) LockAcquire (LockTableId , & tag , false ,
450
+ ShareLock , false, false );
452
451
453
- LockRelease (LockTableId , & tag , myxid , ShareLock );
452
+ LockRelease (LockTableId , & tag , ShareLock , false );
454
453
455
454
if (!TransactionIdIsInProgress (xid ))
456
455
break ;
@@ -470,9 +469,11 @@ XactLockTableWait(TransactionId xid)
470
469
* LockDatabaseObject
471
470
*
472
471
* Obtain a lock on a general object of the current database. Don't use
473
- * this for shared objects (such as tablespaces). It's usually unwise to
474
- * apply it to entire relations, also, since a lock taken this way will
475
- * NOT conflict with LockRelation.
472
+ * this for shared objects (such as tablespaces). It's unwise to apply it
473
+ * to relations, also, since a lock taken this way will NOT conflict with
474
+ * LockRelation, and also may be wrongly marked if the relation is temp.
475
+ * (If we ever invent temp objects that aren't tables, we'll want to extend
476
+ * the API of this routine to include an isTempObject flag.)
476
477
*/
477
478
void
478
479
LockDatabaseObject (Oid classid , Oid objid , uint16 objsubid ,
@@ -486,8 +487,8 @@ LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid,
486
487
objid ,
487
488
objsubid );
488
489
489
- (void ) LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
490
- lockmode , false);
490
+ (void ) LockAcquire (LockTableId , & tag , false ,
491
+ lockmode , false, false );
491
492
}
492
493
493
494
/*
@@ -505,7 +506,7 @@ UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid,
505
506
objid ,
506
507
objsubid );
507
508
508
- LockRelease (LockTableId , & tag , GetTopTransactionId (), lockmode );
509
+ LockRelease (LockTableId , & tag , lockmode , false );
509
510
}
510
511
511
512
/*
@@ -525,8 +526,8 @@ LockSharedObject(Oid classid, Oid objid, uint16 objsubid,
525
526
objid ,
526
527
objsubid );
527
528
528
- (void ) LockAcquire (LockTableId , & tag , GetTopTransactionId () ,
529
- lockmode , false);
529
+ (void ) LockAcquire (LockTableId , & tag , false ,
530
+ lockmode , false, false );
530
531
}
531
532
532
533
/*
@@ -544,5 +545,5 @@ UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid,
544
545
objid ,
545
546
objsubid );
546
547
547
- LockRelease (LockTableId , & tag , GetTopTransactionId (), lockmode );
548
+ LockRelease (LockTableId , & tag , lockmode , false );
548
549
}
0 commit comments