if ( !is_array( $types ) ) {
$types = [ $types ];
}
- if ( !$schema ) {
+ if ( $schema === false ) {
$schema = $this->getCoreSchema();
}
$table = $this->realTableName( $table, 'raw' );
function strencode( $s ) {
// Should not be called by us
-
return pg_escape_string( $this->getBindingHandle(), $s );
}
/**
* Create a new load balancer for external storage. The resulting object will be
- * untracked, not chronology-protected, and the caller is responsible for
- * cleaning it up.
+ * untracked, not chronology-protected, and the caller is responsible for cleaning it up.
*
* This method is for only advanced usage and callers should almost always use
* getExternalLB() instead. This method can be useful when a table is used as a
* key/value store. In that cases, one might want to query it in autocommit mode
* (DBO_TRX off) but still use DBO_TRX transaction rounds on other tables.
*
- * @param string $cluster External storage cluster, or false for core
- * @param bool|string $domain Domain ID, or false for the current domain
+ * @param string $cluster External storage cluster name
* @return ILoadBalancer
*/
- public function newExternalLB( $cluster, $domain = false );
+ public function newExternalLB( $cluster );
/**
* Get a cached (tracked) load balancer for external storage
*
- * @param string $cluster External storage cluster, or false for core
- * @param bool|string $domain Domain ID, or false for the current domain
+ * @param string $cluster External storage cluster name
* @return ILoadBalancer
*/
- public function getExternalLB( $cluster, $domain = false );
+ public function getExternalLB( $cluster );
/**
* Execute a function for each tracked load balancer
/**
* @see ILBFactory::newExternalLB()
* @param string $cluster
- * @param bool $domain
* @return LoadBalancer
*/
- abstract public function newExternalLB( $cluster, $domain = false );
+ abstract public function newExternalLB( $cluster );
/**
* @see ILBFactory::getExternalLB()
* @param string $cluster
- * @param bool $domain
* @return LoadBalancer
*/
- abstract public function getExternalLB( $cluster, $domain = false );
+ abstract public function getExternalLB( $cluster );
/**
* Call a method of each tracked load balancer
return $this->mainLBs[$section];
}
- /**
- * @param string $cluster
- * @param DatabaseDomain|string|bool $domain Domain ID, or false for the current domain
- * @throws InvalidArgumentException
- * @return LoadBalancer
- */
- public function newExternalLB( $cluster, $domain = false ) {
+ public function newExternalLB( $cluster ) {
if ( !isset( $this->externalLoads[$cluster] ) ) {
throw new InvalidArgumentException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
}
);
}
- /**
- * @param string $cluster External storage cluster, or false for core
- * @param DatabaseDomain|string|bool $domain Domain ID, or false for the current domain
- * @return LoadBalancer
- */
- public function getExternalLB( $cluster, $domain = false ) {
+ public function getExternalLB( $cluster ) {
if ( !isset( $this->extLBs[$cluster] ) ) {
- $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $domain );
+ $this->extLBs[$cluster] = $this->newExternalLB( $cluster );
$this->getChronologyProtector()->initLB( $this->extLBs[$cluster] );
}
return $this->mainLB;
}
- /**
- * @param string $cluster
- * @param bool|string $domain
- * @return LoadBalancer
- * @throws InvalidArgumentException
- */
- public function newExternalLB( $cluster, $domain = false ) {
+ public function newExternalLB( $cluster ) {
if ( !isset( $this->externalClusters[$cluster] ) ) {
throw new InvalidArgumentException( __METHOD__ . ": Unknown cluster \"$cluster\"." );
}
return $this->newLoadBalancer( $this->externalClusters[$cluster] );
}
- /**
- * @param string $cluster
- * @param bool|string $domain
- * @return LoadBalancer
- */
- public function getExternalLB( $cluster, $domain = false ) {
+ public function getExternalLB( $cluster ) {
if ( !isset( $this->extLBs[$cluster] ) ) {
- $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $domain );
+ $this->extLBs[$cluster] = $this->newExternalLB( $cluster );
$this->getChronologyProtector()->initLB( $this->extLBs[$cluster] );
}
}
/**
- * @param bool|string $wiki
+ * @param bool|string $domain (unused)
* @return LoadBalancerSingle
*/
- public function newMainLB( $wiki = false ) {
+ public function newMainLB( $domain = false ) {
return $this->lb;
}
/**
- * @param bool|string $wiki
+ * @param bool|string $domain (unused)
* @return LoadBalancerSingle
*/
- public function getMainLB( $wiki = false ) {
+ public function getMainLB( $domain = false ) {
return $this->lb;
}
/**
- * @param string $cluster External storage cluster, or false for core
- * @param bool|string $wiki Wiki ID, or false for the current wiki
+ * @param string $cluster External storage cluster name (unused)
* @return LoadBalancerSingle
*/
- public function newExternalLB( $cluster, $wiki = false ) {
+ public function newExternalLB( $cluster ) {
return $this->lb;
}
/**
- * @param string $cluster External storage cluster, or false for core
- * @param bool|string $wiki Wiki ID, or false for the current wiki
+ * @param string $cluster External storage cluster name (unused)
* @return LoadBalancerSingle
*/
- public function getExternalLB( $cluster, $wiki = false ) {
+ public function getExternalLB( $cluster ) {
return $this->lb;
}
* @throws UnexpectedValueException
*/
public static function newWANCacheFromParams( array $params ) {
+ $erGroup = MediaWikiServices::getInstance()->getEventRelayerGroup();
foreach ( $params['channels'] as $action => $channel ) {
- $params['relayers'][$action] = MediaWikiServices::getInstance()->getEventRelayerGroup()
- ->getRelayer( $channel );
+ $params['relayers'][$action] = $erGroup->getRelayer( $channel );
$params['channels'][$action] = $channel;
}
$params['cache'] = self::newFromParams( $params['store'] );
/**
* Used by getDB() / setDB()
- * @var IDatabase
+ * @var Database
*/
private $mDb = null;
if ( is_array( $wgProfiler ) && isset( $wgProfiler['class'] ) ) {
$class = $wgProfiler['class'];
+ /** @var Profiler $profiler */
$profiler = new $class(
[ 'sampling' => 1, 'output' => [ $output ] ]
+ $wgProfiler
$this->beginTransaction( $dbw, __METHOD__ );
# Get "active" text records from the revisions table
+ $cur = [];
$this->output( 'Searching for active text records in revisions table...' );
$res = $dbw->select( 'revision', 'rev_text_id', [], __METHOD__, [ 'DISTINCT' ] );
foreach ( $res as $row ) {
$this->output( "Going to run database updates for " . wfWikiID() . "\n" );
if ( $db->getType() === 'sqlite' ) {
+ /** @var Database|DatabaseSqlite $db */
$this->output( "Using SQLite file: '{$db->getDbFilePath()}'\n" );
}
$this->output( "Depending on the size of your database this may take a while!\n" );