]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl Add a patch to add a Product column to Version table
authorEric Bollengier <eric@eb.homelinux.org>
Wed, 5 Sep 2007 19:57:37 +0000 (19:57 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Wed, 5 Sep 2007 19:57:37 +0000 (19:57 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@5463 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/patches/testing/add_product_name_in_version.patch [new file with mode: 0644]
bacula/patches/testing/add_product_name_in_version.readme [new file with mode: 0644]

diff --git a/bacula/patches/testing/add_product_name_in_version.patch b/bacula/patches/testing/add_product_name_in_version.patch
new file mode 100644 (file)
index 0000000..e13886a
--- /dev/null
@@ -0,0 +1,782 @@
+Index: src/cats/sql.c
+===================================================================
+--- src/cats/sql.c     (révision 5461)
++++ src/cats/sql.c     (copie de travail)
+@@ -111,7 +111,8 @@
+ /* Check that the tables correspond to the version we want */
+ bool check_tables_version(JCR *jcr, B_DB *mdb)
+ {
+-   const char *query = "SELECT VersionId FROM Version";
++   const char *query = "SELECT VersionId FROM Version " 
++                     " WHERE Product = 'bacula'";
+    bacula_db_version = 0;
+    if (!db_sql_query(mdb, query, int_handler, (void *)&bacula_db_version)) {
+Index: src/cats/update_postgresql_tables.in
+===================================================================
+--- src/cats/update_postgresql_tables.in       (révision 5461)
++++ src/cats/update_postgresql_tables.in       (copie de travail)
+@@ -1,10 +1,10 @@
+ #!/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.2 to 3 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 "This script will update a Bacula PostgreSQL database from version 10 to 11"
++echo " which is needed to convert from Bacula version 2.2 to 3 or higher"
+ echo "Depending on the size of your database,"
+ echo "this script may take several minutes to run."
+ echo " "
+@@ -13,65 +13,10 @@
+ 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 version ADD COLUMN product char(8);
+-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);
++INSERT INTO version (product, versionId) VALUES ('bacula', 11);
+ vacuum;
+Index: src/cats/make_sqlite3_tables.in
+===================================================================
+--- src/cats/make_sqlite3_tables.in    (révision 5461)
++++ src/cats/make_sqlite3_tables.in    (copie de travail)
+@@ -283,6 +283,7 @@
+ INSERT INTO NextId (id, TableName) VALUES (1, "Job");
+ CREATE TABLE Version (
++   Product CHAR(8),
+    VersionId INTEGER UNSIGNED NOT NULL 
+    );
+@@ -350,7 +351,7 @@
+ -- Initialize Version          
+-INSERT INTO Version (VersionId) VALUES (10);
++INSERT INTO Version (Product, VersionId) VALUES ('bacula', 11);
+ PRAGMA default_cache_size = 100000;
+Index: src/cats/update_sqlite3_tables.in
+===================================================================
+--- src/cats/update_sqlite3_tables.in  (révision 5461)
++++ src/cats/update_sqlite3_tables.in  (copie de travail)
+@@ -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.2 to 3
+ #
+ 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.2 to 3 or higher"
+ echo "Depending on the size of your database,"
+ echo "this script may take several minutes to run."
+ echo " "
+@@ -17,236 +17,15 @@
+ ${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)
+-   );
++DROP TABLE Version;
+-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)
++CREATE TABLE Version (
++   Product CHAR(8),
++   VersionId INTEGER UNSIGNED NOT NULL 
+    );
+-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;
++INSERT INTO Version (Product, VersionId) VALUES ('bacula', 11);
+-
+-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: src/cats/make_postgresql_tables.in
+===================================================================
+--- src/cats/make_postgresql_tables.in (révision 5461)
++++ src/cats/make_postgresql_tables.in (copie de travail)
+@@ -315,6 +315,7 @@
+ CREATE TABLE version
+ (
++    product           char(8),
+     versionid       integer               not null
+ );
+@@ -364,7 +365,7 @@
+    ('p', 'Waiting on higher priority jobs');
+-INSERT INTO Version (VersionId) VALUES (10);
++INSERT INTO Version (Product, VersionId) VALUES ('bacula', 11);
+ -- Make sure we have appropriate permissions
+Index: src/cats/update_sqlite_tables.in
+===================================================================
+--- src/cats/update_sqlite_tables.in   (révision 5461)
++++ src/cats/update_sqlite_tables.in   (copie de travail)
+@@ -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.2 to 3
+ #
+ 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.2 to 3 or higher"
+ echo "Depending on the size of your database,"
+ echo "this script may take several minutes to run."
+ echo " "
+@@ -17,236 +17,15 @@
+ ${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)
+-   );
++DROP TABLE Version;
+-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)
++CREATE TABLE Version (
++   Product CHAR(8),
++   VersionId INTEGER UNSIGNED NOT NULL 
+    );
+-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;
++INSERT INTO Version (Product, VersionId) VALUES ('bacula', 11);
+-
+-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: src/cats/update_mysql_tables.in
+===================================================================
+--- src/cats/update_mysql_tables.in    (révision 5461)
++++ src/cats/update_mysql_tables.in    (copie de travail)
+@@ -1,10 +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.2 to 3
+ #
+ 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 "This script will update a Bacula MySQL database from version 10 to 11"
++echo " which is needed to convert from Bacula version 2.2 to 3 or higher"
+ echo "Depending on the size of your database,"
+ echo "this script may take several minutes to run."
+ echo " "
+@@ -14,59 +14,12 @@
+ 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;
++ALTER TABLE Version ADD COLUMN Product char(8) default '';
+-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);
++INSERT INTO Version (Product, VersionId) VALUES ('bacula', 11);
+ END-OF-DATA
+ then
+Index: src/cats/make_sqlite_tables.in
+===================================================================
+--- src/cats/make_sqlite_tables.in     (révision 5461)
++++ src/cats/make_sqlite_tables.in     (copie de travail)
+@@ -283,6 +283,7 @@
+ INSERT INTO NextId (id, TableName) VALUES (1, "Job");
+ CREATE TABLE Version (
++   Product CHAR(8),
+    VersionId INTEGER UNSIGNED NOT NULL 
+    );
+@@ -350,7 +351,7 @@
+ -- Initialize Version          
+-INSERT INTO Version (VersionId) VALUES (10);
++INSERT INTO Version (Product, VersionId) VALUES ('bacula', 11);
+ PRAGMA default_synchronous = OFF;
+Index: src/cats/make_mysql_tables.in
+===================================================================
+--- src/cats/make_mysql_tables.in      (révision 5461)
++++ src/cats/make_mysql_tables.in      (copie de travail)
+@@ -328,11 +328,12 @@
+    ('p', 'Waiting on higher priority jobs');
+ CREATE TABLE Version (
+-   VersionId INTEGER UNSIGNED NOT NULL 
++   Product CHAR(8),
++   VersionId INTEGER UNSIGNED NOT NULL,
+    );
+ -- Initialize Version          
+-INSERT INTO Version (VersionId) VALUES (10);
++INSERT INTO Version (Product, VersionId) VALUES ('bacula', 11);
+ END-OF-DATA
+ then
diff --git a/bacula/patches/testing/add_product_name_in_version.readme b/bacula/patches/testing/add_product_name_in_version.readme
new file mode 100644 (file)
index 0000000..87daaa7
--- /dev/null
@@ -0,0 +1,17 @@
+From: Eric Bollengier <eric at homelinux dot org>
+
+This patch add a column to the Version table of the catalog.
+For example, bweb and brestore are using private tables, and
+it is useful to store the schema version in the same table.
+
+Product  |  Version
+---------+---------
+bacula   |    10
+bweb     |    2
+brestore |    3
+
+instead of 
+
+Version
+-------
+  10