diff --git a/ChangeLog b/ChangeLog index 65fbc5bb3..3c7f45946 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-07-18 Jean Raby + * Scripts/sql-update-1.3.16_to_1.3.17-mysql.sh + * Scripts/sql-update-1.3.16_to_1.3.17.sh: + New scripts to expand c_cycleinfo to mediumtext or varchar(1000000) + The field was expanded around 1.3.3. + See http://www.sogo.nu/bugs/view.php?id=1848 + 2012-07-16 Wolfgang Sourdeau * Tests/Integration/webdavlib.py (WebDAVQuery.set_response): make @@ -21967,3 +21974,4 @@ 2006-06-15 ludovic@inverse.ca * Initial import of SOGo from trunk. + diff --git a/Scripts/sql-update-1.3.16_to_1.3.17-mysql.sh b/Scripts/sql-update-1.3.16_to_1.3.17-mysql.sh new file mode 100644 index 000000000..265840ed7 --- /dev/null +++ b/Scripts/sql-update-1.3.16_to_1.3.17-mysql.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +set -e + +# This script only works with mysql +# updates c_cycleinfo to mediumtext +# http://www.sogo.nu/bugs/view.php?id=1848 +# the field length was actually changed somewhere between 1.3.2 and 1.3.3 +# but no one reported any breakage. + +# this script only works with MySQL + +defaultusername=$USER +defaulthostname=127.0.0.1 +defaultdatabase=$USER +indextable=$(su - sogo -c "defaults read sogod OCSFolderInfoURL" | awk -F/ '{print $NF}') +if [ -z "$indextable" ]; then + echo "Couldn't fetch OCSFolderInfoURL value, aborting" >&2 + exit 1 +fi + +read -p "Username ($defaultusername): " username +read -p "Hostname ($defaulthostname): " hostname +read -p "Database ($defaultdatabase): " database + +if [ -z "$username" ] +then + username=$defaultusername +fi + +if [ -z "$hostname" ] +then + hostname=$defaulthostname +fi + +if [ -z "$database" ] +then + database=$defaultdatabase + fi + +sqlscript="" + +function growVC() { + oldIFS="$IFS" + IFS=" " + part="`echo -e \"ALTER TABLE $table MODIFY c_cycleinfo mediumtext;\\n\"`"; + sqlscript="$sqlscript$part" + IFS="$oldIFS" +} + +echo "This script will ask for the sql password twice" >&2 +echo "Converting c_cycleinfo from VARCHAR(1000) to mediumtext in calendar quick tables" >&2 +tables=`mysql -p -s -u $username -h $hostname $database -e "select SUBSTRING_INDEX(c_quick_location, '/', -1) from $indextable where c_path3 = 'Calendar';"` + +for table in $tables; +do + growVC +done + +echo "$sqlscript" | mysql -p -s -u $username -h $hostname $database diff --git a/Scripts/sql-update-1.3.16_to_1.3.17.sh b/Scripts/sql-update-1.3.16_to_1.3.17.sh new file mode 100755 index 000000000..498c1217d --- /dev/null +++ b/Scripts/sql-update-1.3.16_to_1.3.17.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +set -e +# This script only works with PostgreSQL +# updates c_cycleinfo to varchar(1000000). +# http://www.sogo.nu/bugs/view.php?id=1848 +# the field length was actually changed somewhere between 1.3.2 and 1.3.3 +# but no one reported any breakage. + +defaultusername=$USER +defaulthostname=localhost +defaultdatabase=$USER +#indextable=sogo_folder_info +indextable=$(su - sogo -c "defaults read sogod OCSFolderInfoURL" | awk -F/ '{print $NF}') +if [ -z "$indextable" ]; then + echo "Couldn't fetch OCSFolderInfoURL value, aborting" >&2 + exit 1 +fi + +read -p "Username ($defaultusername): " username +read -p "Hostname ($defaulthostname): " hostname +read -p "Database ($defaultdatabase): " database + +if [ -z "$username" ] +then + username=$defaultusername +fi +if [ -z "$hostname" ] +then + hostname=$defaulthostname +fi +if [ -z "$database" ] +then + database=$defaultdatabase +fi + +sqlscript="" + +function growVC() { + oldIFS="$IFS" + IFS=" " + part="`echo -e \"ALTER TABLE $table ALTER COLUMN c_cycleinfo TYPE VARCHAR(1000000);\\n\"`"; + sqlscript="$sqlscript$part" + IFS="$oldIFS" +} + +echo "Converting c_cycleinfo from VARCHAR(1000) to VARCHAR(1000000) in calendar quick tables" >&2 +tables=`psql -t -U $username -h $hostname $database -c "select split_part(c_quick_location, '/', 5) from $indextable where c_path3 = 'Calendar';"` + +for table in $tables; +do + growVC +done + +echo "$sqlscript" | psql -q -e -U $username -h $hostname $database