- # 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 and #613586)
+ if [ -n "$2" ] && dpkg --compare-versions "$2" le 0.5.1+dfsg-5; then
+ db_get roundcube/dbconfig-upgrade || true
+ if [ x"$RET" = x"true" ]; then
+ if [ x"$dbc_dbtype" = x"mysql" ]; then
+ # Ok, we may need to do some upgrade steps.
+ echo "Fixing MySQL installation..."
+ if dpkg --compare-versions "$2" ge 0.5; then
+ # Hack (ugly) to replace "mysql" by "mysql -f"
+ real_mysql="$(which mysql)"
+ workdir="$(mktemp -d)"
+ oldpath="$PATH"
+ cat <<EOF > "$workdir/mysql"
+#!/bin/sh
+"$real_mysql" "\$@" -f