MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / LCK_convert_opt

Function LCK_convert_opt

src/jrd/lck.cpp:376–408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

374
375
376bool LCK_convert_opt(thread_db* tdbb, Lock* lock, USHORT level)
377{
378/**************************************
379 *
380 * L C K _ c o n v e r t _ o p t
381 *
382 **************************************
383 *
384 * Functional description
385 * Assert a lock if the parent is not locked in exclusive mode.
386 *
387 **************************************/
388 SET_TDBB(tdbb);
389 fb_assert(LCK_CHECK_LOCK(lock));
390
391 const USHORT old_level = lock->lck_logical;
392 lock->lck_logical = level;
393 Database* dbb = lock->lck_dbb;
394
395 if (dbb->dbb_ast_flags & DBB_assert_locks)
396 {
397 lock->lck_logical = old_level;
398 if (lock->lck_id == 0)
399 {
400 fb_assert(dbb->dbb_ast_flags & DBB_blocking);
401 return LCK_lock(tdbb, lock, level, LCK_NO_WAIT);
402 }
403 return LCK_convert(tdbb, lock, level, LCK_NO_WAIT);
404 }
405
406 fb_assert(LCK_CHECK_LOCK(lock));
407 return true;
408}
409
410
411bool LCK_cancel_wait(Jrd::Attachment* attachment)

Callers 2

CCH_releaseFunction · 0.85
lock_bufferFunction · 0.85

Calls 3

SET_TDBBFunction · 0.85
LCK_lockFunction · 0.85
LCK_convertFunction · 0.85

Tested by

no test coverage detected