June 2001
Intermediate to advanced
688 pages
19h 18m
English
If an application runs with locking specified, but not transactions (for example, DBENV→open is called with DB_INIT_LOCK or DB_INIT_CDB specified, but not DB_INIT_TXN), locks are normally acquired during each Berkeley DB operation and released before the operation returns to the caller. The only exception is in the case of cursor operations. Cursors identify a particular position in a file. For this reason, cursors must retain read locks across cursor calls to make sure that the position is uniquely identifiable during a subsequent cursor call, and so that an operation using DB_CURRENT will always reference the same record as a previous cursor call. Such cursor locks cannot be released until the cursor is either ...