public function execute() { // Shouldn't be needed for Postgres $this->db = $this->getDB(DB_MASTER); if ($this->db->getType() == 'postgres') { $this->error("This script is not needed when using Postgres.\n", true); } if ($this->db->getType() == 'sqlite') { if (!DatabaseSqlite::getFulltextSearchModule()) { $this->error("Your version of SQLite module for PHP doesn't " . "support full-text search (FTS3).\n", true); } if (!$this->db->checkForEnabledSearch()) { $this->error("Your database schema is not configured for " . "full-text search support. Run update.php.\n", true); } } if ($this->db->getType() == 'mysql') { $this->dropMysqlTextIndex(); $this->clearSearchIndex(); $this->populateSearchIndex(); $this->createMysqlTextIndex(); } else { $this->clearSearchIndex(); $this->populateSearchIndex(); } $this->output("Done.\n"); }
/** * @param DatabaseBase $db * @param bool $shared * @param Maintenance $maintenance * * @throws MWException * @return DatabaseUpdater */ public static function newForDB(&$db, $shared = false, $maintenance = null) { $type = $db->getType(); if (in_array($type, Installer::getDBTypes())) { $class = ucfirst($type) . 'Updater'; return new $class($db, $shared, $maintenance); } else { throw new MWException(__METHOD__ . ' called for unsupported $wgDBtype'); } }
/** * @throws MWException * @since 1.18 */ protected function checkDbIsSupported() { if (!in_array($this->db->getType(), $this->supportedDBs)) { throw new MWException($this->db->getType() . " is not currently supported for unit testing."); } }
/** * @param $params array */ function __construct($params) { $this->db = $params['connection']; parent::__construct(array('servers' => array(array('type' => $this->db->getType(), 'host' => $this->db->getServer(), 'dbname' => $this->db->getDBname(), 'load' => 1)))); }
/** * @param array $params */ public function __construct(array $params) { $this->db = $params['connection']; parent::__construct(['servers' => [['type' => $this->db->getType(), 'host' => $this->db->getServer(), 'dbname' => $this->db->getDBname(), 'load' => 1]], 'trxProfiler' => $this->trxProfiler]); if (isset($params['readOnlyReason'])) { $this->db->setLBInfo('readOnlyReason', $params['readOnlyReason']); } }
private function dropFunctions() { $this->db->query('DROP FUNCTION IF EXISTS mw_test_function' . ($this->db->getType() == 'postgres' ? '()' : '')); }
/** * Return an SQL expression selecting rows which sort above the given row, * assuming an ordering of cl_collation, cl_to, cl_type, cl_from * @param stdClass $row * @param DatabaseBase $dbw * @return string */ function getBatchCondition($row, $dbw) { if ($this->hasOption('previous-collation')) { $fields = ['cl_to', 'cl_type', 'cl_from']; } else { $fields = ['cl_collation', 'cl_to', 'cl_type', 'cl_from']; } $first = true; $cond = false; $prefix = false; foreach ($fields as $field) { if ($dbw->getType() === 'mysql' && $field === 'cl_type') { // Range conditions with enums are weird in mysql // This must be a numeric literal, or it won't work. $encValue = intval($row->cl_type_numeric); } else { $encValue = $dbw->addQuotes($row->{$field}); } $inequality = "{$field} > {$encValue}"; $equality = "{$field} = {$encValue}"; if ($first) { $cond = $inequality; $prefix = $equality; $first = false; } else { $cond .= " OR ({$prefix} AND {$inequality})"; $prefix .= " AND {$equality}"; } } return $cond; }