function update($pageid, $title, $text) { ## We don't want to index older revisions $SQL = "UPDATE pagecontent SET textvector = NULL WHERE old_id IN " . "(SELECT rev_text_id FROM revision WHERE rev_page = " . intval($pageid) . " ORDER BY rev_text_id DESC OFFSET 1)"; $this->db->query($SQL); return true; }
function query($sql, $fname = '', $tempIgnore = false) { /* ugh! */ $chk = "ALTER TABLE interwiki "; $csz = strlen($chk); if (substr($sql, 0, $csz) == $chk) { $sql = "ALTER TABLE public.plugin_mediawiki_interwiki " . substr($sql, $csz); } return DatabasePostgres::query($sql, $fname, $tempIgnore); }
protected function checkIpbAdress() { if ($this->db->indexExists('ipblocks', 'ipb_address')) { $this->output("Removing deprecated index 'ipb_address'...\n"); $this->db->query('DROP INDEX ipb_address'); } if ($this->db->indexExists('ipblocks', 'ipb_address_unique')) { $this->output("...have ipb_address_unique\n"); } else { $this->output("Adding ipb_address_unique index\n"); $this->applyPatch('patch-ipb_address_unique.sql'); } }
protected function checkIndex($index, $should_be, $good_def) { $pu = $this->db->indexAttributes($index); if (!empty($pu) && $pu != $should_be) { $this->output("Dropping obsolete version of index '{$index}'\n"); $this->db->query("DROP INDEX \"" . $index . "\""); $pu = array(); } else { $this->output("...no need to drop index '{$index}'\n"); } if (empty($pu)) { $this->output("Creating index '{$index}'\n"); $this->db->query($good_def); } else { $this->output("...index '{$index}' exists\n"); } }
/** * @param DatabasePostgres $db * @param string $table * @param string $field * @return null|PostgresField */ static function fromText(DatabasePostgres $db, $table, $field) { $q = <<<SQL SELECT attnotnull, attlen, conname AS conname, atthasdef, adsrc, COALESCE(condeferred, 'f') AS deferred, COALESCE(condeferrable, 'f') AS deferrable, CASE WHEN typname = 'int2' THEN 'smallint' WHEN typname = 'int4' THEN 'integer' WHEN typname = 'int8' THEN 'bigint' WHEN typname = 'bpchar' THEN 'char' ELSE typname END AS typname FROM pg_class c JOIN pg_namespace n ON (n.oid = c.relnamespace) JOIN pg_attribute a ON (a.attrelid = c.oid) JOIN pg_type t ON (t.oid = a.atttypid) LEFT JOIN pg_constraint o ON (o.conrelid = c.oid AND a.attnum = ANY(o.conkey) AND o.contype = 'f') LEFT JOIN pg_attrdef d on c.oid=d.adrelid and a.attnum=d.adnum WHERE relkind = 'r' AND nspname=%s AND relname=%s AND attname=%s; SQL; $table = $db->remappedTableName($table); $res = $db->query(sprintf($q, $db->addQuotes($db->getCoreSchema()), $db->addQuotes($table), $db->addQuotes($field))); $row = $db->fetchObject($res); if (!$row) { return null; } $n = new PostgresField(); $n->type = $row->typname; $n->nullable = $row->attnotnull == 'f'; $n->name = $field; $n->tablename = $table; $n->max_length = $row->attlen; $n->deferrable = $row->deferrable == 't'; $n->deferred = $row->deferred == 't'; $n->conname = $row->conname; $n->has_default = $row->atthasdef === 't'; $n->default = $row->adsrc; return $n; }