MediaWiki  1.23.3
IDBAccessObject Interface Reference

Interface for database access objects. More...

Inheritance diagram for IDBAccessObject:

Public Attributes

const READ_LATEST = 1
 
const READ_LOCKING = 3
 
const READ_NONE = -1
 
const READ_NORMAL = 0
 

Detailed Description

Interface for database access objects.

Classes using this support a set of constants in a bitfield argument to their data loading functions. In general, objects should assume READ_NORMAL if no flags are explicitly given, though certain objects may assume READ_LATEST for common use case or legacy reasons.

There are three types of reads:

  • READ_NORMAL : Potentially cached read of data (e.g. from a slave or stale replica)
  • READ_LATEST : Up-to-date read as of transaction start (e.g. from master or a quorum read)
  • READ_LOCKING : Up-to-date read as of now, that locks the records for the transaction

Callers should use READ_NORMAL (or pass in no flags) unless the read determines a write. In theory, such cases may require READ_LOCKING, though to avoid contention, READ_LATEST is often good enough. If UPDATE race condition checks are required on a row and expensive code must run after the row is fetched to determine the UPDATE, it may help to do something like:

  • a) Read the current row
  • b) Determine the new row (expensive, so we don't want to hold locks now)
  • c) Re-read the current row with READ_LOCKING; if it changed then bail out
  • d) otherwise, do the updates
Since
1.20

Definition at line 47 of file IDBAccessObject.php.

Member Data Documentation

◆ READ_LATEST

◆ READ_LOCKING

const IDBAccessObject::READ_LOCKING = 3

◆ READ_NONE

const IDBAccessObject::READ_NONE = -1

Definition at line 56 of file IDBAccessObject.php.

Referenced by WikiPage\clear().

◆ READ_NORMAL


The documentation for this interface was generated from the following file: