MediaWiki  master
DBAccessObjectUtils.php
Go to the documentation of this file.
1 <?php
35  public static function hasFlags( $bitfield, $flags ) {
36  return ( $bitfield & $flags ) == $flags;
37  }
38 
52  public static function getDBOptions( $bitfield ) {
53  if ( self::hasFlags( $bitfield, self::READ_LATEST_IMMUTABLE ) ) {
54  $index = DB_REPLICA; // override READ_LATEST if set
55  $fallbackIndex = DB_MASTER;
56  } elseif ( self::hasFlags( $bitfield, self::READ_LATEST ) ) {
57  $index = DB_MASTER;
58  $fallbackIndex = null;
59  } else {
60  $index = DB_REPLICA;
61  $fallbackIndex = null;
62  }
63 
64  $lockingOptions = [];
65  if ( self::hasFlags( $bitfield, self::READ_EXCLUSIVE ) ) {
66  $lockingOptions[] = 'FOR UPDATE';
67  } elseif ( self::hasFlags( $bitfield, self::READ_LOCKING ) ) {
68  $lockingOptions[] = 'LOCK IN SHARE MODE';
69  }
70 
71  if ( $fallbackIndex !== null ) {
72  $options = []; // locks on DB_REPLICA make no sense
73  $fallbackOptions = $lockingOptions;
74  } else {
75  $options = $lockingOptions;
76  $fallbackOptions = []; // no fallback
77  }
78 
79  return [ $index, $options, $fallbackIndex, $fallbackOptions ];
80  }
81 }
const DB_MASTER
Definition: defines.php:26
static getDBOptions( $bitfield)
Get an appropriate DB index, options, and fallback DB index for a query.
static hasFlags( $bitfield, $flags)
const DB_REPLICA
Definition: defines.php:25