- # From 0.1-beta2.2 to 0.1-rc1, a column was added to table
- # `identities'. For MySQL and PostgreSQL, this is handled by
- # dbconfig-common but for sqlite, there is no way to add a
- # column to a table. Therefore, we dump here the table and add
- # the column.
- [ "$dbc_upgrade" = "true" ] && {
- case "$dbc_dbtype" in
- sqlite)
- db="${dbc_basepath}/${dbc_dbname}"
- # OK, we need to check if the table contains html_signature
- if ! sqlite "$db" '.schema identities' | grep -q html_signature; then
- # We need to add it
- echo -n "Need to upgrade 'identities' table in $db... "
- upgrade_tmp=$(mktemp -t roundcube.sqlite.XXXXXXXXXX)
- (
- cat <<EOF
-BEGIN TRANSACTION;
-DROP TABLE identities;
-CREATE TABLE identities (
- identity_id integer NOT NULL PRIMARY KEY,
- user_id integer NOT NULL default '0',
- del tinyint NOT NULL default '0',
- standard tinyint NOT NULL default '0',
- name varchar(128) NOT NULL default '',
- organization varchar(128) default '',
- email varchar(128) NOT NULL default '',
- "reply-to" varchar(128) NOT NULL default '',
- bcc varchar(128) NOT NULL default '',
- signature text NOT NULL default '',
- html_signature tinyint NOT NULL default '0'
-);
-
-CREATE INDEX ix_identities_user_id ON identities(user_id);
-
+ # We try to fix an incomplete upgrade (see #610725)
+ if [ -n "$2" ] && dpkg --compare-versions "$2" le 0.5.1+dfsg-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\`);
+ALTER TABLE \`identities\` ADD INDEX \`user_identities_index\` (\`user_id\`, \`del\`);