MediaWiki REL1_34
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}
Helper class for DAO classes.
static getDBOptions( $bitfield)
Get an appropriate DB index, options, and fallback DB index for a query.
static hasFlags( $bitfield, $flags)
Interface for database access objects.
const DB_REPLICA
Definition defines.php:25
const DB_MASTER
Definition defines.php:26