]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl Move 9 to 10 scripts to updatedb
authorEric Bollengier <eric@eb.homelinux.org>
Fri, 21 Mar 2008 13:46:31 +0000 (13:46 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Fri, 21 Mar 2008 13:46:31 +0000 (13:46 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6656 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/cats/update_mysql_tables.in [changed mode: 0755->0644]
bacula/src/cats/update_postgresql_tables.in [changed mode: 0755->0644]
bacula/src/cats/update_sqlite3_tables.in [changed mode: 0755->0644]
bacula/src/cats/update_sqlite_tables.in [changed mode: 0755->0644]
bacula/technotes-2.3
bacula/updatedb/update_mysql_tables_10_to_11.in [new file with mode: 0755]
bacula/updatedb/update_postgresql_tables_10_to_11.in [new file with mode: 0755]
bacula/updatedb/update_sqlite3_tables_10_to_11.in [new file with mode: 0755]
bacula/updatedb/update_sqlite_tables_10_to_11.in [new file with mode: 0755]

old mode 100755 (executable)
new mode 100644 (file)
index ce2fd2a..2b981ea
@@ -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,11 @@ 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;
-
-
+-- Create a table like Job for long term statistics
+CREATE TABLE JobStat (LIKE Job);
 
 DELETE FROM Version;
-INSERT INTO Version (VersionId) VALUES (10);
+INSERT INTO Version (VersionId) VALUES (11);
 
 END-OF-DATA
 then
old mode 100755 (executable)
new mode 100644 (file)
index 97ecee2..159e5bd
@@ -1,79 +1,22 @@
 #!/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;
+-- Create a table like Job for long term statistics
+CREATE TABLE jobstat (LIKE job);
 
-ALTER TABLE job ADD COLUMN RealEndTime timestamp without time zone;
-ALTER TABLE job ADD COLUMN PriorJobId integer;
-UPDATE job SET PriorJobId=0;
+UPDATE version SET versionid=11;
 
-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;
+vacuum analyse;
 
 END-OF-DATA
 then
old mode 100755 (executable)
new mode 100644 (file)
index 8528595..12afa17
@@ -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,235 +17,10 @@ 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)
-   );
+-- Create a table like Job for long term statistics
+CREATE TABLE jobstat (LIKE job);
 
-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);
+UPDATE Version SET VersionId=11;
 
 COMMIT;
 
old mode 100755 (executable)
new mode 100644 (file)
index 8528595..12afa17
@@ -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,235 +17,10 @@ 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)
-   );
+-- Create a table like Job for long term statistics
+CREATE TABLE jobstat (LIKE job);
 
-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);
+UPDATE Version SET VersionId=11;
 
 COMMIT;
 
index 650869d35b89a37407dadfdf1242a0c715fc966a..23e9be30c7bec0e1c4f408a319a3230e3e70dce4 100644 (file)
@@ -22,6 +22,8 @@ Add long term statistic job table
 
 
 General:
+21Mar08
+ebl  Implement upgrade catalog scripts.
 20Mar08
 ebl  Apply jobstat patch for long term statistics. Have to implement
      purge stats command and upgrade scripts.
diff --git a/bacula/updatedb/update_mysql_tables_10_to_11.in b/bacula/updatedb/update_mysql_tables_10_to_11.in
new file mode 100755 (executable)
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
diff --git a/bacula/updatedb/update_postgresql_tables_10_to_11.in b/bacula/updatedb/update_postgresql_tables_10_to_11.in
new file mode 100755 (executable)
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
diff --git a/bacula/updatedb/update_sqlite3_tables_10_to_11.in b/bacula/updatedb/update_sqlite3_tables_10_to_11.in
new file mode 100755 (executable)
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
diff --git a/bacula/updatedb/update_sqlite_tables_10_to_11.in b/bacula/updatedb/update_sqlite_tables_10_to_11.in
new file mode 100755 (executable)
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