Skip to content
Extraits de code Groupes Projets
Valider f2e7c559 rédigé par esj's avatar esj
Parcourir les fichiers

Scories dans la série des mises à jour, blindage de la fonction qui les gère...

Scories dans la série des mises à jour, blindage de la fonction qui les gère pour qu'on en soit prévenu, et complément au portage de l'instruction ALTER en PG.
parent ddf5255e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -151,35 +151,37 @@ function spip_pg_alter_change($table, $arg, $serveur='')
// http://doc.spip.org/@spip_pg_alter_add
function spip_pg_alter_add($table, $arg, $serveur='') {
if (!preg_match('/^(INDEX|KEY|PRIMARY\s+KEY|)\s*`?(\w+)`?(.*)$/', $arg, $r))
spip_log("drop $arg incompris", 'pg');
else {
if (!$r[1])
return spip_pg_query("ALTER TABLE $table ADD " . $r[2] . ' ' . mysql2pg_type($r[3]), $serveur);
elseif ($r[1][0] = 'P')
return spip_pg_query("ALTER TABLE $table ADD PRIMARY KEY " . $r[2], $serveur);
else {
return spip_pg_query("CREATE INDEX " . $table . '_' . $r[2] . "ON $table", $serveur);
}
if (!preg_match('/^(INDEX|KEY|PRIMARY\s+KEY|)\s*(.*)$/', $arg, $r)) {
spip_log("alter add $arg incompris", 'pg');
return NULL;
}
if (!$r[1]) {
preg_match('/`?(\w+)`?(.*)/',$r[2], $m);
return spip_pg_query("ALTER TABLE $table ADD " . $m[1] . ' ' . mysql2pg_type($m[2]), $serveur);
} elseif ($r[1][0] == 'P') {
preg_match('/\(`?(\w+)`?\)/',$r[2], $m);
return spip_pg_query("ALTER TABLE $table ADD CONSTRAINT $table" .'_pkey PRIMARY KEY (' . $m[1] . ')', $serveur);
} else {
preg_match('/`?(\w+)`?\s*(\([^)]*\))/',$r[2], $m);
return spip_pg_query("CREATE INDEX " . $table . '_' . $m[1] . " ON $table " . str_replace("`","",$m[2]), $serveur);
}
}
// http://doc.spip.org/@spip_pg_alter_drop
function spip_pg_alter_drop($table, $arg, $serveur='') {
if (!preg_match('/^(INDEX|KEY|PRIMARY\s+KEY|)\s*`?(\w+)`?/', $arg, $r))
if (!preg_match('/^(INDEX|KEY|PRIMARY\s+KEY|)\s*`?(\w*)`?/', $arg, $r))
spip_log("alter drop: $arg incompris", 'pg');
else {
if (!$r[1])
return spip_pg_query("ALTER TABLE $table DROP " . $r[2], $serveur);
elseif ($r[1][0] = 'P')
return spip_pg_query("ALTER TABLE $table DROP CONSTRAINT PRIMARY", $serveur);
elseif ($r[1][0] == 'P')
return spip_pg_query("ALTER TABLE $table DROP CONSTRAINT $table" . '_pkey', $serveur);
else {
return spip_pg_query("DROP INDEX " . $table . '_' . $r[2], $serveur);
}
}
}
// http://doc.spip.org/@spip_pg_explain
function spip_pg_explain($query, $serveur=''){
if (strpos($query, 'SELECT') !== 0) return array();
......
......@@ -104,13 +104,16 @@ function maj_while($version_installee, $version_cible)
// http://doc.spip.org/@serie_alter
function serie_alter($serie, $q = array()) {
$etape = intval(@$GLOBALS['meta']['upgrade_etape_'.$serie]);
foreach ($q as $i => $req) {
foreach ($q as $i => $r) {
if ($i >= $etape) {
$f = array_shift($req);
spip_log("maj $serie etape $i: $f ".join(',',$req),'maj');
if (function_exists($f)) {
call_user_func_array($f, $req);
ecrire_meta('upgrade_etape_'.$serie, $i+1);
if (is_array($r)
AND function_exists($f = array_shift($r))) {
spip_log("$serie/$i: $f " . join(',',$r),'maj');
call_user_func_array($f, $r);
ecrire_meta('upgrade_etape_'.$serie, $i+1);
} else {
echo "maj $serie etape $i incorrecte";
exit;
}
}
}
......
......@@ -378,7 +378,7 @@ function maj_1_952() {
if (!$ok) die('echec sur maj_1_952()');
}
$GLOBALS['maj'][1][952] = array('maj_1_952');
$GLOBALS['maj'][1][952] = array(array('maj_1_952'));
function maj_1_953()
{
......@@ -387,7 +387,7 @@ function maj_1_953()
creer_base_types_doc($tables_principales['spip_types_documents']);
}
$GLOBALS['maj'][1][953] = array('maj_1_953');
$GLOBALS['maj'][1][953] = array(array('maj_1_953'));
$GLOBALS['maj'][1][954] = array(
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter