/[papo]/papo/sql/conv/update
ViewVC logotype

Diff of /papo/sql/conv/update

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by jlenton, Mon Sep 29 20:56:20 2003 UTC revision 1.9 by jlenton, Fri Oct 17 18:14:47 2003 UTC
# Line 3  Line 3 
3  info () {  info () {
4      cat <<EOF      cat <<EOF
5    
6  Este programa una base de datos de PAPO versión 0.1.30 ó posterior.  Este programa actualiza una base de datos de PAPO versión 0.1.30 ó posterior.
7    
8  Como siempre, NO HAY GARANTIA DE QUE NO SE PIERDAN DATOS, y  Como siempre, NO HAY GARANTIA DE QUE NO SE PIERDAN DATOS, y
9  recomendamos correr el script primero contra una base de datos de  recomendamos correr el script primero contra una base de datos de
# Line 17  usage () { Line 17  usage () {
17      exit      exit
18  }  }
19    
20  LOGFILE=papo_log  . ../common.sh || exit 1
   
 abort () {  
       
     $DB -c "INSERT INTO __papo__ (key, value) VALUES ('BROKEN_DB', '$1 $2')" >& /dev/null  
   
     echo  
     echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"  
     tail "$LOGFILE"  
     echo "================================================================"  
     cat <<EOF  
   
   
 Bueno, hay buenas y malas noticas.  
   
 La mala es que pasó algo inesperado que no sé precisar. Yo estaba $1  
 $2, y de repente se murió.  
   
 EOF  
     echo -n "La buena es que hiciste un backup antes"  
   
     if [ "$do_backup" == "s" ]; then  
         echo "."  
         read -e -p "Querés restaurar el backup que hiciste cuando empezaste? [S/n]" confirm  
         case "$confirm" in  
             n*|N*)  
                 ;;  
             *)  
                 $RESTORE  
         esac  
     else  
         echo -e ", verdad?"  
     fi  
   
     exit 1  
 }  
       
   
   
 BASE="$1"  
 USER="${2:-papo}"  
 HOST="${3:-localhost}"  
 OPTS="-h $HOST -U $USER $BASE"  
   
 DUMPFILE=papo_backup  
 TEMPFILE=$(tempfile || echo "/tmp/.PAPO")  
   
 RESTORE="pg_restore -c -Spostgres -h $HOST -U $USER -d $BASE $DUMPFILE"  
 DUMP="pg_dump -F c -f $DUMPFILE $OPTS"  
 DB="psql -q -A -t -v ON_ERROR_STOP=1 $OPTS"  
 echo '\d' | $DB > /dev/null || usage  
   
 info  
 mv --backup=t "$LOGFILE" "$LOGFILE~"  
 read -e -p "Querés hacer un backup de la base de datos? [S/n]" do_backup  
 case "$do_backup" in  
     n*|N*)  
         do_backup=n  
         ;;  
     *)  
         do_backup=s  
         if [ -f "$DUMPFILE" ]; then  
             echo -n "Hackiendo un backup del backup anterior..."  
             mv --backup=t "$DUMPFILE" "${DUMPFILE}~"  
             echo "ok"  
         fi  
         echo -n "Haciendo el backup... "  
         $DUMP || exit  
         echo "ok"  
 esac  
21    
22  $DB -c 'select * from __papo__ where 1=0' >& /dev/null  $DB -c 'select * from __papo__ where 1=0' >& /dev/null
23  if [ $? -ne 0 ]; then  if [ $? -ne 0 ]; then
# Line 126  INSERT INTO __papo__ (key, value) VALUES Line 57  INSERT INTO __papo__ (key, value) VALUES
57  EOF  EOF
58    
59  else  else
60      broken=$( $DB  -c "select to_char(date, 'YYYY-MM-DD%sHH24:MI:SS%s\n') || value from __papo__ where key='BROKEN_DB'" )      is_broken
     if [ -n "$broken" ]; then  
   
         echo "La base de datos está en un estado desconocido, y existe"  
         echo "una muy buena posibilidad de que esté rota."  
         printf "Esto pasó el $broken.\n" " a las " " cuando yo estaba "  
         echo  
         echo "por favor comunicate con papo-abusers."  
   
         exit 1  
     fi  
   
     PAPO_VERSION=$( $DB -c "select value from __papo__ where key='version'" )  
61  fi  fi
62    
63  shopt -s extglob  shopt -s extglob
64  DIR=${PAPO_VERSION%.+([0-9])}/$PAPO_VERSION  set_dir
65  echo "Tu base ahora es versión $PAPO_VERSION."  echo "Tu base ahora es versión $PAPO_VERSION."
66  while [ -d "$DIR" ]; do  while [ -d "$DIR" ]; do
67      echo Aplicando cambios a $PAPO_VERSION:      echo Aplicando cambios a $PAPO_VERSION:
# Line 173  while [ -d "$DIR" ]; do Line 92  while [ -d "$DIR" ]; do
92          break          break
93      fi      fi
94      $DB -c "update __papo__ set value='$PAPO_VERSION' where key='version';"      $DB -c "update __papo__ set value='$PAPO_VERSION' where key='version';"
95      DIR=${PAPO_VERSION%.+([0-9])}/$PAPO_VERSION      set_dir
96      echo "Tu base ahora es versión $PAPO_VERSION."      echo "Tu base ahora es versión $PAPO_VERSION."
97  done  done
98  echo "Todos los cambios que encontré han sido aplicados"  echo "Todos los cambios que encontré han sido aplicados"

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26