Dump database
Psql8 does not support altering table permissions using "ON ALL TABLES IN SCHEMA", so this commit implements a workaround which consists in dumping the original (and upgraded) database and loading it again, instead of just doing a rename and fixing permissions afterwards. FEA: ItEr75S03CommunityMaterial
This commit is contained in:
parent
215e0e9e82
commit
a8cb48bcf7
1 changed files with 22 additions and 13 deletions
35
debian/navalplan.preinst
vendored
35
debian/navalplan.preinst
vendored
|
|
@ -5,8 +5,15 @@ base_dbconfig_data_dir="/usr/share/dbconfig-common/data"
|
||||||
install_upgrade_to() {
|
install_upgrade_to() {
|
||||||
upgrade_file="$base_dbconfig_data_dir/libreplan/upgrade/pgsql/$1"
|
upgrade_file="$base_dbconfig_data_dir/libreplan/upgrade/pgsql/$1"
|
||||||
echo "Applying SQL statements to upgrade to version $1..."
|
echo "Applying SQL statements to upgrade to version $1..."
|
||||||
psql -U $navalplan_user -h $database_host \
|
push_sql_from_file_as_user $upgrade_file $navalplan_user $navalplan_db
|
||||||
$navalplan_db < $upgrade_file > /dev/null
|
}
|
||||||
|
|
||||||
|
push_sql_from_file_as_user() {
|
||||||
|
filepath=$1
|
||||||
|
username=$2
|
||||||
|
database=$3
|
||||||
|
psql -U $username -h $database_host \
|
||||||
|
$database < $filepath > /dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
execute_sql_as_admin() {
|
execute_sql_as_admin() {
|
||||||
|
|
@ -37,6 +44,11 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export PGPASSFILE=`mktemp`
|
export PGPASSFILE=`mktemp`
|
||||||
|
chmod 600 $PGPASSFILE
|
||||||
|
|
||||||
|
old_db_dump=`mktemp`
|
||||||
|
chown $navalplan_admin_user:root $old_db_dump;
|
||||||
|
chmod 660 $old_db_dump;
|
||||||
|
|
||||||
# Stop tomcat to flush active connections.
|
# Stop tomcat to flush active connections.
|
||||||
if [ -x /etc/init.d/tomcat6 ] ; then
|
if [ -x /etc/init.d/tomcat6 ] ; then
|
||||||
|
|
@ -67,24 +79,21 @@ then
|
||||||
install_upgrade_to "1.2.0"
|
install_upgrade_to "1.2.0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Rename old database (navalplan -> libreplan)
|
echo "Dumping old database..."
|
||||||
echo "Renaming old database..."
|
su - -s /bin/sh $navalplan_admin_user -c "pg_dump $navalplan_db >> $old_db_dump" > /dev/null
|
||||||
execute_sql_as_admin "ALTER DATABASE $navalplan_db RENAME TO $libreplan_db;"
|
|
||||||
|
|
||||||
# Grant permissions to libreplan user
|
echo "Creating and populating new database...";
|
||||||
echo "Fixing permissions..."
|
execute_sql_as_admin "CREATE DATABASE $libreplan_db;"
|
||||||
execute_sql_as_admin "GRANT ALL PRIVILEGES ON DATABASE $libreplan_db TO $libreplan_user;"
|
execute_sql_as_admin "GRANT ALL PRIVILEGES ON DATABASE $libreplan_db TO $libreplan_user;"
|
||||||
execute_sql_as_admin "ALTER DATABASE $libreplan_db OWNER TO $libreplan_user;"
|
execute_sql_as_admin "ALTER DATABASE $libreplan_db OWNER TO $libreplan_user;"
|
||||||
|
echo "*:*:*:*:$libreplan_passwd" > $PGPASSFILE
|
||||||
|
push_sql_from_file_as_user $old_db_dump $libreplan_user $libreplan_db
|
||||||
|
|
||||||
su - -s /bin/sh $navalplan_admin_user -c \
|
rm $PGPASSFILE $old_db_dump
|
||||||
"psql $libreplan_db -c \"GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA
|
|
||||||
public TO $libreplan_user;\"" > /dev/null
|
|
||||||
|
|
||||||
rm $PGPASSFILE
|
|
||||||
|
|
||||||
# Remove old deployment directory as it's no longer necessary.
|
# Remove old deployment directory as it's no longer necessary.
|
||||||
if [ -d /var/lib/tomcat6/webapps/navalplan/ ] ; then
|
if [ -d /var/lib/tomcat6/webapps/navalplan/ ] ; then
|
||||||
rm -rf /var/lib/tomcat6/webapps/navalplan/
|
rm -r /var/lib/tomcat6/webapps/navalplan/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Make sure the driver is there, as it might be removed when
|
# Make sure the driver is there, as it might be removed when
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue