MediaWiki REL1_31
DBConnRef.php
Go to the documentation of this file.
1<?php
2
3namespace Wikimedia\Rdbms;
4
5use InvalidArgumentException;
6
15class DBConnRef implements IDatabase {
17 private $lb;
19 private $conn;
21 private $params;
22
23 const FLD_INDEX = 0;
24 const FLD_GROUP = 1;
25 const FLD_DOMAIN = 2;
26 const FLD_FLAGS = 3;
27
32 public function __construct( ILoadBalancer $lb, $conn ) {
33 $this->lb = $lb;
34 if ( $conn instanceof Database ) {
35 $this->conn = $conn; // live handle
36 } elseif ( is_array( $conn ) && count( $conn ) >= 4 && $conn[self::FLD_DOMAIN] !== false ) {
37 $this->params = $conn;
38 } else {
39 throw new InvalidArgumentException( "Missing lazy connection arguments." );
40 }
41 }
42
43 function __call( $name, array $arguments ) {
44 if ( $this->conn === null ) {
45 list( $db, $groups, $wiki, $flags ) = $this->params;
46 $this->conn = $this->lb->getConnection( $db, $groups, $wiki, $flags );
47 }
48
49 return call_user_func_array( [ $this->conn, $name ], $arguments );
50 }
51
52 public function getServerInfo() {
53 return $this->__call( __FUNCTION__, func_get_args() );
54 }
55
56 public function bufferResults( $buffer = null ) {
57 return $this->__call( __FUNCTION__, func_get_args() );
58 }
59
60 public function trxLevel() {
61 return $this->__call( __FUNCTION__, func_get_args() );
62 }
63
64 public function trxTimestamp() {
65 return $this->__call( __FUNCTION__, func_get_args() );
66 }
67
68 public function explicitTrxActive() {
69 return $this->__call( __FUNCTION__, func_get_args() );
70 }
71
72 public function tablePrefix( $prefix = null ) {
73 return $this->__call( __FUNCTION__, func_get_args() );
74 }
75
76 public function dbSchema( $schema = null ) {
77 return $this->__call( __FUNCTION__, func_get_args() );
78 }
79
80 public function getLBInfo( $name = null ) {
81 return $this->__call( __FUNCTION__, func_get_args() );
82 }
83
84 public function setLBInfo( $name, $value = null ) {
85 return $this->__call( __FUNCTION__, func_get_args() );
86 }
87
88 public function setLazyMasterHandle( IDatabase $conn ) {
89 return $this->__call( __FUNCTION__, func_get_args() );
90 }
91
92 public function implicitGroupby() {
93 return $this->__call( __FUNCTION__, func_get_args() );
94 }
95
96 public function implicitOrderby() {
97 return $this->__call( __FUNCTION__, func_get_args() );
98 }
99
100 public function lastQuery() {
101 return $this->__call( __FUNCTION__, func_get_args() );
102 }
103
104 public function doneWrites() {
105 return $this->__call( __FUNCTION__, func_get_args() );
106 }
107
108 public function lastDoneWrites() {
109 return $this->__call( __FUNCTION__, func_get_args() );
110 }
111
112 public function writesPending() {
113 return $this->__call( __FUNCTION__, func_get_args() );
114 }
115
116 public function writesOrCallbacksPending() {
117 return $this->__call( __FUNCTION__, func_get_args() );
118 }
119
120 public function pendingWriteQueryDuration( $type = self::ESTIMATE_TOTAL ) {
121 return $this->__call( __FUNCTION__, func_get_args() );
122 }
123
124 public function pendingWriteCallers() {
125 return $this->__call( __FUNCTION__, func_get_args() );
126 }
127
128 public function pendingWriteRowsAffected() {
129 return $this->__call( __FUNCTION__, func_get_args() );
130 }
131
132 public function isOpen() {
133 return $this->__call( __FUNCTION__, func_get_args() );
134 }
135
136 public function setFlag( $flag, $remember = self::REMEMBER_NOTHING ) {
137 return $this->__call( __FUNCTION__, func_get_args() );
138 }
139
140 public function clearFlag( $flag, $remember = self::REMEMBER_NOTHING ) {
141 return $this->__call( __FUNCTION__, func_get_args() );
142 }
143
144 public function restoreFlags( $state = self::RESTORE_PRIOR ) {
145 return $this->__call( __FUNCTION__, func_get_args() );
146 }
147
148 public function getFlag( $flag ) {
149 return $this->__call( __FUNCTION__, func_get_args() );
150 }
151
152 public function getProperty( $name ) {
153 return $this->__call( __FUNCTION__, func_get_args() );
154 }
155
156 public function getDomainID() {
157 if ( $this->conn === null ) {
158 $domain = $this->params[self::FLD_DOMAIN];
159 // Avoid triggering a database connection
160 return $domain instanceof DatabaseDomain ? $domain->getId() : $domain;
161 }
162
163 return $this->__call( __FUNCTION__, func_get_args() );
164 }
165
166 public function getWikiID() {
167 return $this->getDomainID();
168 }
169
170 public function getType() {
171 return $this->__call( __FUNCTION__, func_get_args() );
172 }
173
174 public function open( $server, $user, $password, $dbName ) {
175 return $this->__call( __FUNCTION__, func_get_args() );
176 }
177
178 public function fetchObject( $res ) {
179 return $this->__call( __FUNCTION__, func_get_args() );
180 }
181
182 public function fetchRow( $res ) {
183 return $this->__call( __FUNCTION__, func_get_args() );
184 }
185
186 public function numRows( $res ) {
187 return $this->__call( __FUNCTION__, func_get_args() );
188 }
189
190 public function numFields( $res ) {
191 return $this->__call( __FUNCTION__, func_get_args() );
192 }
193
194 public function fieldName( $res, $n ) {
195 return $this->__call( __FUNCTION__, func_get_args() );
196 }
197
198 public function insertId() {
199 return $this->__call( __FUNCTION__, func_get_args() );
200 }
201
202 public function dataSeek( $res, $row ) {
203 return $this->__call( __FUNCTION__, func_get_args() );
204 }
205
206 public function lastErrno() {
207 return $this->__call( __FUNCTION__, func_get_args() );
208 }
209
210 public function lastError() {
211 return $this->__call( __FUNCTION__, func_get_args() );
212 }
213
214 public function affectedRows() {
215 return $this->__call( __FUNCTION__, func_get_args() );
216 }
217
218 public function getSoftwareLink() {
219 return $this->__call( __FUNCTION__, func_get_args() );
220 }
221
222 public function getServerVersion() {
223 return $this->__call( __FUNCTION__, func_get_args() );
224 }
225
226 public function close() {
227 return $this->__call( __FUNCTION__, func_get_args() );
228 }
229
230 public function query( $sql, $fname = __METHOD__, $tempIgnore = false ) {
231 return $this->__call( __FUNCTION__, func_get_args() );
232 }
233
234 public function freeResult( $res ) {
235 return $this->__call( __FUNCTION__, func_get_args() );
236 }
237
238 public function selectField(
239 $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
240 ) {
241 return $this->__call( __FUNCTION__, func_get_args() );
242 }
243
244 public function selectFieldValues(
245 $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
246 ) {
247 return $this->__call( __FUNCTION__, func_get_args() );
248 }
249
250 public function select(
251 $table, $vars, $conds = '', $fname = __METHOD__,
252 $options = [], $join_conds = []
253 ) {
254 return $this->__call( __FUNCTION__, func_get_args() );
255 }
256
257 public function selectSQLText(
258 $table, $vars, $conds = '', $fname = __METHOD__,
259 $options = [], $join_conds = []
260 ) {
261 return $this->__call( __FUNCTION__, func_get_args() );
262 }
263
264 public function selectRow(
265 $table, $vars, $conds, $fname = __METHOD__,
266 $options = [], $join_conds = []
267 ) {
268 return $this->__call( __FUNCTION__, func_get_args() );
269 }
270
271 public function estimateRowCount(
272 $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
273 ) {
274 return $this->__call( __FUNCTION__, func_get_args() );
275 }
276
277 public function selectRowCount(
278 $tables, $vars = '*', $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
279 ) {
280 return $this->__call( __FUNCTION__, func_get_args() );
281 }
282
283 public function fieldExists( $table, $field, $fname = __METHOD__ ) {
284 return $this->__call( __FUNCTION__, func_get_args() );
285 }
286
287 public function indexExists( $table, $index, $fname = __METHOD__ ) {
288 return $this->__call( __FUNCTION__, func_get_args() );
289 }
290
291 public function tableExists( $table, $fname = __METHOD__ ) {
292 return $this->__call( __FUNCTION__, func_get_args() );
293 }
294
295 public function insert( $table, $a, $fname = __METHOD__, $options = [] ) {
296 return $this->__call( __FUNCTION__, func_get_args() );
297 }
298
299 public function update( $table, $values, $conds, $fname = __METHOD__, $options = [] ) {
300 return $this->__call( __FUNCTION__, func_get_args() );
301 }
302
303 public function makeList( $a, $mode = self::LIST_COMMA ) {
304 return $this->__call( __FUNCTION__, func_get_args() );
305 }
306
307 public function makeWhereFrom2d( $data, $baseKey, $subKey ) {
308 return $this->__call( __FUNCTION__, func_get_args() );
309 }
310
311 public function aggregateValue( $valuedata, $valuename = 'value' ) {
312 return $this->__call( __FUNCTION__, func_get_args() );
313 }
314
315 public function bitNot( $field ) {
316 return $this->__call( __FUNCTION__, func_get_args() );
317 }
318
319 public function bitAnd( $fieldLeft, $fieldRight ) {
320 return $this->__call( __FUNCTION__, func_get_args() );
321 }
322
323 public function bitOr( $fieldLeft, $fieldRight ) {
324 return $this->__call( __FUNCTION__, func_get_args() );
325 }
326
327 public function buildConcat( $stringList ) {
328 return $this->__call( __FUNCTION__, func_get_args() );
329 }
330
331 public function buildGroupConcatField(
332 $delim, $table, $field, $conds = '', $join_conds = []
333 ) {
334 return $this->__call( __FUNCTION__, func_get_args() );
335 }
336
337 public function buildSubstring( $input, $startPosition, $length = null ) {
338 return $this->__call( __FUNCTION__, func_get_args() );
339 }
340
341 public function buildStringCast( $field ) {
342 return $this->__call( __FUNCTION__, func_get_args() );
343 }
344
345 public function buildIntegerCast( $field ) {
346 return $this->__call( __FUNCTION__, func_get_args() );
347 }
348
349 public function buildSelectSubquery(
350 $table, $vars, $conds = '', $fname = __METHOD__,
351 $options = [], $join_conds = []
352 ) {
353 return $this->__call( __FUNCTION__, func_get_args() );
354 }
355
356 public function databasesAreIndependent() {
357 return $this->__call( __FUNCTION__, func_get_args() );
358 }
359
360 public function selectDB( $db ) {
361 return $this->__call( __FUNCTION__, func_get_args() );
362 }
363
364 public function getDBname() {
365 return $this->__call( __FUNCTION__, func_get_args() );
366 }
367
368 public function getServer() {
369 return $this->__call( __FUNCTION__, func_get_args() );
370 }
371
372 public function addQuotes( $s ) {
373 return $this->__call( __FUNCTION__, func_get_args() );
374 }
375
376 public function buildLike() {
377 return $this->__call( __FUNCTION__, func_get_args() );
378 }
379
380 public function anyChar() {
381 return $this->__call( __FUNCTION__, func_get_args() );
382 }
383
384 public function anyString() {
385 return $this->__call( __FUNCTION__, func_get_args() );
386 }
387
388 public function nextSequenceValue( $seqName ) {
389 return $this->__call( __FUNCTION__, func_get_args() );
390 }
391
392 public function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
393 return $this->__call( __FUNCTION__, func_get_args() );
394 }
395
396 public function upsert(
397 $table, array $rows, array $uniqueIndexes, array $set, $fname = __METHOD__
398 ) {
399 return $this->__call( __FUNCTION__, func_get_args() );
400 }
401
402 public function deleteJoin(
403 $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = __METHOD__
404 ) {
405 return $this->__call( __FUNCTION__, func_get_args() );
406 }
407
408 public function delete( $table, $conds, $fname = __METHOD__ ) {
409 return $this->__call( __FUNCTION__, func_get_args() );
410 }
411
412 public function insertSelect(
413 $destTable, $srcTable, $varMap, $conds,
414 $fname = __METHOD__, $insertOptions = [], $selectOptions = [], $selectJoinConds = []
415 ) {
416 return $this->__call( __FUNCTION__, func_get_args() );
417 }
418
419 public function unionSupportsOrderAndLimit() {
420 return $this->__call( __FUNCTION__, func_get_args() );
421 }
422
423 public function unionQueries( $sqls, $all ) {
424 return $this->__call( __FUNCTION__, func_get_args() );
425 }
426
428 $table, $vars, array $permute_conds, $extra_conds = '', $fname = __METHOD__,
429 $options = [], $join_conds = []
430 ) {
431 return $this->__call( __FUNCTION__, func_get_args() );
432 }
433
434 public function conditional( $cond, $trueVal, $falseVal ) {
435 return $this->__call( __FUNCTION__, func_get_args() );
436 }
437
438 public function strreplace( $orig, $old, $new ) {
439 return $this->__call( __FUNCTION__, func_get_args() );
440 }
441
442 public function getServerUptime() {
443 return $this->__call( __FUNCTION__, func_get_args() );
444 }
445
446 public function wasDeadlock() {
447 return $this->__call( __FUNCTION__, func_get_args() );
448 }
449
450 public function wasLockTimeout() {
451 return $this->__call( __FUNCTION__, func_get_args() );
452 }
453
454 public function wasConnectionLoss() {
455 return $this->__call( __FUNCTION__, func_get_args() );
456 }
457
458 public function wasReadOnlyError() {
459 return $this->__call( __FUNCTION__, func_get_args() );
460 }
461
462 public function wasErrorReissuable() {
463 return $this->__call( __FUNCTION__, func_get_args() );
464 }
465
466 public function masterPosWait( DBMasterPos $pos, $timeout ) {
467 return $this->__call( __FUNCTION__, func_get_args() );
468 }
469
470 public function getReplicaPos() {
471 return $this->__call( __FUNCTION__, func_get_args() );
472 }
473
474 public function getMasterPos() {
475 return $this->__call( __FUNCTION__, func_get_args() );
476 }
477
478 public function serverIsReadOnly() {
479 return $this->__call( __FUNCTION__, func_get_args() );
480 }
481
482 public function onTransactionResolution( callable $callback, $fname = __METHOD__ ) {
483 return $this->__call( __FUNCTION__, func_get_args() );
484 }
485
486 public function onTransactionIdle( callable $callback, $fname = __METHOD__ ) {
487 return $this->__call( __FUNCTION__, func_get_args() );
488 }
489
490 public function onTransactionPreCommitOrIdle( callable $callback, $fname = __METHOD__ ) {
491 return $this->__call( __FUNCTION__, func_get_args() );
492 }
493
494 public function setTransactionListener( $name, callable $callback = null ) {
495 return $this->__call( __FUNCTION__, func_get_args() );
496 }
497
498 public function startAtomic(
499 $fname = __METHOD__, $cancelable = IDatabase::ATOMIC_NOT_CANCELABLE
500 ) {
501 return $this->__call( __FUNCTION__, func_get_args() );
502 }
503
504 public function endAtomic( $fname = __METHOD__ ) {
505 return $this->__call( __FUNCTION__, func_get_args() );
506 }
507
508 public function cancelAtomic( $fname = __METHOD__, AtomicSectionIdentifier $sectionId = null ) {
509 return $this->__call( __FUNCTION__, func_get_args() );
510 }
511
512 public function doAtomicSection(
513 $fname, callable $callback, $cancelable = self::ATOMIC_NOT_CANCELABLE
514 ) {
515 return $this->__call( __FUNCTION__, func_get_args() );
516 }
517
518 public function begin( $fname = __METHOD__, $mode = IDatabase::TRANSACTION_EXPLICIT ) {
519 return $this->__call( __FUNCTION__, func_get_args() );
520 }
521
522 public function commit( $fname = __METHOD__, $flush = '' ) {
523 return $this->__call( __FUNCTION__, func_get_args() );
524 }
525
526 public function rollback( $fname = __METHOD__, $flush = '' ) {
527 return $this->__call( __FUNCTION__, func_get_args() );
528 }
529
530 public function flushSnapshot( $fname = __METHOD__ ) {
531 return $this->__call( __FUNCTION__, func_get_args() );
532 }
533
534 public function timestamp( $ts = 0 ) {
535 return $this->__call( __FUNCTION__, func_get_args() );
536 }
537
538 public function timestampOrNull( $ts = null ) {
539 return $this->__call( __FUNCTION__, func_get_args() );
540 }
541
542 public function ping( &$rtt = null ) {
543 return func_num_args()
544 ? $this->__call( __FUNCTION__, [ &$rtt ] )
545 : $this->__call( __FUNCTION__, [] ); // method cares about null vs missing
546 }
547
548 public function getLag() {
549 return $this->__call( __FUNCTION__, func_get_args() );
550 }
551
552 public function getSessionLagStatus() {
553 return $this->__call( __FUNCTION__, func_get_args() );
554 }
555
556 public function maxListLen() {
557 return $this->__call( __FUNCTION__, func_get_args() );
558 }
559
560 public function encodeBlob( $b ) {
561 return $this->__call( __FUNCTION__, func_get_args() );
562 }
563
564 public function decodeBlob( $b ) {
565 return $this->__call( __FUNCTION__, func_get_args() );
566 }
567
568 public function setSessionOptions( array $options ) {
569 return $this->__call( __FUNCTION__, func_get_args() );
570 }
571
572 public function setSchemaVars( $vars ) {
573 return $this->__call( __FUNCTION__, func_get_args() );
574 }
575
576 public function lockIsFree( $lockName, $method ) {
577 return $this->__call( __FUNCTION__, func_get_args() );
578 }
579
580 public function lock( $lockName, $method, $timeout = 5 ) {
581 return $this->__call( __FUNCTION__, func_get_args() );
582 }
583
584 public function unlock( $lockName, $method ) {
585 return $this->__call( __FUNCTION__, func_get_args() );
586 }
587
588 public function getScopedLockAndFlush( $lockKey, $fname, $timeout ) {
589 return $this->__call( __FUNCTION__, func_get_args() );
590 }
591
592 public function namedLocksEnqueue() {
593 return $this->__call( __FUNCTION__, func_get_args() );
594 }
595
596 public function getInfinity() {
597 return $this->__call( __FUNCTION__, func_get_args() );
598 }
599
600 public function encodeExpiry( $expiry ) {
601 return $this->__call( __FUNCTION__, func_get_args() );
602 }
603
604 public function decodeExpiry( $expiry, $format = TS_MW ) {
605 return $this->__call( __FUNCTION__, func_get_args() );
606 }
607
608 public function setBigSelects( $value = true ) {
609 return $this->__call( __FUNCTION__, func_get_args() );
610 }
611
612 public function isReadOnly() {
613 return $this->__call( __FUNCTION__, func_get_args() );
614 }
615
616 public function setTableAliases( array $aliases ) {
617 return $this->__call( __FUNCTION__, func_get_args() );
618 }
619
620 public function setIndexAliases( array $aliases ) {
621 return $this->__call( __FUNCTION__, func_get_args() );
622 }
623
627 function __destruct() {
628 if ( $this->conn ) {
629 $this->lb->reuseConnection( $this->conn );
630 }
631 }
632}
633
634class_alias( DBConnRef::class, 'DBConnRef' );
Apache License January AND DISTRIBUTION Definitions License shall mean the terms and conditions for use
if(defined( 'MW_SETUP_CALLBACK')) $fname
Customization point after all loading (constants, functions, classes, DefaultSettings,...
Definition Setup.php:112
Class used for token representing identifiers for atomic sections from IDatabase instances.
Helper class to handle automatically marking connections as reusable (via RAII pattern) as well handl...
Definition DBConnRef.php:15
__call( $name, array $arguments)
Definition DBConnRef.php:43
select( $table, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Execute a SELECT query constructed using the various parameters provided.
wasDeadlock()
Determines if the last failure was due to a deadlock.
doAtomicSection( $fname, callable $callback, $cancelable=self::ATOMIC_NOT_CANCELABLE)
Perform an atomic section of reversable SQL statements from a callback.
buildGroupConcatField( $delim, $table, $field, $conds='', $join_conds=[])
Build a GROUP_CONCAT or equivalent statement for a query.
buildConcat( $stringList)
Build a concatenation list to feed into a SQL query.
bitOr( $fieldLeft, $fieldRight)
open( $server, $user, $password, $dbName)
Open a new connection to the database (closing any existing one)
lastErrno()
Get the last error number.
flushSnapshot( $fname=__METHOD__)
Commit any transaction but error out if writes or callbacks are pending.
getReplicaPos()
Get the replication position of this replica DB.
setSchemaVars( $vars)
Set variables to be used in sourceFile/sourceStream, in preference to the ones in $GLOBALS.
anyString()
Returns a token for buildLike() that denotes a '' to be used in a LIKE query.
numRows( $res)
Get the number of rows in a result object.
unionConditionPermutations( $table, $vars, array $permute_conds, $extra_conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Construct a UNION query for permutations of conditions.
begin( $fname=__METHOD__, $mode=IDatabase::TRANSACTION_EXPLICIT)
Begin a transaction.
lockIsFree( $lockName, $method)
Check to see if a named lock is not locked by any thread (non-blocking)
fieldName( $res, $n)
Get a field name in a result object.
selectDB( $db)
Change the current database.
trxTimestamp()
Get the UNIX timestamp of the time that the transaction was established.
Definition DBConnRef.php:64
setIndexAliases(array $aliases)
Convert certain index names to alternative names before querying the DB.
endAtomic( $fname=__METHOD__)
Ends an atomic section of SQL statements.
timestamp( $ts=0)
Convert a timestamp in one of the formats accepted by wfTimestamp() to the format used for inserting ...
ping(&$rtt=null)
Ping the server and try to reconnect if it there is no connection.
buildSelectSubquery( $table, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Equivalent to IDatabase::selectSQLText() except wraps the result in Subqyery.
selectRowCount( $tables, $vars=' *', $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Get the number of rows in dataset.
numFields( $res)
Get the number of fields in a result object.
setTableAliases(array $aliases)
Make certain table names use their own database, schema, and table prefix when passed into SQL querie...
makeList( $a, $mode=self::LIST_COMMA)
Makes an encoded list of strings from an array.
array null $params
N-tuple of (server index, group, DatabaseDomain|string)
Definition DBConnRef.php:21
getServer()
Get the server hostname or IP address.
update( $table, $values, $conds, $fname=__METHOD__, $options=[])
UPDATE wrapper.
getSoftwareLink()
Returns a wikitext link to the DB's website, e.g., return "[https://www.mysql.com/ MySQL]"; Should at...
lock( $lockName, $method, $timeout=5)
Acquire a named lock.
dataSeek( $res, $row)
Change the position of the cursor in a result object.
encodeExpiry( $expiry)
Encode an expiry time into the DBMS dependent format.
lastQuery()
Return the last query that went through IDatabase::query()
wasLockTimeout()
Determines if the last failure was due to a lock timeout.
close()
Close the database connection.
getSessionLagStatus()
Get the replica DB lag when the current transaction started or a general lag estimate if not transact...
masterPosWait(DBMasterPos $pos, $timeout)
Wait for the replica DB to catch up to a given master position.
isOpen()
Is a connection to the database open?
clearFlag( $flag, $remember=self::REMEMBER_NOTHING)
Clear a flag for this connection.
timestampOrNull( $ts=null)
Convert a timestamp in one of the formats accepted by wfTimestamp() to the format used for inserting ...
unlock( $lockName, $method)
Release a lock.
bufferResults( $buffer=null)
Turns buffering of SQL result sets on (true) or off (false).
Definition DBConnRef.php:56
getInfinity()
Find out when 'infinity' is.
getLBInfo( $name=null)
Get properties passed down from the server info array of the load balancer.
Definition DBConnRef.php:80
selectRow( $table, $vars, $conds, $fname=__METHOD__, $options=[], $join_conds=[])
Single row SELECT wrapper.
unionQueries( $sqls, $all)
Construct a UNION query This is used for providing overload point for other DB abstractions not compa...
pendingWriteQueryDuration( $type=self::ESTIMATE_TOTAL)
Get the time spend running write queries for this transaction.
maxListLen()
Return the maximum number of items allowed in a list, or 0 for unlimited.
fetchRow( $res)
Fetch the next row from the given result object, in associative array form.
onTransactionPreCommitOrIdle(callable $callback, $fname=__METHOD__)
Run a callback before the current transaction commits or now if there is none.
setTransactionListener( $name, callable $callback=null)
Run a callback each time any transaction commits or rolls back.
__destruct()
Clean up the connection when out of scope.
setLBInfo( $name, $value=null)
Set the LB info array, or a member of it.
Definition DBConnRef.php:84
writesOrCallbacksPending()
Returns true if there is a transaction/round open with possible write queries or transaction pre-comm...
selectFieldValues( $table, $var, $cond='', $fname=__METHOD__, $options=[], $join_conds=[])
A SELECT wrapper which returns a list of single field values from result rows.
setSessionOptions(array $options)
Override database's default behavior.
dbSchema( $schema=null)
Get/set the db schema.
Definition DBConnRef.php:76
getLag()
Get the amount of replication lag for this database server.
upsert( $table, array $rows, array $uniqueIndexes, array $set, $fname=__METHOD__)
INSERT ON DUPLICATE KEY UPDATE wrapper, upserts an array into a table.
deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname=__METHOD__)
DELETE where the condition is a join.
indexExists( $table, $index, $fname=__METHOD__)
Determines whether an index exists Usually throws a DBQueryError on failure If errors are explicitly ...
unionSupportsOrderAndLimit()
Returns true if current database backend supports ORDER BY or LIMIT for separate subqueries within th...
nextSequenceValue( $seqName)
Deprecated method, calls should be removed.
freeResult( $res)
Free a result object returned by query() or select().
strreplace( $orig, $old, $new)
Returns a command for str_replace function in SQL query.
restoreFlags( $state=self::RESTORE_PRIOR)
Restore the flags to their prior state before the last setFlag/clearFlag call.
rollback( $fname=__METHOD__, $flush='')
Rollback a transaction previously started using begin().
doneWrites()
Returns true if the connection may have been used for write queries.
decodeExpiry( $expiry, $format=TS_MW)
Decode an expiry time into a DBMS independent format.
fieldExists( $table, $field, $fname=__METHOD__)
Determines whether a field exists in a table.
decodeBlob( $b)
Some DBMSs return a special placeholder object representing blob fields in result objects.
estimateRowCount( $table, $vars=' *', $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
Estimate the number of rows in dataset.
wasConnectionLoss()
Determines if the last query error was due to a dropped connection.
implicitGroupby()
Returns true if this database does an implicit sort when doing GROUP BY.
Definition DBConnRef.php:92
affectedRows()
Get the number of rows affected by the last write query.
implicitOrderby()
Returns true if this database does an implicit order by when the column has an index For example: SEL...
Definition DBConnRef.php:96
setLazyMasterHandle(IDatabase $conn)
Set a lazy-connecting DB handle to the master DB (for replication status purposes)
Definition DBConnRef.php:88
cancelAtomic( $fname=__METHOD__, AtomicSectionIdentifier $sectionId=null)
Cancel an atomic section of SQL statements.
selectField( $table, $var, $cond='', $fname=__METHOD__, $options=[], $join_conds=[])
A SELECT wrapper which returns a single field from a single result row.
encodeBlob( $b)
Some DBMSs have a special format for inserting into blob fields, they don't allow simple quoted strin...
startAtomic( $fname=__METHOD__, $cancelable=IDatabase::ATOMIC_NOT_CANCELABLE)
Begin an atomic section of SQL statements.
fetchObject( $res)
Fetch the next row from the given result object, in object form.
bitAnd( $fieldLeft, $fieldRight)
namedLocksEnqueue()
Check to see if a named lock used by lock() use blocking queues.
getWikiID()
Alias for getDomainID()
insertId()
Get the inserted value of an auto-increment row.
selectSQLText( $table, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[])
The equivalent of IDatabase::select() except that the constructed SQL is returned,...
buildLike()
LIKE statement wrapper, receives a variable-length argument list with parts of pattern to match conta...
getScopedLockAndFlush( $lockKey, $fname, $timeout)
Acquire a named lock, flush any transaction, and return an RAII style unlocker object.
wasErrorReissuable()
Determines if the last query error was due to something outside of the query itself.
pendingWriteRowsAffected()
Get the number of affected rows from pending write queries.
insert( $table, $a, $fname=__METHOD__, $options=[])
INSERT wrapper, inserts an array into a table.
conditional( $cond, $trueVal, $falseVal)
Returns an SQL expression for a simple conditional.
replace( $table, $uniqueIndexes, $rows, $fname=__METHOD__)
REPLACE query wrapper.
getDBname()
Get the current DB name.
buildSubstring( $input, $startPosition, $length=null)
getServerInfo()
A string describing the current software version, and possibly other details in a user-friendly way.
Definition DBConnRef.php:52
trxLevel()
Gets the current transaction level.
Definition DBConnRef.php:60
getServerUptime()
Determines how long the server has been up.
wasReadOnlyError()
Determines if the last failure was due to the database being read-only.
setBigSelects( $value=true)
Allow or deny "big selects" for this session only.
databasesAreIndependent()
Returns true if DBs are assumed to be on potentially different servers.
query( $sql, $fname=__METHOD__, $tempIgnore=false)
Run an SQL query and return the result.
commit( $fname=__METHOD__, $flush='')
Commits a transaction previously started using begin().
getMasterPos()
Get the position of this master.
onTransactionIdle(callable $callback, $fname=__METHOD__)
Run a callback as soon as there is no transaction pending.
addQuotes( $s)
Adds quotes and backslashes.
anyChar()
Returns a token for buildLike() that denotes a '_' to be used in a LIKE query.
getType()
Get the type of the DBMS, as it appears in $wgDBtype.
getFlag( $flag)
Returns a boolean whether the flag $flag is set for this connection.
lastDoneWrites()
Returns the last time the connection may have been used for write queries.
setFlag( $flag, $remember=self::REMEMBER_NOTHING)
Set a flag for this connection.
Database null $conn
Live connection handle.
Definition DBConnRef.php:19
insertSelect( $destTable, $srcTable, $varMap, $conds, $fname=__METHOD__, $insertOptions=[], $selectOptions=[], $selectJoinConds=[])
INSERT SELECT wrapper.
lastError()
Get a description of the last error.
makeWhereFrom2d( $data, $baseKey, $subKey)
Build a partial where clause from a 2-d array such as used for LinkBatch.
tableExists( $table, $fname=__METHOD__)
Query whether a given table exists.
getServerVersion()
A string describing the current software version, like from mysql_get_server_info().
onTransactionResolution(callable $callback, $fname=__METHOD__)
Run a callback as soon as the current transaction commits or rolls back.
aggregateValue( $valuedata, $valuename='value')
Return aggregated value alias.
__construct(ILoadBalancer $lb, $conn)
Definition DBConnRef.php:32
tablePrefix( $prefix=null)
Get/set the table prefix.
Definition DBConnRef.php:72
pendingWriteCallers()
Get the list of method names that did write queries for this transaction.
Class to handle database/prefix specification for IDatabase domains.
Relational database abstraction object.
Definition Database.php:48
$res
Definition database.txt:21
deferred txt A few of the database updates required by various functions here can be deferred until after the result page is displayed to the user For updating the view updating the linked to tables after a etc PHP does not yet have any way to tell the server to actually return and disconnect while still running these but it might have such a feature in the future We handle these by creating a deferred update object and putting those objects on a global list
Definition deferred.txt:11
the array() calling protocol came about after MediaWiki 1.4rc1.
static configuration should be added through ResourceLoaderGetConfigVars instead & $vars
Definition hooks.txt:2228
do that in ParserLimitReportFormat instead use this to modify the parameters of the image all existing parser cache entries will be invalid To avoid you ll need to handle that somehow(e.g. with the RejectParserCacheValue hook) because MediaWiki won 't do it for you. & $defaults also a ContextSource after deleting those rows but within the same transaction $rows
Definition hooks.txt:2783
this hook is for auditing only RecentChangesLinked and Watchlist RecentChangesLinked and Watchlist Do not use this to implement individual filters if they are compatible with the ChangesListFilter and ChangesListFilterGroup structure use sub classes of those in conjunction with the ChangesListSpecialPageStructuredFilters hook This hook can be used to implement filters that do not implement that or custom behavior that is not an individual filter e g Watchlist & $tables
Definition hooks.txt:1015
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
Definition hooks.txt:2001
Allows to change the fields on the form that will be generated $name
Definition hooks.txt:302
injection txt This is an overview of how MediaWiki makes use of dependency injection The design described here grew from the discussion of RFC T384 The term dependency this means that anything an object needs to operate should be injected from the the object itself should only know narrow no concrete implementation of the logic it relies on The requirement to inject everything typically results in an architecture that based on two main types of and essentially stateless service objects that use other service objects to operate on the value objects As of the beginning MediaWiki is only starting to use the DI approach Much of the code still relies on global state or direct resulting in a highly cyclical dependency which acts as the top level factory for services in MediaWiki which can be used to gain access to default instances of various services MediaWikiServices however also allows new services to be defined and default services to be redefined Services are defined or redefined by providing a callback the instantiator that will return a new instance of the service When it will create an instance of MediaWikiServices and populate it with the services defined in the files listed by thereby bootstrapping the DI framework Per $wgServiceWiringFiles lists includes ServiceWiring php
Definition injection.txt:37
An object representing a master or replica DB position in a replicated setup.
Basic database interface for live and lazy-loaded relation database handles.
Definition IDatabase.php:38
Database cluster connection, tracking, load balancing, and transaction manager interface.
$buffer
if(is_array($mode)) switch( $mode) $input