]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl Add database update scripts to updatedb dir
authorEric Bollengier <eric@eb.homelinux.org>
Fri, 20 Feb 2009 10:14:04 +0000 (10:14 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Fri, 20 Feb 2009 10:14:04 +0000 (10:14 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8485 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/autoconf/configure.in
bacula/configure
bacula/technotes-2.5
bacula/updatedb/update_mysql_tables_10_to_11.in
bacula/updatedb/update_mysql_tables_9_to_10.in [new file with mode: 0644]
bacula/updatedb/update_postgresql_tables_10_to_11.in
bacula/updatedb/update_postgresql_tables_9_to_10.in [new file with mode: 0644]
bacula/updatedb/update_sqlite3_tables_10_to_11.in
bacula/updatedb/update_sqlite3_tables_9_to_10.in [new file with mode: 0644]
bacula/updatedb/update_sqlite_tables_10_to_11.in
bacula/updatedb/update_sqlite_tables_9_to_10.in [new file with mode: 0644]

index 14857a46a4468b316cfbf602fbb86e7ce0199e55..586e17825c78b7ea52322f3a4172ec297b402dd0 100644 (file)
@@ -2824,6 +2824,10 @@ AC_OUTPUT([autoconf/Make.common \
           src/plugins/dir/Makefile \
           src/win32/Makefile.inc \
           po/Makefile.in \
+          updatedb/update_mysql_tables_9_to_10 \
+          updatedb/update_sqlite3_tables_9_to_10 \
+          updatedb/update_postgresql_tables_9_to_10 \
+          updatedb/update_sqlite_tables_9_to_10 \
           updatedb/update_mysql_tables_10_to_11 \
           updatedb/update_sqlite3_tables_10_to_11 \
           updatedb/update_postgresql_tables_10_to_11 \
index 135fccb22c4dc666b25a02e30186e372d766addd..40d7e7b3e0e9d36631ab07e0a20d3fbab06e31b9 100755 (executable)
@@ -42113,7 +42113,7 @@ if test "x${subsysdir}" = "x${sbindir}" ; then
    exit 1
 fi
 
-ac_config_files="$ac_config_files autoconf/Make.common Makefile manpages/Makefile scripts/startmysql scripts/stopmysql scripts/btraceback scripts/startit scripts/stopit scripts/bconsole scripts/gconsole scripts/bacula scripts/bacula-ctl-dir scripts/bacula-ctl-fd scripts/bacula-ctl-sd scripts/devel_bacula scripts/Makefile scripts/logrotate scripts/bacula.desktop.gnome1 scripts/bacula.desktop.gnome2 scripts/bacula.desktop.gnome1.consolehelper scripts/bacula.desktop.gnome2.consolehelper scripts/bacula.desktop.gnome1.xsu scripts/bacula.desktop.gnome2.xsu scripts/bgnome-console.console_apps scripts/mtx-changer scripts/disk-changer scripts/dvd-handler scripts/dvd-simulator scripts/bacula-tray-monitor.desktop scripts/logwatch/Makefile scripts/logwatch/logfile.bacula.conf scripts/wxconsole.console_apps scripts/wxconsole.desktop.consolehelper scripts/wxconsole.desktop.xsu scripts/bat.desktop scripts/bat.desktop.xsu scripts/bat.desktop.consolehelper scripts/bat.console_apps src/Makefile src/host.h src/console/Makefile src/console/bconsole.conf src/gnome2-console/Makefile src/gnome2-console/bgnome-console.conf src/qt-console/bat.conf src/qt-console/bat.pro src/qt-console/bat.pro.mingw32 src/qt-console/install_conf_file src/wx-console/Makefile src/wx-console/bwx-console.conf src/tray-monitor/Makefile src/tray-monitor/tray-monitor.conf src/dird/Makefile src/dird/bacula-dir.conf src/lib/Makefile src/stored/Makefile src/stored/bacula-sd.conf src/filed/Makefile src/filed/bacula-fd.conf src/cats/Makefile src/cats/make_catalog_backup src/cats/delete_catalog_backup src/cats/create_postgresql_database src/cats/update_postgresql_tables src/cats/make_postgresql_tables src/cats/grant_postgresql_privileges src/cats/drop_postgresql_tables src/cats/drop_postgresql_database src/cats/create_mysql_database src/cats/update_mysql_tables src/cats/make_mysql_tables src/cats/grant_mysql_privileges src/cats/drop_mysql_tables src/cats/drop_mysql_database src/cats/create_sqlite_database src/cats/update_sqlite_tables src/cats/make_sqlite_tables src/cats/grant_sqlite_privileges src/cats/drop_sqlite_tables src/cats/drop_sqlite_database src/cats/create_sqlite3_database src/cats/update_sqlite3_tables src/cats/make_sqlite3_tables src/cats/grant_sqlite3_privileges src/cats/drop_sqlite3_tables src/cats/drop_sqlite3_database src/cats/sqlite src/cats/mysql src/cats/create_bdb_database src/cats/update_bdb_tables src/cats/make_bdb_tables src/cats/grant_bdb_privileges src/cats/drop_bdb_tables src/cats/drop_bdb_database src/cats/create_bacula_database src/cats/update_bacula_tables src/cats/grant_bacula_privileges src/cats/make_bacula_tables src/cats/drop_bacula_tables src/cats/drop_bacula_database src/findlib/Makefile src/tools/Makefile src/plugins/fd/Makefile src/plugins/sd/Makefile src/plugins/dir/Makefile src/win32/Makefile.inc po/Makefile.in updatedb/update_mysql_tables_10_to_11 updatedb/update_sqlite3_tables_10_to_11 updatedb/update_postgresql_tables_10_to_11 updatedb/update_sqlite_tables_10_to_11 $PFILES"
+ac_config_files="$ac_config_files autoconf/Make.common Makefile manpages/Makefile scripts/startmysql scripts/stopmysql scripts/btraceback scripts/startit scripts/stopit scripts/bconsole scripts/gconsole scripts/bacula scripts/bacula-ctl-dir scripts/bacula-ctl-fd scripts/bacula-ctl-sd scripts/devel_bacula scripts/Makefile scripts/logrotate scripts/bacula.desktop.gnome1 scripts/bacula.desktop.gnome2 scripts/bacula.desktop.gnome1.consolehelper scripts/bacula.desktop.gnome2.consolehelper scripts/bacula.desktop.gnome1.xsu scripts/bacula.desktop.gnome2.xsu scripts/bgnome-console.console_apps scripts/mtx-changer scripts/disk-changer scripts/dvd-handler scripts/dvd-simulator scripts/bacula-tray-monitor.desktop scripts/logwatch/Makefile scripts/logwatch/logfile.bacula.conf scripts/wxconsole.console_apps scripts/wxconsole.desktop.consolehelper scripts/wxconsole.desktop.xsu scripts/bat.desktop scripts/bat.desktop.xsu scripts/bat.desktop.consolehelper scripts/bat.console_apps src/Makefile src/host.h src/console/Makefile src/console/bconsole.conf src/gnome2-console/Makefile src/gnome2-console/bgnome-console.conf src/qt-console/bat.conf src/qt-console/bat.pro src/qt-console/bat.pro.mingw32 src/qt-console/install_conf_file src/wx-console/Makefile src/wx-console/bwx-console.conf src/tray-monitor/Makefile src/tray-monitor/tray-monitor.conf src/dird/Makefile src/dird/bacula-dir.conf src/lib/Makefile src/stored/Makefile src/stored/bacula-sd.conf src/filed/Makefile src/filed/bacula-fd.conf src/cats/Makefile src/cats/make_catalog_backup src/cats/delete_catalog_backup src/cats/create_postgresql_database src/cats/update_postgresql_tables src/cats/make_postgresql_tables src/cats/grant_postgresql_privileges src/cats/drop_postgresql_tables src/cats/drop_postgresql_database src/cats/create_mysql_database src/cats/update_mysql_tables src/cats/make_mysql_tables src/cats/grant_mysql_privileges src/cats/drop_mysql_tables src/cats/drop_mysql_database src/cats/create_sqlite_database src/cats/update_sqlite_tables src/cats/make_sqlite_tables src/cats/grant_sqlite_privileges src/cats/drop_sqlite_tables src/cats/drop_sqlite_database src/cats/create_sqlite3_database src/cats/update_sqlite3_tables src/cats/make_sqlite3_tables src/cats/grant_sqlite3_privileges src/cats/drop_sqlite3_tables src/cats/drop_sqlite3_database src/cats/sqlite src/cats/mysql src/cats/create_bdb_database src/cats/update_bdb_tables src/cats/make_bdb_tables src/cats/grant_bdb_privileges src/cats/drop_bdb_tables src/cats/drop_bdb_database src/cats/create_bacula_database src/cats/update_bacula_tables src/cats/grant_bacula_privileges src/cats/make_bacula_tables src/cats/drop_bacula_tables src/cats/drop_bacula_database src/findlib/Makefile src/tools/Makefile src/plugins/fd/Makefile src/plugins/sd/Makefile src/plugins/dir/Makefile src/win32/Makefile.inc po/Makefile.in updatedb/update_mysql_tables_9_to_10 updatedb/update_sqlite3_tables_9_to_10 updatedb/update_postgresql_tables_9_to_10 updatedb/update_sqlite_tables_9_to_10 updatedb/update_mysql_tables_10_to_11 updatedb/update_sqlite3_tables_10_to_11 updatedb/update_postgresql_tables_10_to_11 updatedb/update_sqlite_tables_10_to_11 $PFILES"
 
 ac_config_commands="$ac_config_commands default"
 
     "src/plugins/dir/Makefile") CONFIG_FILES="$CONFIG_FILES src/plugins/dir/Makefile" ;;
     "src/win32/Makefile.inc") CONFIG_FILES="$CONFIG_FILES src/win32/Makefile.inc" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+    "updatedb/update_mysql_tables_9_to_10") CONFIG_FILES="$CONFIG_FILES updatedb/update_mysql_tables_9_to_10" ;;
+    "updatedb/update_sqlite3_tables_9_to_10") CONFIG_FILES="$CONFIG_FILES updatedb/update_sqlite3_tables_9_to_10" ;;
+    "updatedb/update_postgresql_tables_9_to_10") CONFIG_FILES="$CONFIG_FILES updatedb/update_postgresql_tables_9_to_10" ;;
+    "updatedb/update_sqlite_tables_9_to_10") CONFIG_FILES="$CONFIG_FILES updatedb/update_sqlite_tables_9_to_10" ;;
     "updatedb/update_mysql_tables_10_to_11") CONFIG_FILES="$CONFIG_FILES updatedb/update_mysql_tables_10_to_11" ;;
     "updatedb/update_sqlite3_tables_10_to_11") CONFIG_FILES="$CONFIG_FILES updatedb/update_sqlite3_tables_10_to_11" ;;
     "updatedb/update_postgresql_tables_10_to_11") CONFIG_FILES="$CONFIG_FILES updatedb/update_postgresql_tables_10_to_11" ;;
index 6bd07b42f50afe28d9e71173646e1a08868b0075..aeb921b252024a4b2b6ed2da54ab6c4290bce283 100644 (file)
@@ -25,6 +25,8 @@ filepattern (restore with regex in bsr)
 mixed priorities
 
 General:
+20Feb09
+ebl  Add database update scripts to updatedb dir
 19Feb09
 ebl  Fix #1226 about bconsole segfault when using readline()
 18Feb09
index ce2fd2a62e8827e67205b47fb4fac53653fc3567..e78a13592c49a9369060577fee22ff11a2f365c5 100644 (file)
@@ -1,12 +1,10 @@
 #!/bin/sh
 #
-# Shell script to update MySQL tables from version 1.38 to 2.0 
+# Shell script to update MySQL tables from version 2.0 to 3.0  
 #
 echo " "
-echo "This script will update a Bacula MySQL database from version 9 to 10"
-echo " which is needed to convert from Bacula version 1.38.x to 2.0.x or higher"
-echo "Depending on the size of your database,"
-echo "this script may take several minutes to run."
+echo "This script will update a Bacula MySQL database from version 10 to 11"
+echo " which is needed to convert from Bacula version 2.0.x to 3.0.x or higher"
 echo " "
 bindir=@SQL_BINDIR@
 db_name=@db_name@
@@ -14,59 +12,49 @@ db_name=@db_name@
 if $bindir/mysql $* -f <<END-OF-DATA
 USE ${db_name};
 
-DROP TABLE IF EXISTS MAC;
-DROP TABLE IF EXISTS Log;
-DROP TABLE IF EXISTS Location;
-DROP TABLE IF EXISTS LocationLog;
-
-CREATE TABLE Log (
-   LogId INTEGER UNSIGNED AUTO_INCREMENT,
-   JobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
-   Time DATETIME DEFAULT 0,
-   LogText BLOB NOT NULL,
-   PRIMARY KEY(LogId),
-   INDEX (JobId)
-   );
-
-CREATE TABLE Location (
-   LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Location TINYBLOB NOT NULL,
-   Cost INTEGER DEFAULT 0,
-   Enabled TINYINT,
-   PRIMARY KEY(LocationId)
-   );
-
-CREATE TABLE LocationLog (
-   LocLogId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Date DATETIME DEFAULT 0,
-   Comment BLOB,
-   MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media,
-   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,
-   NewVolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
-    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
-   NewEnabled TINYINT,
-   PRIMARY KEY(LocLogId)
-);
-
-ALTER TABLE Media ADD COLUMN MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType;
-ALTER TABLE Media ADD COLUMN DeviceId INTEGER UNSIGNED DEFAULT 0 REFERENCES Device;
-ALTER TABLE Media ADD COLUMN LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location;
-ALTER TABLE Media ADD COLUMN RecycleCount INTEGER UNSIGNED DEFAULT 0;
-ALTER TABLE Media ADD COLUMN InitialWrite DATETIME DEFAULT 0;
-ALTER TABLE Media ADD COLUMN ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool;
-ALTER TABLE Media ADD COLUMN RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool;
-ALTER TABLE Media ADD COLUMN Enabled TINYINT DEFAULT 1;
-ALTER TABLE Media ADD COLUMN Comment BLOB;
-
-ALTER TABLE JobMedia DROP COLUMN Stripe;
-
-ALTER TABLE Job ADD COLUMN PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job;
-ALTER TABLE Job ADD COLUMN RealEndTime DATETIME DEFAULT 0;
+-- Fix bad index on Media table
+DROP INDEX inx8 ON Media;
+CREATE UNIQUE INDEX inx8 ON Media (VolumeName(128));
+ALTER TABLE File CHANGE FileId FileId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;
+ALTER TABLE BaseFiles CHANGE FileId FileId BIGINT UNSIGNED NOT NULL;
+ALTER TABLE Job ADD ReadBytes BIGINT UNSIGNED DEFAULT 0 AFTER JobBytes; 
+ALTER TABLE Media ADD ActionOnPurge TINYINT DEFAULT 0 AFTER Recycle;
+ALTER TABLE Pool ADD ActionOnPurge TINYINT DEFAULT 0 AFTER Recycle;
 
+DELETE FROM Version;
+INSERT INTO Version (VersionId) VALUES (11);
 
+-- If you have already this table, you can remove it with:
+-- DROP TABLE JobHistory;
 
-DELETE FROM Version;
-INSERT INTO Version (VersionId) VALUES (10);
+-- Create a table like Job for long term statistics
+CREATE TABLE JobHisto (
+   JobId INTEGER UNSIGNED NOT NULL,
+   Job TINYBLOB NOT NULL,
+   Name TINYBLOB NOT NULL,
+   Type BINARY(1) NOT NULL,
+   Level BINARY(1) NOT NULL,
+   ClientId INTEGER DEFAULT 0,
+   JobStatus BINARY(1) NOT NULL,
+   SchedTime DATETIME DEFAULT 0,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+   PoolId INTEGER UNSIGNED DEFAULT 0,
+   FileSetId INTEGER UNSIGNED DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0,
+   INDEX (StartTime)
+   );
 
 END-OF-DATA
 then
diff --git a/bacula/updatedb/update_mysql_tables_9_to_10.in b/bacula/updatedb/update_mysql_tables_9_to_10.in
new file mode 100644 (file)
index 0000000..ce2fd2a
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/sh
+#
+# Shell script to update MySQL tables from version 1.38 to 2.0 
+#
+echo " "
+echo "This script will update a Bacula MySQL database from version 9 to 10"
+echo " which is needed to convert from Bacula version 1.38.x to 2.0.x or higher"
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+bindir=@SQL_BINDIR@
+db_name=@db_name@
+
+if $bindir/mysql $* -f <<END-OF-DATA
+USE ${db_name};
+
+DROP TABLE IF EXISTS MAC;
+DROP TABLE IF EXISTS Log;
+DROP TABLE IF EXISTS Location;
+DROP TABLE IF EXISTS LocationLog;
+
+CREATE TABLE Log (
+   LogId INTEGER UNSIGNED AUTO_INCREMENT,
+   JobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
+   Time DATETIME DEFAULT 0,
+   LogText BLOB NOT NULL,
+   PRIMARY KEY(LogId),
+   INDEX (JobId)
+   );
+
+CREATE TABLE Location (
+   LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Location TINYBLOB NOT NULL,
+   Cost INTEGER DEFAULT 0,
+   Enabled TINYINT,
+   PRIMARY KEY(LocationId)
+   );
+
+CREATE TABLE LocationLog (
+   LocLogId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Date DATETIME DEFAULT 0,
+   Comment BLOB,
+   MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media,
+   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,
+   NewVolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
+    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
+   NewEnabled TINYINT,
+   PRIMARY KEY(LocLogId)
+);
+
+ALTER TABLE Media ADD COLUMN MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType;
+ALTER TABLE Media ADD COLUMN DeviceId INTEGER UNSIGNED DEFAULT 0 REFERENCES Device;
+ALTER TABLE Media ADD COLUMN LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location;
+ALTER TABLE Media ADD COLUMN RecycleCount INTEGER UNSIGNED DEFAULT 0;
+ALTER TABLE Media ADD COLUMN InitialWrite DATETIME DEFAULT 0;
+ALTER TABLE Media ADD COLUMN ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool;
+ALTER TABLE Media ADD COLUMN RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool;
+ALTER TABLE Media ADD COLUMN Enabled TINYINT DEFAULT 1;
+ALTER TABLE Media ADD COLUMN Comment BLOB;
+
+ALTER TABLE JobMedia DROP COLUMN Stripe;
+
+ALTER TABLE Job ADD COLUMN PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job;
+ALTER TABLE Job ADD COLUMN RealEndTime DATETIME DEFAULT 0;
+
+
+
+DELETE FROM Version;
+INSERT INTO Version (VersionId) VALUES (10);
+
+END-OF-DATA
+then
+   echo "Update of Bacula MySQL tables succeeded."
+else
+   echo "Update of Bacula MySQL tables failed."
+fi
+exit 0
index 97ecee2650bce3c55cffc0729fd966a21441b8a1..87381c29f26cc4cd42466460b1c7f05c5b61134c 100644 (file)
@@ -1,80 +1,38 @@
 #!/bin/sh
 #
-# Shell script to update PostgreSQL tables from version 1.38 to 2.0.0 or higher
+# Shell script to update PostgreSQL tables from version 2.0.0 to 3.0.0 or higher
 #
 echo " "
-echo "This script will update a Bacula PostgreSQL database from version 9 to 10"
-echo " which is needed to convert from Bacula version 1.38.x to 2.0.0 or higher"
-echo "Depending on the size of your database,"
-echo "this script may take several minutes to run."
+echo "This script will update a Bacula PostgreSQL database from version 10 to 11"
+echo " which is needed to convert from Bacula version 2.0.0 to 3.0.x or higher"
 echo " "
 bindir=@SQL_BINDIR@
 db_name=@db_name@
 
 if $bindir/psql -f - -d ${db_name} $* <<END-OF-DATA
 
-ALTER TABLE media ADD COLUMN DeviceId integer;
-UPDATE media SET DeviceId=0;
-ALTER TABLE media ADD COLUMN MediaTypeId integer;
-UPDATE media SET MediaTypeId=0;
-ALTER TABLE media ADD COLUMN LocationId integer;
-UPDATE media SET LocationId=0;
-ALTER TABLE media ADD COLUMN RecycleCount integer;
-UPDATE media SET RecycleCount=0;
-ALTER TABLE media ADD COLUMN InitialWrite timestamp without time zone;
-ALTER TABLE media ADD COLUMN scratchpoolid integer;
-UPDATE media SET scratchpoolid=0;
-ALTER TABLE media ADD COLUMN recyclepoolid integer;
-UPDATE media SET recyclepoolid=0;
-ALTER TABLE media ADD COLUMN enabled integer;
-UPDATE media SET enabled=1;
-ALTER TABLE media ADD COLUMN Comment TEXT;
+-- The alter table operation can be faster with a big maintenance_work_mem
+-- Uncomment and adapt this value to your environment
+-- SET maintenance_work_mem = '1GB';
 
-ALTER TABLE job ADD COLUMN RealEndTime timestamp without time zone;
-ALTER TABLE job ADD COLUMN PriorJobId integer;
-UPDATE job SET PriorJobId=0;
+BEGIN;
+ALTER TABLE file ALTER fileid TYPE bigint ;
+ALTER TABLE basefiles ALTER fileid TYPE bigint;
+ALTER TABLE job ADD COLUMN readbytes bigint default 0;
+ALTER TABLE media ADD COLUMN ActionOnPurge smallint default 0;
+ALTER TABLE pool ADD COLUMN ActionOnPurge smallint default 0;
 
-ALTER TABLE jobmedia DROP COLUMN Stripe;
+-- Create a table like Job for long term statistics
+CREATE TABLE JobHisto (LIKE Job);
+CREATE INDEX jobhisto_idx ON JobHisto ( starttime );
 
-CREATE TABLE Location (
-   LocationId SERIAL NOT NULL,
-   Location TEXT NOT NULL,
-   Cost integer default 0,
-   Enabled integer,
-   PRIMARY KEY (LocationId)
-);
+UPDATE Version SET VersionId=11;
+COMMIT;
 
-CREATE TABLE LocationLog (
-   LocLogId SERIAL NOT NULL,
-   Date timestamp   without time zone,
-   Comment TEXT NOT NULL,
-   MediaId INTEGER DEFAULT 0,
-   LocationId INTEGER DEFAULT 0,
-   newvolstatus text not null
-       check (newvolstatus in ('Full','Archive','Append',
-             'Recycle','Purged','Read-Only','Disabled',
-             'Error','Busy','Used','Cleaning','Scratch')),
-   newenabled smallint,
-   PRIMARY KEY(LocLogId)
-);
-
-
-CREATE TABLE Log
-(
-    LogId            serial      not null,
-    JobId            integer     not null,
-    Time             timestamp   without time zone,
-    LogText          text        not null,
-    primary key (LogId)
-);
-create index log_name_idx on Log (JobId);
-
-
-DELETE FROM version;
-INSERT INTO version (versionId) VALUES (10);
-
-vacuum;
+-- If you have already this table, you can remove it with:
+-- DROP TABLE JobHistory;
 
+-- vacuum analyse;
 END-OF-DATA
 then
    echo "Update of Bacula PostgreSQL tables succeeded."
diff --git a/bacula/updatedb/update_postgresql_tables_9_to_10.in b/bacula/updatedb/update_postgresql_tables_9_to_10.in
new file mode 100644 (file)
index 0000000..97ecee2
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/sh
+#
+# Shell script to update PostgreSQL tables from version 1.38 to 2.0.0 or higher
+#
+echo " "
+echo "This script will update a Bacula PostgreSQL database from version 9 to 10"
+echo " which is needed to convert from Bacula version 1.38.x to 2.0.0 or higher"
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+bindir=@SQL_BINDIR@
+db_name=@db_name@
+
+if $bindir/psql -f - -d ${db_name} $* <<END-OF-DATA
+
+ALTER TABLE media ADD COLUMN DeviceId integer;
+UPDATE media SET DeviceId=0;
+ALTER TABLE media ADD COLUMN MediaTypeId integer;
+UPDATE media SET MediaTypeId=0;
+ALTER TABLE media ADD COLUMN LocationId integer;
+UPDATE media SET LocationId=0;
+ALTER TABLE media ADD COLUMN RecycleCount integer;
+UPDATE media SET RecycleCount=0;
+ALTER TABLE media ADD COLUMN InitialWrite timestamp without time zone;
+ALTER TABLE media ADD COLUMN scratchpoolid integer;
+UPDATE media SET scratchpoolid=0;
+ALTER TABLE media ADD COLUMN recyclepoolid integer;
+UPDATE media SET recyclepoolid=0;
+ALTER TABLE media ADD COLUMN enabled integer;
+UPDATE media SET enabled=1;
+ALTER TABLE media ADD COLUMN Comment TEXT;
+
+ALTER TABLE job ADD COLUMN RealEndTime timestamp without time zone;
+ALTER TABLE job ADD COLUMN PriorJobId integer;
+UPDATE job SET PriorJobId=0;
+
+ALTER TABLE jobmedia DROP COLUMN Stripe;
+
+CREATE TABLE Location (
+   LocationId SERIAL NOT NULL,
+   Location TEXT NOT NULL,
+   Cost integer default 0,
+   Enabled integer,
+   PRIMARY KEY (LocationId)
+);
+
+CREATE TABLE LocationLog (
+   LocLogId SERIAL NOT NULL,
+   Date timestamp   without time zone,
+   Comment TEXT NOT NULL,
+   MediaId INTEGER DEFAULT 0,
+   LocationId INTEGER DEFAULT 0,
+   newvolstatus text not null
+       check (newvolstatus in ('Full','Archive','Append',
+             'Recycle','Purged','Read-Only','Disabled',
+             'Error','Busy','Used','Cleaning','Scratch')),
+   newenabled smallint,
+   PRIMARY KEY(LocLogId)
+);
+
+
+CREATE TABLE Log
+(
+    LogId            serial      not null,
+    JobId            integer     not null,
+    Time             timestamp   without time zone,
+    LogText          text        not null,
+    primary key (LogId)
+);
+create index log_name_idx on Log (JobId);
+
+
+DELETE FROM version;
+INSERT INTO version (versionId) VALUES (10);
+
+vacuum;
+
+END-OF-DATA
+then
+   echo "Update of Bacula PostgreSQL tables succeeded."
+else
+   echo "Update of Bacula PostgreSQL tables failed."
+fi
+exit 0
index 852859554a48b8ad305854162a82a0d02aed9080..54a407d26f307bbf2c02f09e2f1f155cc57ba9ae 100644 (file)
@@ -1,10 +1,10 @@
 #!/bin/sh
 #
-# shell script to update SQLite from version 1.38 to 2.0
+# shell script to update SQLite from version 2.0 to 3.0
 #
 echo " "
-echo "This script will update a Bacula SQLite database from version 9 to 10"
-echo " which is needed to convert from Bacula version 1.38.x to 2.0.x or higher"
+echo "This script will update a Bacula SQLite database from version 10 to 11"
+echo " which is needed to convert from Bacula version 2.0.x to 3.0.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
@@ -15,65 +15,108 @@ sqlite=@DB_TYPE@
 db_name=@db_name@
 
 ${bindir}/${sqlite} $* ${db_name}.db <<END-OF-DATA
+-- Can be replaced by 
+-- ALTER TABLE Job ADD COLUMN (ReadBytes BIGINT UNSIGNED DEFAULT 0);
+
 BEGIN TRANSACTION;
+CREATE TEMPORARY TABLE job_backup AS SELECT * FROM Job;
+DROP TABLE Job;
 
-CREATE TEMPORARY TABLE Media_backup (
-   MediaId INTEGER UNSIGNED AUTOINCREMENT,
-   VolumeName VARCHAR(128) NOT NULL,
-   Slot INTEGER DEFAULT 0,
+CREATE TABLE Job
+(
+   JobId INTEGER,
+   Job VARCHAR(128) NOT NULL,
+   Name VARCHAR(128) NOT NULL,
+   Type CHAR NOT NULL,
+   Level CHAR NOT NULL,
+   ClientId INTEGER REFERENCES Client DEFAULT 0,
+   JobStatus CHAR NOT NULL,
+   SchedTime DATETIME NOT NULL,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
    PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   MediaType VARCHAR(128) NOT NULL,
-   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
-   LabelType TINYINT DEFAULT 0,
-   FirstWritten DATETIME DEFAULT 0,
-   LastWritten DATETIME DEFAULT 0,
-   LabelDate DATETIME DEFAULT 0,
-   VolJobs INTEGER UNSIGNED DEFAULT 0,
-   VolFiles INTEGER UNSIGNED DEFAULT 0,
-   VolBlocks INTEGER UNSIGNED DEFAULT 0,
-   VolMounts INTEGER UNSIGNED DEFAULT 0,
-   VolBytes BIGINT UNSIGNED DEFAULT 0,
-   VolParts INTEGER UNSIGNED DEFAULT 0,
-   VolErrors INTEGER UNSIGNED DEFAULT 0,
-   VolWrites INTEGER UNSIGNED DEFAULT 0,
-   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
-   VolStatus VARCHAR(20) NOT NULL,
-   Enabled TINYINT DEFAULT 1,
-   Recycle TINYINT DEFAULT 0,
+   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0,
+   PRIMARY KEY(JobId)
+   );
+CREATE INDEX inx6 ON Job (Name);
+
+INSERT INTO Job (JobId, Job, Name, Type, Level, ClientId, JobStatus,
+SchedTime, StartTime, EndTime, RealEndTime, JobTDate, VolSessionId,
+VolSessionTime, JobFiles, JobBytes, JobErrors, JobMissingFiles,
+PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase) SELECT
+JobId, Job, Name, Type, Level, ClientId, JobStatus, SchedTime, StartTime,
+EndTime, RealEndTime, JobTDate, VolSessionId, VolSessionTime, JobFiles,
+JobBytes, JobErrors, JobMissingFiles, PoolId, FileSetId, PriorJobId,
+PurgedFiles, HasBase FROM Job_backup;
+
+DROP TABLE Job_backup;
+
+
+-- ----------------------------------------------------------------
+-- New ActionOnPurge field
+
+CREATE TEMPORARY TABLE pool_backup AS SELECT * FROM Pool;
+DROP TABLE Pool;
+
+CREATE TABLE Pool (
+   PoolId INTEGER,
+   Name VARCHAR(128) NOT NULL,
+   NumVols INTEGER UNSIGNED DEFAULT 0,
+   MaxVols INTEGER UNSIGNED DEFAULT 0,
+   UseOnce TINYINT DEFAULT 0,
+   UseCatalog TINYINT DEFAULT 1,
+   AcceptAnyVolume TINYINT DEFAULT 0,
    VolRetention BIGINT UNSIGNED DEFAULT 0,
    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
-   InChanger TINYINT DEFAULT 0,
-   StorageId INTEGER UNSIGNED REFERENCES Storage,
-   DeviceId INTEGER UNSIGNED REFERENCES Device,
-   MediaAddressing TINYINT DEFAULT 0,
-   VolReadTime BIGINT UNSIGNED DEFAULT 0,
-   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
-   EndFile INTEGER UNSIGNED DEFAULT 0,
-   EndBlock INTEGER UNSIGNED DEFAULT 0,
-   LocationId INTEGER UNSIGNED REFERENCES Location,
-   RecycleCount INTEGER UNSIGNED DEFAULT 0,
-   InitialWrite DATETIME DEFAULT 0,
+   AutoPrune TINYINT DEFAULT 0,
+   Recycle TINYINT DEFAULT 0,
+   ActionOnPurge     TINYINT    DEFAULT 0,
+   PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
+   LabelFormat VARCHAR(128) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   PRIMARY KEY(MediaId)
+   NextPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,
+   MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,
+   MigrationTime BIGINT UNSIGNED DEFAULT 0,
+   UNIQUE (Name),
+   PRIMARY KEY (PoolId)
    );
 
-INSERT INTO Media_backup SELECT 
-   MediaId, VolumeName, Slot, PoolId,
-   MediaType, LabelType, 0, FirstWritten, LastWritten,
-   LabelDate, VolJobs, VolFiles, VolBlocks,
-   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
-   VolCapacityBytes, VolStatus, 1, Recycle,
-   VolRetention, VolUseDuration, MaxVolJobs,
-   MaxVolFiles, MaxVolBytes, InChanger, 
-   StorageId, 0, MediaAddressing,
-   VolReadTime, VolWriteTime, EndFile, EndBlock, 0, 0, 0, 0, 0
-   FROM Media;
+INSERT INTO Pool (PoolId, Name, NumVols, MaxVols, UseOnce, UseCatalog,
+AcceptAnyVolume, VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles,
+MaxVolBytes, AutoPrune, Recycle, PoolType, LabelType,
+LabelFormat, Enabled, ScratchPoolId, RecyclePoolId, NextPoolId,
+MigrationHighBytes, MigrationLowBytes, MigrationTime) 
+SELECT PoolId, Name, NumVols, MaxVols, UseOnce, UseCatalog, AcceptAnyVolume,
+VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles, MaxVolBytes, AutoPrune,
+Recycle, PoolType, LabelType, LabelFormat, Enabled,
+ScratchPoolId, RecyclePoolId, NextPoolId, MigrationHighBytes,
+MigrationLowBytes, MigrationTime FROM pool_backup;
+
+DROP TABLE pool_backup;
 
+-- ----------------------------------------------------------------
+-- New ActionOnPurge field
 
+CREATE TEMPORARY TABLE media_backup AS SELECT * FROM Media;
 DROP TABLE Media;
 
 CREATE TABLE Media (
@@ -99,6 +142,7 @@ CREATE TABLE Media (
    VolStatus VARCHAR(20) NOT NULL,
    Enabled TINYINT DEFAULT 1,
    Recycle TINYINT DEFAULT 0,
+   ActionOnPurge     TINYINT    DEFAULT 0,
    VolRetention BIGINT UNSIGNED DEFAULT 0,
    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
@@ -121,63 +165,38 @@ CREATE TABLE Media (
    PRIMARY KEY(MediaId)
    );
 
+CREATE INDEX inx8 ON Media (PoolId);
+
 INSERT INTO Media (
-   MediaId, VolumeName, Slot, PoolId,
-   MediaType, MediaTypeId, LabelType, FirstWritten, LastWritten,
-   LabelDate, VolJobs, VolFiles, VolBlocks,
-   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
-   VolCapacityBytes, VolStatus, Enabled, Recycle,
+   MediaId, VolumeName, Slot, PoolId, MediaType, MediaTypeId,
+   LabelType, FirstWritten, LastWritten, LabelDate, VolJobs,
+   VolFiles, VolBlocks, VolMounts, VolBytes, VolParts, VolErrors,
+   VolWrites, VolCapacityBytes, VolStatus, Enabled, Recycle,
    VolRetention, VolUseDuration, MaxVolJobs,
-   MaxVolFiles, MaxVolBytes,
-   InChanger, StorageId, DeviceId, MediaAddressing,
-   VolReadTime, VolWriteTime,      
-   EndFile, EndBlock, LocationId, RecycleCount, InitialWrite,    
-   ScratchPoolId, RecyclePoolId)
-   SELECT * FROM Media_backup;
-
-
-DROP TABLE Media_backup;
-CREATE INDEX inx8 ON Media (PoolId);
+   MaxVolFiles, MaxVolBytes, InChanger, StorageId, DeviceId,
+   MediaAddressing, VolReadTime, VolWriteTime, EndFile, EndBlock,
+   LocationId, RecycleCount, InitialWrite, ScratchPoolId,
+   RecyclePoolId, Comment)
+SELECT MediaId, VolumeName, Slot, PoolId, MediaType, MediaTypeId,
+   LabelType, FirstWritten, LastWritten, LabelDate, VolJobs,
+   VolFiles, VolBlocks, VolMounts, VolBytes, VolParts, VolErrors,
+   VolWrites, VolCapacityBytes, VolStatus, Enabled, Recycle,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, InChanger, StorageId, DeviceId,
+   MediaAddressing, VolReadTime, VolWriteTime, EndFile, EndBlock,
+   LocationId, RecycleCount, InitialWrite, ScratchPoolId,
+   RecyclePoolId, Comment FROM media_backup;
 
-CREATE TEMPORARY TABLE job_backup
-(
-   JobId INTEGER,
-   Job VARCHAR(128) NOT NULL,
-   Name VARCHAR(128) NOT NULL,
-   Type CHAR NOT NULL,
-   Level CHAR NOT NULL,
-   ClientId INTEGER REFERENCES Client DEFAULT 0,
-   JobStatus CHAR NOT NULL,
-   SchedTime DATETIME NOT NULL,
-   StartTime DATETIME DEFAULT 0,
-   EndTime DATETIME DEFAULT 0,
-   RealEndTime DATETIME DEFAULT 0,
-   JobTDate BIGINT UNSIGNED DEFAULT 0,
-   VolSessionId INTEGER UNSIGNED DEFAULT 0,
-   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
-   JobFiles INTEGER UNSIGNED DEFAULT 0,
-   JobBytes BIGINT UNSIGNED DEFAULT 0,
-   JobErrors INTEGER UNSIGNED DEFAULT 0,
-   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
-   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
-   PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0 
-   );
+DROP TABLE media_backup;
 
-INSERT INTO Job_backup SELECT 
-   JobId, Job, Name, Type, Level, ClientId, JobStatus,
-   SchedTime, StartTime, EndTime, 0,
-   JobTDate, VolSessionId, VolSessionTime, 
-   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
-   PoolId, FileSetId, 0, PurgedFiles, HasBase
-   FROM Job;
+UPDATE Version SET VersionId=11;
+COMMIT;
 
-DROP TABLE Job;
+-- If you have already this table, you can remove it with:
+-- DROP TABLE JobHistory;
 
-CREATE TABLE Job
-(
+-- Create a table like Job for long term statistics
+CREATE TABLE JobHisto (
    JobId INTEGER,
    Job VARCHAR(128) NOT NULL,
    Name VARCHAR(128) NOT NULL,
@@ -194,59 +213,15 @@ CREATE TABLE Job
    VolSessionTime INTEGER UNSIGNED DEFAULT 0,
    JobFiles INTEGER UNSIGNED DEFAULT 0,
    JobBytes BIGINT UNSIGNED DEFAULT 0,
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,
    JobErrors INTEGER UNSIGNED DEFAULT 0,
    JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
    PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
    PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
    PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0,
-   PRIMARY KEY(JobId)
-   );
-CREATE INDEX inx6 ON Job (Name);
-
-INSERT INTO Job (
-   JobId, Job, Name, Type, Level, ClientId, JobStatus,
-   SchedTime, StartTime, EndTime, RealEndTime,
-   JobTDate, VolSessionId, VolSessionTime, 
-   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
-   PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase)
-   SELECT * FROM Job_backup;
-
-DROP TABLE Job_backup;
-
-CREATE TABLE LocationLog (
-   LocLogId INTEGER,
-   Date DATETIME NOT NULL,
-   Comment TEXT NOT NULL,
-   MediaId INTEGER UNSIGNED REFERENCES Media DEFAULT 0,
-   LocationId INTEGER UNSIGNED REFERENCES LocationId DEFAULT 0,
-   NewVolStatus VARCHAR(20) NOT NULL,
-   NewEnabled TINYINT NOT NULL,
-   PRIMARY KEY(LocLogId)
-);
-
-CREATE TABLE Log (
-   LogId INTEGER,
-   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   Time DATETIME NOT NULL,
-   LogText TEXT NOT NULL,
-   PRIMARY KEY(LogId) 
-   );
-CREATE INDEX LogInx1 ON File (JobId);
-
-CREATE TABLE Location (
-   LocationId INTEGER,
-   Location TEXT NOT NULL,
-   Cost INTEGER DEFAULT 0,
-   Enabled TINYINT,
-   PRIMARY KEY(LocationId)
+   HasBase TINYINT DEFAULT 0
    );
-
-DELETE FROM Version;
-INSERT INTO Version (VersionId) VALUES (10);
-
-COMMIT;
+CREATE INDEX inx61 ON JobHisto (StartTime);
 
 END-OF-DATA
diff --git a/bacula/updatedb/update_sqlite3_tables_9_to_10.in b/bacula/updatedb/update_sqlite3_tables_9_to_10.in
new file mode 100644 (file)
index 0000000..8528595
--- /dev/null
@@ -0,0 +1,252 @@
+#!/bin/sh
+#
+# shell script to update SQLite from version 1.38 to 2.0
+#
+echo " "
+echo "This script will update a Bacula SQLite database from version 9 to 10"
+echo " which is needed to convert from Bacula version 1.38.x to 2.0.x or higher"
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+
+bindir=@SQL_BINDIR@
+cd @working_dir@
+sqlite=@DB_TYPE@
+db_name=@db_name@
+
+${bindir}/${sqlite} $* ${db_name}.db <<END-OF-DATA
+BEGIN TRANSACTION;
+
+CREATE TEMPORARY TABLE Media_backup (
+   MediaId INTEGER UNSIGNED AUTOINCREMENT,
+   VolumeName VARCHAR(128) NOT NULL,
+   Slot INTEGER DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   MediaType VARCHAR(128) NOT NULL,
+   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
+   LabelType TINYINT DEFAULT 0,
+   FirstWritten DATETIME DEFAULT 0,
+   LastWritten DATETIME DEFAULT 0,
+   LabelDate DATETIME DEFAULT 0,
+   VolJobs INTEGER UNSIGNED DEFAULT 0,
+   VolFiles INTEGER UNSIGNED DEFAULT 0,
+   VolBlocks INTEGER UNSIGNED DEFAULT 0,
+   VolMounts INTEGER UNSIGNED DEFAULT 0,
+   VolBytes BIGINT UNSIGNED DEFAULT 0,
+   VolParts INTEGER UNSIGNED DEFAULT 0,
+   VolErrors INTEGER UNSIGNED DEFAULT 0,
+   VolWrites INTEGER UNSIGNED DEFAULT 0,
+   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
+   VolStatus VARCHAR(20) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   Recycle TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   InChanger TINYINT DEFAULT 0,
+   StorageId INTEGER UNSIGNED REFERENCES Storage,
+   DeviceId INTEGER UNSIGNED REFERENCES Device,
+   MediaAddressing TINYINT DEFAULT 0,
+   VolReadTime BIGINT UNSIGNED DEFAULT 0,
+   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
+   EndFile INTEGER UNSIGNED DEFAULT 0,
+   EndBlock INTEGER UNSIGNED DEFAULT 0,
+   LocationId INTEGER UNSIGNED REFERENCES Location,
+   RecycleCount INTEGER UNSIGNED DEFAULT 0,
+   InitialWrite DATETIME DEFAULT 0,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   PRIMARY KEY(MediaId)
+   );
+
+INSERT INTO Media_backup SELECT 
+   MediaId, VolumeName, Slot, PoolId,
+   MediaType, LabelType, 0, FirstWritten, LastWritten,
+   LabelDate, VolJobs, VolFiles, VolBlocks,
+   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
+   VolCapacityBytes, VolStatus, 1, Recycle,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, InChanger, 
+   StorageId, 0, MediaAddressing,
+   VolReadTime, VolWriteTime, EndFile, EndBlock, 0, 0, 0, 0, 0
+   FROM Media;
+
+
+DROP TABLE Media;
+
+CREATE TABLE Media (
+   MediaId INTEGER,
+   VolumeName VARCHAR(128) NOT NULL,
+   Slot INTEGER DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   MediaType VARCHAR(128) NOT NULL,
+   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
+   LabelType TINYINT DEFAULT 0,
+   FirstWritten DATETIME DEFAULT 0,
+   LastWritten DATETIME DEFAULT 0,
+   LabelDate DATETIME DEFAULT 0,
+   VolJobs INTEGER UNSIGNED DEFAULT 0,
+   VolFiles INTEGER UNSIGNED DEFAULT 0,
+   VolBlocks INTEGER UNSIGNED DEFAULT 0,
+   VolMounts INTEGER UNSIGNED DEFAULT 0,
+   VolBytes BIGINT UNSIGNED DEFAULT 0,
+   VolParts INTEGER UNSIGNED DEFAULT 0,
+   VolErrors INTEGER UNSIGNED DEFAULT 0,
+   VolWrites INTEGER UNSIGNED DEFAULT 0,
+   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
+   VolStatus VARCHAR(20) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   Recycle TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   InChanger TINYINT DEFAULT 0,
+   StorageId INTEGER UNSIGNED REFERENCES Storage DEFAULT 0,
+   DeviceId INTEGER UNSIGNED REFERENCES Device DEFAULT 0,
+   MediaAddressing TINYINT DEFAULT 0,
+   VolReadTime BIGINT UNSIGNED DEFAULT 0,
+   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
+   EndFile INTEGER UNSIGNED DEFAULT 0,
+   EndBlock INTEGER UNSIGNED DEFAULT 0,
+   LocationId INTEGER UNSIGNED REFERENCES Location DEFAULT 0,
+   RecycleCount INTEGER UNSIGNED DEFAULT 0,
+   InitialWrite DATETIME DEFAULT 0,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   Comment TEXT,
+   PRIMARY KEY(MediaId)
+   );
+
+INSERT INTO Media (
+   MediaId, VolumeName, Slot, PoolId,
+   MediaType, MediaTypeId, LabelType, FirstWritten, LastWritten,
+   LabelDate, VolJobs, VolFiles, VolBlocks,
+   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
+   VolCapacityBytes, VolStatus, Enabled, Recycle,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes,
+   InChanger, StorageId, DeviceId, MediaAddressing,
+   VolReadTime, VolWriteTime,      
+   EndFile, EndBlock, LocationId, RecycleCount, InitialWrite,    
+   ScratchPoolId, RecyclePoolId)
+   SELECT * FROM Media_backup;
+
+
+DROP TABLE Media_backup;
+CREATE INDEX inx8 ON Media (PoolId);
+
+CREATE TEMPORARY TABLE job_backup
+(
+   JobId INTEGER,
+   Job VARCHAR(128) NOT NULL,
+   Name VARCHAR(128) NOT NULL,
+   Type CHAR NOT NULL,
+   Level CHAR NOT NULL,
+   ClientId INTEGER REFERENCES Client DEFAULT 0,
+   JobStatus CHAR NOT NULL,
+   SchedTime DATETIME NOT NULL,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0 
+   );
+
+INSERT INTO Job_backup SELECT 
+   JobId, Job, Name, Type, Level, ClientId, JobStatus,
+   SchedTime, StartTime, EndTime, 0,
+   JobTDate, VolSessionId, VolSessionTime, 
+   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
+   PoolId, FileSetId, 0, PurgedFiles, HasBase
+   FROM Job;
+
+DROP TABLE Job;
+
+CREATE TABLE Job
+(
+   JobId INTEGER,
+   Job VARCHAR(128) NOT NULL,
+   Name VARCHAR(128) NOT NULL,
+   Type CHAR NOT NULL,
+   Level CHAR NOT NULL,
+   ClientId INTEGER REFERENCES Client DEFAULT 0,
+   JobStatus CHAR NOT NULL,
+   SchedTime DATETIME NOT NULL,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0,
+   PRIMARY KEY(JobId)
+   );
+CREATE INDEX inx6 ON Job (Name);
+
+INSERT INTO Job (
+   JobId, Job, Name, Type, Level, ClientId, JobStatus,
+   SchedTime, StartTime, EndTime, RealEndTime,
+   JobTDate, VolSessionId, VolSessionTime, 
+   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
+   PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase)
+   SELECT * FROM Job_backup;
+
+DROP TABLE Job_backup;
+
+CREATE TABLE LocationLog (
+   LocLogId INTEGER,
+   Date DATETIME NOT NULL,
+   Comment TEXT NOT NULL,
+   MediaId INTEGER UNSIGNED REFERENCES Media DEFAULT 0,
+   LocationId INTEGER UNSIGNED REFERENCES LocationId DEFAULT 0,
+   NewVolStatus VARCHAR(20) NOT NULL,
+   NewEnabled TINYINT NOT NULL,
+   PRIMARY KEY(LocLogId)
+);
+
+CREATE TABLE Log (
+   LogId INTEGER,
+   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
+   Time DATETIME NOT NULL,
+   LogText TEXT NOT NULL,
+   PRIMARY KEY(LogId) 
+   );
+CREATE INDEX LogInx1 ON File (JobId);
+
+CREATE TABLE Location (
+   LocationId INTEGER,
+   Location TEXT NOT NULL,
+   Cost INTEGER DEFAULT 0,
+   Enabled TINYINT,
+   PRIMARY KEY(LocationId)
+   );
+
+DELETE FROM Version;
+INSERT INTO Version (VersionId) VALUES (10);
+
+COMMIT;
+
+END-OF-DATA
index 852859554a48b8ad305854162a82a0d02aed9080..10a88753a49e12c9e0e60d4b4d83431c9cd24599 100644 (file)
@@ -1,10 +1,10 @@
 #!/bin/sh
 #
-# shell script to update SQLite from version 1.38 to 2.0
+# shell script to update SQLite from version 2.0 to 3.0
 #
 echo " "
-echo "This script will update a Bacula SQLite database from version 9 to 10"
-echo " which is needed to convert from Bacula version 1.38.x to 2.0.x or higher"
+echo "This script will update a Bacula SQLite database from version 10 to 11"
+echo " which is needed to convert from Bacula version 2.0.x to 3.0.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
@@ -17,63 +17,103 @@ db_name=@db_name@
 ${bindir}/${sqlite} $* ${db_name}.db <<END-OF-DATA
 BEGIN TRANSACTION;
 
-CREATE TEMPORARY TABLE Media_backup (
-   MediaId INTEGER UNSIGNED AUTOINCREMENT,
-   VolumeName VARCHAR(128) NOT NULL,
-   Slot INTEGER DEFAULT 0,
+CREATE TEMPORARY TABLE job_backup AS SELECT * FROM Job;
+DROP TABLE Job;
+
+CREATE TABLE Job
+(
+   JobId INTEGER,
+   Job VARCHAR(128) NOT NULL,
+   Name VARCHAR(128) NOT NULL,
+   Type CHAR NOT NULL,
+   Level CHAR NOT NULL,
+   ClientId INTEGER REFERENCES Client DEFAULT 0,
+   JobStatus CHAR NOT NULL,
+   SchedTime DATETIME NOT NULL,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
    PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   MediaType VARCHAR(128) NOT NULL,
-   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
-   LabelType TINYINT DEFAULT 0,
-   FirstWritten DATETIME DEFAULT 0,
-   LastWritten DATETIME DEFAULT 0,
-   LabelDate DATETIME DEFAULT 0,
-   VolJobs INTEGER UNSIGNED DEFAULT 0,
-   VolFiles INTEGER UNSIGNED DEFAULT 0,
-   VolBlocks INTEGER UNSIGNED DEFAULT 0,
-   VolMounts INTEGER UNSIGNED DEFAULT 0,
-   VolBytes BIGINT UNSIGNED DEFAULT 0,
-   VolParts INTEGER UNSIGNED DEFAULT 0,
-   VolErrors INTEGER UNSIGNED DEFAULT 0,
-   VolWrites INTEGER UNSIGNED DEFAULT 0,
-   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
-   VolStatus VARCHAR(20) NOT NULL,
-   Enabled TINYINT DEFAULT 1,
-   Recycle TINYINT DEFAULT 0,
+   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0,
+   PRIMARY KEY(JobId)
+   );
+CREATE INDEX inx6 ON Job (Name);
+
+INSERT INTO Job (JobId, Job, Name, Type, Level, ClientId, JobStatus,
+SchedTime, StartTime, EndTime, RealEndTime, JobTDate, VolSessionId,
+VolSessionTime, JobFiles, JobBytes, JobErrors, JobMissingFiles,
+PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase) SELECT
+JobId, Job, Name, Type, Level, ClientId, JobStatus, SchedTime, StartTime,
+EndTime, RealEndTime, JobTDate, VolSessionId, VolSessionTime, JobFiles,
+JobBytes, JobErrors, JobMissingFiles, PoolId, FileSetId, PriorJobId,
+PurgedFiles, HasBase FROM Job_backup;
+
+DROP TABLE Job_backup;
+
+-- ----------------------------------------------------------------
+-- New ActionOnPurge field
+
+CREATE TEMPORARY TABLE pool_backup AS SELECT * FROM Pool;
+DROP TABLE Pool;
+
+CREATE TABLE Pool (
+   PoolId INTEGER,
+   Name VARCHAR(128) NOT NULL,
+   NumVols INTEGER UNSIGNED DEFAULT 0,
+   MaxVols INTEGER UNSIGNED DEFAULT 0,
+   UseOnce TINYINT DEFAULT 0,
+   UseCatalog TINYINT DEFAULT 1,
+   AcceptAnyVolume TINYINT DEFAULT 0,
    VolRetention BIGINT UNSIGNED DEFAULT 0,
    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
-   InChanger TINYINT DEFAULT 0,
-   StorageId INTEGER UNSIGNED REFERENCES Storage,
-   DeviceId INTEGER UNSIGNED REFERENCES Device,
-   MediaAddressing TINYINT DEFAULT 0,
-   VolReadTime BIGINT UNSIGNED DEFAULT 0,
-   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
-   EndFile INTEGER UNSIGNED DEFAULT 0,
-   EndBlock INTEGER UNSIGNED DEFAULT 0,
-   LocationId INTEGER UNSIGNED REFERENCES Location,
-   RecycleCount INTEGER UNSIGNED DEFAULT 0,
-   InitialWrite DATETIME DEFAULT 0,
+   AutoPrune TINYINT DEFAULT 0,
+   Recycle TINYINT DEFAULT 0,
+   ActionOnPurge     TINYINT    DEFAULT 0,
+   PoolType VARCHAR(20) NOT NULL,
+   LabelType TINYINT DEFAULT 0,
+   LabelFormat VARCHAR(128) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   PRIMARY KEY(MediaId)
+   NextPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,
+   MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,
+   MigrationTime BIGINT UNSIGNED DEFAULT 0,
+   UNIQUE (Name),
+   PRIMARY KEY (PoolId)
    );
 
-INSERT INTO Media_backup SELECT 
-   MediaId, VolumeName, Slot, PoolId,
-   MediaType, LabelType, 0, FirstWritten, LastWritten,
-   LabelDate, VolJobs, VolFiles, VolBlocks,
-   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
-   VolCapacityBytes, VolStatus, 1, Recycle,
-   VolRetention, VolUseDuration, MaxVolJobs,
-   MaxVolFiles, MaxVolBytes, InChanger, 
-   StorageId, 0, MediaAddressing,
-   VolReadTime, VolWriteTime, EndFile, EndBlock, 0, 0, 0, 0, 0
-   FROM Media;
+INSERT INTO Pool (PoolId, Name, NumVols, MaxVols, UseOnce, UseCatalog,
+AcceptAnyVolume, VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles,
+MaxVolBytes, AutoPrune, Recycle, PoolType, LabelType,
+LabelFormat, Enabled, ScratchPoolId, RecyclePoolId, NextPoolId,
+MigrationHighBytes, MigrationLowBytes, MigrationTime) 
+SELECT PoolId, Name, NumVols, MaxVols, UseOnce, UseCatalog, AcceptAnyVolume,
+VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles, MaxVolBytes, AutoPrune,
+Recycle, PoolType, LabelType, LabelFormat, Enabled,
+ScratchPoolId, RecyclePoolId, NextPoolId, MigrationHighBytes,
+MigrationLowBytes, MigrationTime FROM pool_backup;
 
+DROP TABLE pool_backup;
 
+-- ----------------------------------------------------------------
+-- New ActionOnPurge field
+
+CREATE TEMPORARY TABLE media_backup AS SELECT * FROM Media;
 DROP TABLE Media;
 
 CREATE TABLE Media (
@@ -99,6 +139,7 @@ CREATE TABLE Media (
    VolStatus VARCHAR(20) NOT NULL,
    Enabled TINYINT DEFAULT 1,
    Recycle TINYINT DEFAULT 0,
+   ActionOnPurge     TINYINT    DEFAULT 0,
    VolRetention BIGINT UNSIGNED DEFAULT 0,
    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
@@ -121,63 +162,41 @@ CREATE TABLE Media (
    PRIMARY KEY(MediaId)
    );
 
+CREATE INDEX inx8 ON Media (PoolId);
+
 INSERT INTO Media (
-   MediaId, VolumeName, Slot, PoolId,
-   MediaType, MediaTypeId, LabelType, FirstWritten, LastWritten,
-   LabelDate, VolJobs, VolFiles, VolBlocks,
-   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
-   VolCapacityBytes, VolStatus, Enabled, Recycle,
+   MediaId, VolumeName, Slot, PoolId, MediaType, MediaTypeId,
+   LabelType, FirstWritten, LastWritten, LabelDate, VolJobs,
+   VolFiles, VolBlocks, VolMounts, VolBytes, VolParts, VolErrors,
+   VolWrites, VolCapacityBytes, VolStatus, Enabled, Recycle,
    VolRetention, VolUseDuration, MaxVolJobs,
-   MaxVolFiles, MaxVolBytes,
-   InChanger, StorageId, DeviceId, MediaAddressing,
-   VolReadTime, VolWriteTime,      
-   EndFile, EndBlock, LocationId, RecycleCount, InitialWrite,    
-   ScratchPoolId, RecyclePoolId)
-   SELECT * FROM Media_backup;
+   MaxVolFiles, MaxVolBytes, InChanger, StorageId, DeviceId,
+   MediaAddressing, VolReadTime, VolWriteTime, EndFile, EndBlock,
+   LocationId, RecycleCount, InitialWrite, ScratchPoolId,
+   RecyclePoolId, Comment)
+SELECT MediaId, VolumeName, Slot, PoolId, MediaType, MediaTypeId,
+   LabelType, FirstWritten, LastWritten, LabelDate, VolJobs,
+   VolFiles, VolBlocks, VolMounts, VolBytes, VolParts, VolErrors,
+   VolWrites, VolCapacityBytes, VolStatus, Enabled, Recycle,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, InChanger, StorageId, DeviceId,
+   MediaAddressing, VolReadTime, VolWriteTime, EndFile, EndBlock,
+   LocationId, RecycleCount, InitialWrite, ScratchPoolId,
+   RecyclePoolId, Comment FROM media_backup;
 
+DROP TABLE media_backup;
 
-DROP TABLE Media_backup;
-CREATE INDEX inx8 ON Media (PoolId);
+-- ----------------------------------------------------------------
 
-CREATE TEMPORARY TABLE job_backup
-(
-   JobId INTEGER,
-   Job VARCHAR(128) NOT NULL,
-   Name VARCHAR(128) NOT NULL,
-   Type CHAR NOT NULL,
-   Level CHAR NOT NULL,
-   ClientId INTEGER REFERENCES Client DEFAULT 0,
-   JobStatus CHAR NOT NULL,
-   SchedTime DATETIME NOT NULL,
-   StartTime DATETIME DEFAULT 0,
-   EndTime DATETIME DEFAULT 0,
-   RealEndTime DATETIME DEFAULT 0,
-   JobTDate BIGINT UNSIGNED DEFAULT 0,
-   VolSessionId INTEGER UNSIGNED DEFAULT 0,
-   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
-   JobFiles INTEGER UNSIGNED DEFAULT 0,
-   JobBytes BIGINT UNSIGNED DEFAULT 0,
-   JobErrors INTEGER UNSIGNED DEFAULT 0,
-   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
-   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
-   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
-   PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0 
-   );
+UPDATE Version SET VersionId=11;
 
-INSERT INTO Job_backup SELECT 
-   JobId, Job, Name, Type, Level, ClientId, JobStatus,
-   SchedTime, StartTime, EndTime, 0,
-   JobTDate, VolSessionId, VolSessionTime, 
-   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
-   PoolId, FileSetId, 0, PurgedFiles, HasBase
-   FROM Job;
+COMMIT;
 
-DROP TABLE Job;
+-- If you have already this table, you can remove it with:
+-- DROP TABLE JobHistory;
 
-CREATE TABLE Job
-(
+-- Create a table like Job for long term statistics
+CREATE TABLE JobHisto (
    JobId INTEGER,
    Job VARCHAR(128) NOT NULL,
    Name VARCHAR(128) NOT NULL,
@@ -194,59 +213,15 @@ CREATE TABLE Job
    VolSessionTime INTEGER UNSIGNED DEFAULT 0,
    JobFiles INTEGER UNSIGNED DEFAULT 0,
    JobBytes BIGINT UNSIGNED DEFAULT 0,
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,
    JobErrors INTEGER UNSIGNED DEFAULT 0,
    JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
    PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
    PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
    PurgedFiles TINYINT DEFAULT 0,
-   HasBase TINYINT DEFAULT 0,
-   PRIMARY KEY(JobId)
-   );
-CREATE INDEX inx6 ON Job (Name);
-
-INSERT INTO Job (
-   JobId, Job, Name, Type, Level, ClientId, JobStatus,
-   SchedTime, StartTime, EndTime, RealEndTime,
-   JobTDate, VolSessionId, VolSessionTime, 
-   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
-   PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase)
-   SELECT * FROM Job_backup;
-
-DROP TABLE Job_backup;
-
-CREATE TABLE LocationLog (
-   LocLogId INTEGER,
-   Date DATETIME NOT NULL,
-   Comment TEXT NOT NULL,
-   MediaId INTEGER UNSIGNED REFERENCES Media DEFAULT 0,
-   LocationId INTEGER UNSIGNED REFERENCES LocationId DEFAULT 0,
-   NewVolStatus VARCHAR(20) NOT NULL,
-   NewEnabled TINYINT NOT NULL,
-   PRIMARY KEY(LocLogId)
-);
-
-CREATE TABLE Log (
-   LogId INTEGER,
-   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-   Time DATETIME NOT NULL,
-   LogText TEXT NOT NULL,
-   PRIMARY KEY(LogId) 
-   );
-CREATE INDEX LogInx1 ON File (JobId);
-
-CREATE TABLE Location (
-   LocationId INTEGER,
-   Location TEXT NOT NULL,
-   Cost INTEGER DEFAULT 0,
-   Enabled TINYINT,
-   PRIMARY KEY(LocationId)
+   HasBase TINYINT DEFAULT 0
    );
-
-DELETE FROM Version;
-INSERT INTO Version (VersionId) VALUES (10);
-
-COMMIT;
+CREATE INDEX inx61 ON JobHisto (StartTime);
 
 END-OF-DATA
diff --git a/bacula/updatedb/update_sqlite_tables_9_to_10.in b/bacula/updatedb/update_sqlite_tables_9_to_10.in
new file mode 100644 (file)
index 0000000..8528595
--- /dev/null
@@ -0,0 +1,252 @@
+#!/bin/sh
+#
+# shell script to update SQLite from version 1.38 to 2.0
+#
+echo " "
+echo "This script will update a Bacula SQLite database from version 9 to 10"
+echo " which is needed to convert from Bacula version 1.38.x to 2.0.x or higher"
+echo "Depending on the size of your database,"
+echo "this script may take several minutes to run."
+echo " "
+
+bindir=@SQL_BINDIR@
+cd @working_dir@
+sqlite=@DB_TYPE@
+db_name=@db_name@
+
+${bindir}/${sqlite} $* ${db_name}.db <<END-OF-DATA
+BEGIN TRANSACTION;
+
+CREATE TEMPORARY TABLE Media_backup (
+   MediaId INTEGER UNSIGNED AUTOINCREMENT,
+   VolumeName VARCHAR(128) NOT NULL,
+   Slot INTEGER DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   MediaType VARCHAR(128) NOT NULL,
+   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
+   LabelType TINYINT DEFAULT 0,
+   FirstWritten DATETIME DEFAULT 0,
+   LastWritten DATETIME DEFAULT 0,
+   LabelDate DATETIME DEFAULT 0,
+   VolJobs INTEGER UNSIGNED DEFAULT 0,
+   VolFiles INTEGER UNSIGNED DEFAULT 0,
+   VolBlocks INTEGER UNSIGNED DEFAULT 0,
+   VolMounts INTEGER UNSIGNED DEFAULT 0,
+   VolBytes BIGINT UNSIGNED DEFAULT 0,
+   VolParts INTEGER UNSIGNED DEFAULT 0,
+   VolErrors INTEGER UNSIGNED DEFAULT 0,
+   VolWrites INTEGER UNSIGNED DEFAULT 0,
+   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
+   VolStatus VARCHAR(20) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   Recycle TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   InChanger TINYINT DEFAULT 0,
+   StorageId INTEGER UNSIGNED REFERENCES Storage,
+   DeviceId INTEGER UNSIGNED REFERENCES Device,
+   MediaAddressing TINYINT DEFAULT 0,
+   VolReadTime BIGINT UNSIGNED DEFAULT 0,
+   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
+   EndFile INTEGER UNSIGNED DEFAULT 0,
+   EndBlock INTEGER UNSIGNED DEFAULT 0,
+   LocationId INTEGER UNSIGNED REFERENCES Location,
+   RecycleCount INTEGER UNSIGNED DEFAULT 0,
+   InitialWrite DATETIME DEFAULT 0,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   PRIMARY KEY(MediaId)
+   );
+
+INSERT INTO Media_backup SELECT 
+   MediaId, VolumeName, Slot, PoolId,
+   MediaType, LabelType, 0, FirstWritten, LastWritten,
+   LabelDate, VolJobs, VolFiles, VolBlocks,
+   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
+   VolCapacityBytes, VolStatus, 1, Recycle,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes, InChanger, 
+   StorageId, 0, MediaAddressing,
+   VolReadTime, VolWriteTime, EndFile, EndBlock, 0, 0, 0, 0, 0
+   FROM Media;
+
+
+DROP TABLE Media;
+
+CREATE TABLE Media (
+   MediaId INTEGER,
+   VolumeName VARCHAR(128) NOT NULL,
+   Slot INTEGER DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   MediaType VARCHAR(128) NOT NULL,
+   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
+   LabelType TINYINT DEFAULT 0,
+   FirstWritten DATETIME DEFAULT 0,
+   LastWritten DATETIME DEFAULT 0,
+   LabelDate DATETIME DEFAULT 0,
+   VolJobs INTEGER UNSIGNED DEFAULT 0,
+   VolFiles INTEGER UNSIGNED DEFAULT 0,
+   VolBlocks INTEGER UNSIGNED DEFAULT 0,
+   VolMounts INTEGER UNSIGNED DEFAULT 0,
+   VolBytes BIGINT UNSIGNED DEFAULT 0,
+   VolParts INTEGER UNSIGNED DEFAULT 0,
+   VolErrors INTEGER UNSIGNED DEFAULT 0,
+   VolWrites INTEGER UNSIGNED DEFAULT 0,
+   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
+   VolStatus VARCHAR(20) NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   Recycle TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   InChanger TINYINT DEFAULT 0,
+   StorageId INTEGER UNSIGNED REFERENCES Storage DEFAULT 0,
+   DeviceId INTEGER UNSIGNED REFERENCES Device DEFAULT 0,
+   MediaAddressing TINYINT DEFAULT 0,
+   VolReadTime BIGINT UNSIGNED DEFAULT 0,
+   VolWriteTime BIGINT UNSIGNED DEFAULT 0,
+   EndFile INTEGER UNSIGNED DEFAULT 0,
+   EndBlock INTEGER UNSIGNED DEFAULT 0,
+   LocationId INTEGER UNSIGNED REFERENCES Location DEFAULT 0,
+   RecycleCount INTEGER UNSIGNED DEFAULT 0,
+   InitialWrite DATETIME DEFAULT 0,
+   ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   Comment TEXT,
+   PRIMARY KEY(MediaId)
+   );
+
+INSERT INTO Media (
+   MediaId, VolumeName, Slot, PoolId,
+   MediaType, MediaTypeId, LabelType, FirstWritten, LastWritten,
+   LabelDate, VolJobs, VolFiles, VolBlocks,
+   VolMounts, VolBytes, VolParts, VolErrors, VolWrites,
+   VolCapacityBytes, VolStatus, Enabled, Recycle,
+   VolRetention, VolUseDuration, MaxVolJobs,
+   MaxVolFiles, MaxVolBytes,
+   InChanger, StorageId, DeviceId, MediaAddressing,
+   VolReadTime, VolWriteTime,      
+   EndFile, EndBlock, LocationId, RecycleCount, InitialWrite,    
+   ScratchPoolId, RecyclePoolId)
+   SELECT * FROM Media_backup;
+
+
+DROP TABLE Media_backup;
+CREATE INDEX inx8 ON Media (PoolId);
+
+CREATE TEMPORARY TABLE job_backup
+(
+   JobId INTEGER,
+   Job VARCHAR(128) NOT NULL,
+   Name VARCHAR(128) NOT NULL,
+   Type CHAR NOT NULL,
+   Level CHAR NOT NULL,
+   ClientId INTEGER REFERENCES Client DEFAULT 0,
+   JobStatus CHAR NOT NULL,
+   SchedTime DATETIME NOT NULL,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0 
+   );
+
+INSERT INTO Job_backup SELECT 
+   JobId, Job, Name, Type, Level, ClientId, JobStatus,
+   SchedTime, StartTime, EndTime, 0,
+   JobTDate, VolSessionId, VolSessionTime, 
+   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
+   PoolId, FileSetId, 0, PurgedFiles, HasBase
+   FROM Job;
+
+DROP TABLE Job;
+
+CREATE TABLE Job
+(
+   JobId INTEGER,
+   Job VARCHAR(128) NOT NULL,
+   Name VARCHAR(128) NOT NULL,
+   Type CHAR NOT NULL,
+   Level CHAR NOT NULL,
+   ClientId INTEGER REFERENCES Client DEFAULT 0,
+   JobStatus CHAR NOT NULL,
+   SchedTime DATETIME NOT NULL,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+   FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0,
+   PRIMARY KEY(JobId)
+   );
+CREATE INDEX inx6 ON Job (Name);
+
+INSERT INTO Job (
+   JobId, Job, Name, Type, Level, ClientId, JobStatus,
+   SchedTime, StartTime, EndTime, RealEndTime,
+   JobTDate, VolSessionId, VolSessionTime, 
+   JobFiles, JobBytes, JobErrors, JobMissingFiles, 
+   PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase)
+   SELECT * FROM Job_backup;
+
+DROP TABLE Job_backup;
+
+CREATE TABLE LocationLog (
+   LocLogId INTEGER,
+   Date DATETIME NOT NULL,
+   Comment TEXT NOT NULL,
+   MediaId INTEGER UNSIGNED REFERENCES Media DEFAULT 0,
+   LocationId INTEGER UNSIGNED REFERENCES LocationId DEFAULT 0,
+   NewVolStatus VARCHAR(20) NOT NULL,
+   NewEnabled TINYINT NOT NULL,
+   PRIMARY KEY(LocLogId)
+);
+
+CREATE TABLE Log (
+   LogId INTEGER,
+   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
+   Time DATETIME NOT NULL,
+   LogText TEXT NOT NULL,
+   PRIMARY KEY(LogId) 
+   );
+CREATE INDEX LogInx1 ON File (JobId);
+
+CREATE TABLE Location (
+   LocationId INTEGER,
+   Location TEXT NOT NULL,
+   Cost INTEGER DEFAULT 0,
+   Enabled TINYINT,
+   PRIMARY KEY(LocationId)
+   );
+
+DELETE FROM Version;
+INSERT INTO Version (VersionId) VALUES (10);
+
+COMMIT;
+
+END-OF-DATA