]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/updatedb/update_postgresql_tables_7_to_8
MySQL compilation fix
[bacula/bacula] / bacula / updatedb / update_postgresql_tables_7_to_8
index 03f2407e34f38f77fc4fcc819505590ec2b7e888..2aae66a8f782dba157c423bb7fdb4e53cc0c0548 100755 (executable)
@@ -7,18 +7,63 @@ echo "This script will update a Bacula PostgreSQL database from version 7 to 8"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
-bindir=/home/kern/bacula/depkgs/sqlite
+bindir=/usr/bin
 
-if $bindir/psql $* -f - <<END-OF-DATA
+DB_VER="`echo -e '\\c bacula\nselect * from Version;' | $bindir/psql $* bacula -f - | tail -n 1 2>/dev/null`"
+if [ -z "$DB_VER" ]; then
+       echo "Sorry, I can't seem to locate a bacula database."
+       exit 1
+fi
+
+if [ -n "$DB_VER" ]; then
+
+       if [ "$DB_VER" = "8" ]; then
+               echo "The Catalog is already at version 8. Nothing to do!"
+               exit 0
+       elif [ "$DB_VER" -ne "7" ]; then
+               echo "Sorry, this script is designed to update a version 7 database"
+               echo "and you have a version $DB_VER database."
+               exit 1
+       fi
+fi
+
+
+if $bindir/psql $* -f - <<END_OF_DATA
 \c bacula
 
-ALTER TABLE Media ADD COLUMN EndFile integer not null default 0;
-ALTER TABLE Media ADD COLUMN EndBlock integer not null default 0;
+ALTER TABLE media ADD COLUMN EndFile integer;
+UPDATE media SET EndFile=0;
+ALTER TABLE media ALTER COLUMN EndFile SET NOT NULL;
+ALTER TABLE media ADD COLUMN EndBlock bigint;
+UPDATE media SET EndBlock=0;
+ALTER TABLE media ALTER COLUMN EndBlock SET NOT NULL;
+
+UPDATE Filename SET Name='' WHERE Name=' ';
+
+alter table file alter column filenameid rename to filenameid-old;
+alter table file add column filenameid integer;
+update file set filenameid = filenameid-old;
+alter table file alter column filenameid set not null;
+alter table file drop column filenameid-old;
 
 DELETE FROM Version;
 INSERT INTO Version (VersionId) VALUES (8);
 
-END-OF-DATA
+create index file_jobid_idx on file (jobid);
+create index file_pathid_idx on file(pathid);
+create index file_filenameid_idx on file(filenameid);
+create index file_jpfid_idx on file (jobid, pathid, filenameid);
+
+create table CDImages 
+(
+   MediaId integer not null,
+   LastBurn timestamp without time zone not null,
+   primary key (MediaId)
+);
+
+vacuum;
+
+END_OF_DATA
 then
    echo "Update of Bacula PostgreSQL tables succeeded."
 else