]> git.donarmstrong.com Git - roundcube.git/commitdiff
Fix MySQL indexes if upgrading from 0.5-2 or lesser. Closes: #610725.
authorVincent Bernat <bernat@debian.org>
Sun, 13 Feb 2011 12:45:23 +0000 (12:45 +0000)
committerJérémy Bobbio <lunar@debian.org>
Sat, 18 Jun 2011 19:28:15 +0000 (21:28 +0200)
debian/changelog
debian/roundcube-core.postinst

index 0aa6e75d427251284a527ba96b6076d0db8b2ad7..c5004c85d18327ce51852b011612ba610bed52b7 100644 (file)
@@ -4,6 +4,7 @@ roundcube (0.5-3) UNRELEASED; urgency=low
   * Add instructions on how to install and upgrade when not using
     dbconfig-common. We do not ship UPGRADING file any more since it is
     misleading. Closes: #612511.
+  * Fix MySQL indexes if upgrading from 0.5-2 or lesser. Closes: #610725.
 
  -- Vincent Bernat <bernat@debian.org>  Wed, 09 Feb 2011 07:32:42 +0100
 
index c1968a65e6c55dbd9687c6513b986a726dfa7931..f4e2a8273a9cf551480fd564f46e099c43c821c8 100644 (file)
@@ -39,6 +39,27 @@ apache_install() {
 case "$1" in
     configure)
 
+       # We try to fix an incomplete upgrade (see #610725)
+       if [ -n "$2" ] && dpkg --compare-versions "$2" le 0.5-2; then
+           db_get roundcube/dbconfig-upgrade || true
+           if [ x"$RET" = x"true" ]; then
+               # Ok, we may need to do some upgrade steps. Let's get
+               # database parameters
+               eval `sed -n 's/^\$\(.*\);$/\1/p' /etc/roundcube/debian-db.php`
+               if [ x"$dbtype" = x"mysql" ]; then
+                   echo "Fixing MySQL indexes (you can ignore errors)..."
+                   MYSQLARGS="-f -u $dbuser -p$dbpass $dbname"
+                   [ -z "$dbserver" ] || MYSQLARGS="-h $dbserver $MYSQLARGS"
+                   [ -z "$dbport" ] || MYSQLARGS="-P $dbport $MYSQLARGS"
+                   cat <<EOF | mysql $MYSQLARGS || true
+ALTER TABLE \`messages\` ADD INDEX \`index_index\` (\`user_id\`, \`cache_key\`, \`idx\`);
+ALTER TABLE \`session\` CHANGE \`vars\` \`vars\` MEDIUMTEXT NOT NULL;
+ALTER TABLE \`contacts\`ADD INDEX \`user_contacts_index\` (\`user_id\`,\`email\`);
+EOF
+               fi
+           fi
+       fi
+
        CONFFILE=/etc/roundcube/main.inc.php
        touch $CONFFILE.ucftmp
        chmod 640 $CONFFILE.ucftmp