diff options
author | ramon <ramongomez@us.es> | 2016-11-17 10:41:15 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2016-11-17 10:41:15 +0000 |
commit | 566e84f5495c870a207aab0f5198ff80845666bc (patch) | |
tree | 14882d1671cb279c38bc77e8abc9ed14a35e5f54 /installer | |
parent | 35518042e4fa0c70cd0f68428f4b724b3f8e0e6d (diff) |
#765: Actualizador buscan aplica modificaciones diferenciales en la BD desde la versión instalada a la versión a actualizar, pasando por las versiones intermedias definidas en los ficheros SQL definidos.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@5097 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'installer')
-rwxr-xr-x | installer/opengnsys_update.sh | 68 |
1 files changed, 54 insertions, 14 deletions
diff --git a/installer/opengnsys_update.sh b/installer/opengnsys_update.sh index 5e46ea70..362c106b 100755 --- a/installer/opengnsys_update.sh +++ b/installer/opengnsys_update.sh @@ -667,6 +667,58 @@ function createDirs() return 0 } +# Actualización incremental de la BD (versión actaul a actaul+1, hasta final-1 a final). +function updateDatabase() +{ + local OLDVERSION=$(awk '{print $2}' $INSTALL_TARGET/doc/VERSION.txt) + local NEWVERSION=$(awk '{print $2}' $WORKDIR/opengnsys/doc/VERSION.txt) + local DBDIR="$WORKDIR/opengnsys/admin/Database" + local file FILES="" + + echoAndLog "${FUNCNAME}(): looking for database updates" + pushd $DBDIR >/dev/null + # Bucle de actualización incremental desde versión actual a la final. + for file in $OPENGNSYS_DATABASE-*-*.sql; do + case "$file" in + $OPENGNSYS_DATABASE-$OLDVERSION-$NEWVERSION.sql) + # Actualización única de versión inicial y final. + FILES="$FILES $file" + break + ;; + $OPENGNSYS_DATABASE-*-postinst.sql) + # Ignorar fichero específico de post-instalación. + ;; + $OPENGNSYS_DATABASE-$OLDVERSION-*.sql) + # Actualización de versión n a n+1. + FILES="$FILES $file" + OLDVERSION="$(echo $file | cut -f3 -d-)" + ;; + $OPENGNSYS_DATABASE-*-$NEWVERSION.sql) + # Última actualización de versión final-1 a final. + if [ -n "$FILES" ]; then + FILES="$FILES $file" + break + fi + ;; + esac + done + # Aplicar posible actualización propia para la versión final. + file=$OPENGNSYS_DATABASE-$NEWVERSION.sql + if [ -n "$FILES" -o "$OLDVERSION" = "$NEWVERSION" -a -r $file ]; then + FILES="$FILES $file" + fi + + popd >/dev/null + if [ -n "$FILES" ]; then + for file in $FILES; do + importSqlFile $OPENGNSYS_DBUSER $OPENGNSYS_DBPASSWORD $OPENGNSYS_DATABASE $file + done + echoAndLog "${FUNCNAME}(): database is update" + else + echoAndLog "${FUNCNAME}(): database unchanged" + fi +} + # Copia ficheros de configuración y ejecutables genéricos del servidor. function updateServerFiles() { @@ -987,20 +1039,8 @@ else ln -fs "$(dirname $PROGRAMDIR)" opengnsys fi -# Si existe fichero de actualización de la base de datos; aplicar cambios. -INSTVERSION=$(awk '{print $2}' $INSTALL_TARGET/doc/VERSION.txt) -REPOVERSION=$(awk '{print $2}' $WORKDIR/opengnsys/doc/VERSION.txt) -if [ "$INSTVERSION" == "$REPOVERSION" ]; then - OPENGNSYS_DBUPDATEFILE="$WORKDIR/opengnsys/admin/Database/$OPENGNSYS_DATABASE-$INSTVERSION.sql" -else - OPENGNSYS_DBUPDATEFILE="$WORKDIR/opengnsys/admin/Database/$OPENGNSYS_DATABASE-$INSTVERSION-$REPOVERSION.sql" -fi -if [ -f $OPENGNSYS_DBUPDATEFILE ]; then - echoAndLog "Updating tables from file: $(basename $OPENGNSYS_DBUPDATEFILE)" - importSqlFile $OPENGNSYS_DBUSER $OPENGNSYS_DBPASSWORD $OPENGNSYS_DATABASE $OPENGNSYS_DBUPDATEFILE -else - echoAndLog "Database unchanged." -fi +# Actualizar la BD. +updateDatabase # Actualizar ficheros complementarios del servidor updateServerFiles |