From 2ffc624bbd27f28926e61fa819b7209ffe27114c Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Sun, 9 Mar 2008 13:07:35 +0000 Subject: [PATCH] mauvaise correction de la mauvaise correction de la mauvaise correction en [10603]: la suppression de l'autoincrement avant la primary key avait saute Par ailleurs, on repare les eventuelles tables spip_documents en se fondant sur l'extension de la colonne fichier, ce qui sera bon en general sauf pour les documents distants eventuels Un temporary table passe en table tout court dans la maj 1932 car certains hebergements ne permettent pas de creer des tables temporaires --- ecrire/inc_version.php | 2 +- ecrire/maj/svn10000.php | 7 +++++++ ecrire/maj/v019.php | 36 +++++++++++++++++++++--------------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index 3529c91788..c9a3f35ac4 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -304,7 +304,7 @@ $liste_des_forums = array( // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes) $spip_version_code = 11268; // version de la base SQL (= numero SVN de sa derniere modif) -$spip_version = 11268; +$spip_version = 11276; // version de l'interface a la base $spip_sql_version = 1; diff --git a/ecrire/maj/svn10000.php b/ecrire/maj/svn10000.php index f6108cdd45..877073c1b8 100644 --- a/ecrire/maj/svn10000.php +++ b/ecrire/maj/svn10000.php @@ -40,4 +40,11 @@ function maj_11268() { } $GLOBALS['maj'][11268] = array(array('maj_11268')); + +function maj_11276 () { + include_spip('maj/v019'); + maj_1_938(); +} +$GLOBALS['maj'][11276] = array(array('maj_11276')); + ?> diff --git a/ecrire/maj/v019.php b/ecrire/maj/v019.php index 2326641a83..cb65c8d196 100644 --- a/ecrire/maj/v019.php +++ b/ecrire/maj/v019.php @@ -32,7 +32,7 @@ $GLOBALS['maj'][1932] = array( array('sql_alter', "TABLE spip_forum ADD INDEX `date_thread` (`date_thread`)"), array('spip_query', "DROP TABLE IF EXISTS spip_tmp"), - array('spip_query', "CREATE TEMPORARY TABLE spip_tmp SELECT `id_thread`,MAX(`date_heure`) AS dt FROM spip_forum GROUP BY `id_thread`"), + array('spip_query', "CREATE TABLE spip_tmp SELECT `id_thread`,MAX(`date_heure`) AS dt FROM spip_forum GROUP BY `id_thread`"), array('sql_alter', "TABLE spip_tmp ADD INDEX `p` (`id_thread`)"), array('spip_query', "UPDATE spip_forum AS F JOIN spip_tmp AS T ON F.id_thread=T.id_thread SET F.date_thread=T.dt"), array('spip_query', "DROP TABLE spip_tmp"), @@ -96,12 +96,24 @@ $GLOBALS['maj'][1937] = array( function maj_1_938 () { - - $s = spip_query("SELECT `id_type`,`extension` FROM spip_types_documents"); - while ($t = sql_fetch($s)) { - spip_query("UPDATE spip_documents - SET `extension`="._q($t['extension']) - ." WHERE `id_type`="._q($t['id_type'])); + $res = sql_select('extension','spip_documents',"extension='' OR extension is NULL"); + if ($n = sql_count($res)) { + $repli = false; + // verifier que la colonne id_type est toujours la (update post 1.938) + $desc = sql_showtable('spip_documents'); + if (!$desc OR !isset($desc['field']['id_type'])) + $repli = true; + + $s = sql_select('extension'.($repli?'':',id_type'),'spip_types_documents'); + while ($t = sql_fetch($s)) { + if (isset($t['id_type'])) + spip_query("UPDATE spip_documents SET `extension`="._q($t['extension']) ." WHERE `id_type`="._q($t['id_type'])); + else + spip_query("UPDATE spip_documents SET `extension`="._q($t['extension']) ." WHERE fichier LIKE "._q("%." . $t['extension'])); + } + $res = sql_select('extension','spip_documents',"extension='' OR extension is NULL"); + if ($n = sql_count($res)) + spip_log("Table spip_documents : Colonne extension incomplete : $n lignes vides"); } } @@ -413,19 +425,13 @@ $GLOBALS['maj'][1938] = array( array('maj_1_938'), # supprimer l'ancien champ et son index array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"), + ## supprimer l'autoincrement avant de supprimer la PRIMARY KEY + array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL ") , # le champ id_type devient superflu array('sql_alter', "TABLE spip_types_documents DROP `id_type`"), array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)") ); -// pour ceux pour qui c'est trop tard: -// mais faudrait trouver mieux -function maj_1_938_catastrophe () -{ - spip_log("Verifier la colonne extension de la table spip_documents; si elle est toujours vide, repartir d'une sauvegarde 1.9.2"); -} -if ($GLOBALS['meta']['version_installee'] > 1.938) - $GLOBALS['maj'][1956] = array(array('maj_1_938_catastrophe')); // PG veut une valeur par defaut a l'insertion // http://trac.rezo.net/trac/spip/changeset/10482 -- GitLab