]> git.sur5r.net Git - bacula/bacula/commitdiff
- Tweak catalog make scripts.
authorKern Sibbald <kern@sibbald.com>
Sat, 22 Jul 2006 12:50:23 +0000 (12:50 +0000)
committerKern Sibbald <kern@sibbald.com>
Sat, 22 Jul 2006 12:50:23 +0000 (12:50 +0000)
- Fix catalog upgrade scripts so that they work.
- Correct despooling debug code to eliminate race condition.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3167 91ce42f0-d328-0410-95d8-f526ca767f89

17 files changed:
bacula/kernstodo
bacula/kes-1.39
bacula/src/cats/drop_mysql_tables.in
bacula/src/cats/drop_postgresql_tables.in
bacula/src/cats/make_mysql_tables.in
bacula/src/cats/make_postgresql_tables.in
bacula/src/cats/make_sqlite3_tables.in
bacula/src/cats/make_sqlite_tables.in
bacula/src/cats/update_mysql_tables.in
bacula/src/cats/update_postgresql_tables.in
bacula/src/cats/update_sqlite3_tables.in
bacula/src/cats/update_sqlite_tables.in
bacula/src/dird/fd_cmds.c
bacula/src/stored/dev.h
bacula/src/stored/spool.c
bacula/src/stored/status.c
bacula/src/version.h

index 9b6b693c7137a2b88b566566c661ca6dc97f3e70..3a1c4d1e6dc6868dcd42e6b12aca5835076ed954 100644 (file)
@@ -19,6 +19,10 @@ Document:
   workaround: specify absolute working and pid directory in
   bacula-fd.conf (e.g.  c:\bacula\working instead of
   \bacula\working).
+- Document techniques for restoring large numbers of files.
+- Document setting my.cnf to big file usage.
+- Add example of proper index output to doc.
+   show index from File;
 
 Priority:
 
@@ -26,14 +30,7 @@ For 1.39:
 - Remove queue.c code.
 - Correct the Include syntax in the m4.xxx files in examples/conf
 - Get Perl replacement for bregex.c
-- Make base64.c (bin_to_base64) take a buffer length 
-  argument to avoid overruns.
-  and verify that other buffers cannot overrun.
-- Implement VolumeState as discussed with Arno.
-- Document techniques for restoring large numbers of files.
-- Document setting my.cnf to big file usage.
-- Add example of proper index output to doc.
-   show index from File;
+- Fix auth compatibility with 1.38
 - Fix re-read of last block to check if job has actually written
   a block, and check if block was written by a different job
   (i.e. multiple simultaneous jobs writing).
@@ -42,15 +39,6 @@ For 1.39:
   Volume marked as purged.
 - Print warning message if LANG environment variable does not specify
   UTF-8.
-- Add LocationId to update volume
-- Add LocationLog
-    LogId
-    Date
-    User text
-    MediaId
-    LocationId
-    NewState???
-- Add Comment to Media record
 - New dot commands from Arno.
   .update volume [enabled|disabled|*see below]
     > However, I could easily imagine an option to "update slots" that says 
@@ -1621,3 +1609,17 @@ Block Position: 0
 - Make Dir and SD authentication errors single threaded.
 - Install man pages
 - Fix catreq.c digestbuf at line 411 in src/dird/catreq.c 
+- Make base64.c (bin_to_base64) take a buffer length 
+  argument to avoid overruns.
+  and verify that other buffers cannot overrun.
+- Implement VolumeState as discussed with Arno.
+- Add LocationId to update volume
+- Add LocationLog
+    LogId
+    Date
+    User text
+    MediaId
+    LocationId
+    NewState???
+- Add Comment to Media record
+
index 07c415b40f7ff2f253e03dcbc480882e5e3e8f92..c616351a8cd95d48ded8d477c0e6c36964b5ecae 100644 (file)
@@ -2,14 +2,18 @@
                         Kern Sibbald
 
 General:
-19July06
+22Jul06
+- Tweak catalog make scripts.
+- Fix catalog upgrade scripts so that they work.
+- Correct despooling debug code to eliminate race condition.
+19Jul06
 - Add additional fields as specified by Arno to LocationLog.
 - Add comment field to the Media record.
 - Add Time field to the Log record.
 - Correct migration SQL (thanks to Bill Moran) so that it
   runs with PostgreSQL also.
 - Add spooling/despooling info in status output of SD.
-17July06
+17Jul06
 - Spend a lot of time integrating mkcdrec with the rescue disk.
 - Add VOLMGMT message class for volume management messages (none yet).
 - Add CATALOG as a destination.  It goes into the LOG table.
index f828ef0af08cb702be6c73d0feacd9dce26ad829..fbe87274075011c8fa8e5a3d4e5e91e5aa292eb5 100644 (file)
@@ -28,7 +28,9 @@ DROP TABLE IF EXISTS UnsavedFiles;
 DROP TABLE IF EXISTS CDImages;
 DROP TABLE IF EXISTS Status;
 DROP TABLE IF EXISTS MAC;
+DROP TABLE IF EXISTS Log;
 DROP TABLE IF EXISTS Location;
+DROP TABLE IF EXISTS LocationLog;
 END-OF-DATA
 then
    echo "Deletion of Bacula MySQL tables succeeded."
index f59669e6f12527e399c2e83f91f79ba6eb5d92c6..ab5f59a1375eb6780221f214fd162ac4546d19ac 100644 (file)
@@ -24,7 +24,9 @@ drop table Storage;
 drop table MediaType;
 drop table Status;
 drop table MAC;
+drop table log;
 drop table Location;
+drop table locationlog;
 END-OF-DATA
 pstat=$?
 if test $pstat = 0; 
index b9899fff6d3d876177140673f95a3bbf0a100947..0c1ce16324ca4d61c60392cd4ccbe1b6de53e3be 100644 (file)
@@ -127,8 +127,8 @@ CREATE TABLE LocationLog (
    LocLogId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    Date DATETIME DEFAULT 0,
    Comment BLOB NOT NULL,
-   MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media;
-   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES LocationId;
+   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,
@@ -257,7 +257,7 @@ CREATE TABLE Client (
 
 CREATE TABLE Log (
    LogId INTEGER UNSIGNED AUTO_INCREMENT,
-   JobId INTEGER INTEGER UNSIGNED DEFAULT 0 REFERENCES JobId,
+   JobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
    Time DATETIME DEFAULT 0,
    LogText BLOB NOT NULL,
    PRIMARY KEY(LogId),
index a10925554d3b23a3a623ab5fde44e8d32dd0179e..6f24d6b377c2ccb5ba9efe51aaf7808a36322c63 100644 (file)
@@ -264,7 +264,7 @@ CREATE TABLE LocationLog (
    MediaId INTEGER DEFAULT 0,
    LocationId INTEGER DEFAULT 0,
    newvolstatus text not null
-       check (volstatus in ('Full','Archive','Append',
+       check (newvolstatus in ('Full','Archive','Append',
              'Recycle','Purged','Read-Only','Disabled',
              'Error','Busy','Used','Cleaning','Scratch')),
    newenabled smallint,
index 4583b85557b1ade1354fbfcd196073642ce36317..4df3610ed2cc215de7e61f78bcd4c5410027ecc1 100644 (file)
@@ -76,7 +76,7 @@ CREATE INDEX inx6 ON Job (Name);
 
 CREATE TABLE Location (
    LocationId INTEGER,
-   Location TINYBLOB NOT NULL,
+   Location TEXT NOT NULL,
    Cost INTEGER DEFAULT 0,
    Enabled TINYINT,
    PRIMARY KEY(LocationId)
index 4583b85557b1ade1354fbfcd196073642ce36317..4df3610ed2cc215de7e61f78bcd4c5410027ecc1 100644 (file)
@@ -76,7 +76,7 @@ CREATE INDEX inx6 ON Job (Name);
 
 CREATE TABLE Location (
    LocationId INTEGER,
-   Location TINYBLOB NOT NULL,
+   Location TEXT NOT NULL,
    Cost INTEGER DEFAULT 0,
    Enabled TINYINT,
    PRIMARY KEY(LocationId)
index 52271b92d8d4c3d9b9a71e7235ca96af4513e542..bdb5a213e1a7535b83213920abbafdc19366b446 100755 (executable)
@@ -3,7 +3,8 @@
 # Shell script to update MySQL tables from version 1.38 to 1.39  
 #
 echo " "
-echo "This script will update a Bacula MySQL database from version 9 to 9"
+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 1.39.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
@@ -12,50 +13,55 @@ bindir=@SQL_BINDIR@
 if $bindir/mysql $* -f <<END-OF-DATA
 USE bacula;
 
-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 ADD COLUMN Stripe;
-
-ALTER TABLE Job ADD COLUMN PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job;
-ALTER TABLE Job ADD COLUMN RealEndTime DATETIME DEFAULT 0;
+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 INTEGER UNSIGNED DEFAULT 0 REFERENCES JobId,
+   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 NOT NULL,
-   MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media;
-   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES LocationId;
+   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 TABLE Location (
-   LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-   Location BLOB NOT NULL,
-   Cost INTEGER DEFAULT 0,
-   Enabled TINYINT,
-   PRIMARY KEY(LocationId)
-   );
 
 
 DELETE FROM Version;
index 7c3cebbcbd3d01470d7c8e9ce66b0b61bb945d74..87ea9128a5ad3abbfe0d02b2f796342757a1761e 100755 (executable)
@@ -3,7 +3,8 @@
 # Shell script to update PostgreSQL tables from version 1.38 to 1.39
 #
 echo " "
-echo "This script will update a Bacula PostgreSQL database from version 9 to 9"
+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 1.39.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
@@ -20,7 +21,6 @@ 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;
-UPDATE media SET InitialWrite=0;
 ALTER TABLE media ADD COLUMN scratchpoolid integer;
 UPDATE media SET scratchpoolid=0;
 ALTER TABLE media ADD COLUMN recyclepoolid integer;
@@ -30,7 +30,6 @@ UPDATE media SET enabled=1;
 ALTER TABLE media ADD COLUMN Comment TEXT;
 
 ALTER TABLE job ADD COLUMN RealEndTime timestamp without time zone;
-UPDATE job SET RealEndTime=0;
 ALTER TABLE job ADD COLUMN PriorJobId integer;
 UPDATE job SET PriorJobId=0;
 
@@ -51,7 +50,7 @@ CREATE TABLE LocationLog (
    MediaId INTEGER DEFAULT 0,
    LocationId INTEGER DEFAULT 0,
    newvolstatus text not null
-       check (volstatus in ('Full','Archive','Append',
+       check (newvolstatus in ('Full','Archive','Append',
              'Recycle','Purged','Read-Only','Disabled',
              'Error','Busy','Used','Cleaning','Scratch')),
    newenabled smallint,
index c2d427ab61e8223c2aeb98129d27ba1ef6dcc953..efb79fb88ab7cb9cc3a39f1f64df78b3ea41dac9 100755 (executable)
@@ -3,7 +3,8 @@
 # shell script to update SQLite from version 1.38 to 1.39
 #
 echo " "
-echo "This script will update a Bacula SQLite database from version 9 to 9"
+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 1.39.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
@@ -19,7 +20,7 @@ CREATE TEMPORARY TABLE Media_backup (
    MediaId INTEGER UNSIGNED AUTOINCREMENT,
    VolumeName VARCHAR(128) NOT NULL,
    Slot INTEGER DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    MediaType VARCHAR(128) NOT NULL,
    MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
    LabelType TINYINT DEFAULT 0,
@@ -75,12 +76,12 @@ INSERT INTO Media_backup SELECT
 DROP TABLE Media;
 
 CREATE TABLE Media (
-   MediaId INTEGER UNSIGNED AUTOINCREMENT,
+   MediaId INTEGER,
    VolumeName VARCHAR(128) NOT NULL,
    Slot INTEGER DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    MediaType VARCHAR(128) NOT NULL,
-   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType NOT NULL,
+   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
    LabelType TINYINT DEFAULT 0,
    FirstWritten DATETIME DEFAULT 0,
    LastWritten DATETIME DEFAULT 0,
@@ -103,19 +104,19 @@ CREATE TABLE Media (
    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
    InChanger TINYINT DEFAULT 0,
-   StorageId INTEGER UNSIGNED REFERENCES Storage,
-   DeviceId INTEGER UNSIGNED REFERENCES Device,
+   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,
+   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,   
+   Comment TEXT,
    PRIMARY KEY(MediaId)
    );
 
@@ -138,7 +139,7 @@ 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,
@@ -161,8 +162,7 @@ CREATE TEMPORARY TABLE job_backup
    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) 
+   HasBase TINYINT DEFAULT 0 
    );
 
 INSERT INTO Job_backup SELECT 
@@ -170,14 +170,13 @@ INSERT INTO Job_backup SELECT
    SchedTime, StartTime, EndTime, 0,
    JobTDate, VolSessionId, VolSessionTime, 
    JobFiles, JobBytes, JobErrors, JobMissingFiles, 
-   PoolId, FileSetId, 0, PurgedFiles, HasBase,
-   PRIMARY KEY(JobId) 
-   );
+   PoolId, FileSetId, 0, PurgedFiles, HasBase
    FROM Job;
 
 DROP TABLE Job;
-CREATE TEMPORARY TABLE Job
-{
+
+CREATE TABLE Job
+(
    JobId INTEGER,
    Job VARCHAR(128) NOT NULL,
    Name VARCHAR(128) NOT NULL,
@@ -201,16 +200,17 @@ CREATE TEMPORARY TABLE Job
    PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
    PurgedFiles TINYINT DEFAULT 0,
    HasBase TINYINT DEFAULT 0,
-   PRIMARY KEY(JobId) 
+   PRIMARY KEY(JobId)
    );
+CREATE INDEX inx6 ON Job (Name);
 
-INSERT INTO Job SELECT 
+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
-   FROM Job_backup;
+   PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase)
+   SELECT * FROM Job_backup;
 
 DROP TABLE Job_backup;
 
@@ -236,7 +236,7 @@ CREATE INDEX LogInx1 ON File (JobId);
 
 CREATE TABLE Location (
    LocationId INTEGER,
-   Location VARCHAR(128) NOT NULL,
+   Location TEXT NOT NULL,
    Cost INTEGER DEFAULT 0,
    Enabled TINYINT,
    PRIMARY KEY(LocationId)
index c2d427ab61e8223c2aeb98129d27ba1ef6dcc953..efb79fb88ab7cb9cc3a39f1f64df78b3ea41dac9 100755 (executable)
@@ -3,7 +3,8 @@
 # shell script to update SQLite from version 1.38 to 1.39
 #
 echo " "
-echo "This script will update a Bacula SQLite database from version 9 to 9"
+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 1.39.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
@@ -19,7 +20,7 @@ CREATE TEMPORARY TABLE Media_backup (
    MediaId INTEGER UNSIGNED AUTOINCREMENT,
    VolumeName VARCHAR(128) NOT NULL,
    Slot INTEGER DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    MediaType VARCHAR(128) NOT NULL,
    MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
    LabelType TINYINT DEFAULT 0,
@@ -75,12 +76,12 @@ INSERT INTO Media_backup SELECT
 DROP TABLE Media;
 
 CREATE TABLE Media (
-   MediaId INTEGER UNSIGNED AUTOINCREMENT,
+   MediaId INTEGER,
    VolumeName VARCHAR(128) NOT NULL,
    Slot INTEGER DEFAULT 0,
-   PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
+   PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
    MediaType VARCHAR(128) NOT NULL,
-   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType NOT NULL,
+   MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
    LabelType TINYINT DEFAULT 0,
    FirstWritten DATETIME DEFAULT 0,
    LastWritten DATETIME DEFAULT 0,
@@ -103,19 +104,19 @@ CREATE TABLE Media (
    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
    InChanger TINYINT DEFAULT 0,
-   StorageId INTEGER UNSIGNED REFERENCES Storage,
-   DeviceId INTEGER UNSIGNED REFERENCES Device,
+   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,
+   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,   
+   Comment TEXT,
    PRIMARY KEY(MediaId)
    );
 
@@ -138,7 +139,7 @@ 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,
@@ -161,8 +162,7 @@ CREATE TEMPORARY TABLE job_backup
    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) 
+   HasBase TINYINT DEFAULT 0 
    );
 
 INSERT INTO Job_backup SELECT 
@@ -170,14 +170,13 @@ INSERT INTO Job_backup SELECT
    SchedTime, StartTime, EndTime, 0,
    JobTDate, VolSessionId, VolSessionTime, 
    JobFiles, JobBytes, JobErrors, JobMissingFiles, 
-   PoolId, FileSetId, 0, PurgedFiles, HasBase,
-   PRIMARY KEY(JobId) 
-   );
+   PoolId, FileSetId, 0, PurgedFiles, HasBase
    FROM Job;
 
 DROP TABLE Job;
-CREATE TEMPORARY TABLE Job
-{
+
+CREATE TABLE Job
+(
    JobId INTEGER,
    Job VARCHAR(128) NOT NULL,
    Name VARCHAR(128) NOT NULL,
@@ -201,16 +200,17 @@ CREATE TEMPORARY TABLE Job
    PriorJobId INTEGER UNSIGNED REFERENCES Job DEFAULT 0,
    PurgedFiles TINYINT DEFAULT 0,
    HasBase TINYINT DEFAULT 0,
-   PRIMARY KEY(JobId) 
+   PRIMARY KEY(JobId)
    );
+CREATE INDEX inx6 ON Job (Name);
 
-INSERT INTO Job SELECT 
+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
-   FROM Job_backup;
+   PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase)
+   SELECT * FROM Job_backup;
 
 DROP TABLE Job_backup;
 
@@ -236,7 +236,7 @@ CREATE INDEX LogInx1 ON File (JobId);
 
 CREATE TABLE Location (
    LocationId INTEGER,
-   Location VARCHAR(128) NOT NULL,
+   Location TEXT NOT NULL,
    Cost INTEGER DEFAULT 0,
    Enabled TINYINT,
    PRIMARY KEY(LocationId)
index 4a858abdc59b9b541947d3cd889666ca01f5455b..6615a39d07f74a4f87b04dcdafcfe23f2d093b0f 100644 (file)
@@ -160,14 +160,14 @@ void get_level_since_time(JCR *jcr, char *since, int since_len)
       if (!db_find_job_start_time(jcr, jcr->db, &jcr->jr, &jcr->stime)) {
          /* No job found, so upgrade this one to Full */
          Jmsg(jcr, M_INFO, 0, "%s", db_strerror(jcr->db));
-         Jmsg(jcr, M_INFO, 0, _("No prior or suitable Full backup found. Doing FULL backup.\n"));
+         Jmsg(jcr, M_INFO, 0, _("No prior or suitable Full backup found in catalog. Doing FULL backup.\n"));
          bsnprintf(since, since_len, _(" (upgraded from %s)"),
             level_to_str(jcr->JobLevel));
          jcr->JobLevel = jcr->jr.JobLevel = L_FULL;
       } else {
          if (jcr->job->rerun_failed_levels) {
             if (db_find_failed_job_since(jcr, jcr->db, &jcr->jr, jcr->stime, JobLevel)) {
-               Jmsg(jcr, M_INFO, 0, _("Prior failed job found. Upgrading to %s.\n"),
+               Jmsg(jcr, M_INFO, 0, _("Prior failed job found in catalog. Upgrading to %s.\n"),
                   level_to_str(JobLevel));
                bsnprintf(since, since_len, _(" (upgraded from %s)"),
                   level_to_str(jcr->JobLevel));
index f7c26c9180d26bf7d80225a53c41c003e493dab4..929726b7b8e1fb67244341d1992e2e8b29d8317d 100644 (file)
@@ -400,6 +400,7 @@ public:
    bool spool_data;                   /* set to spool data */
    bool spooling;                     /* set when actually spooling */
    bool despooling;                   /* set when despooling */
+   bool despool_wait;                 /* waiting for despooling */
    bool dev_locked;                   /* set if dev already locked */
    bool NewVol;                       /* set if new Volume mounted */
    bool WroteVol;                     /* set if Volume written */
index dd22f26bb1436489807b597538e784bea1a8911a..62675c67c2212ce7c55d7d9ea0d6b015e017067d 100644 (file)
@@ -207,9 +207,11 @@ static bool despool_data(DCR *dcr, bool commit)
       Jmsg(jcr, M_INFO, 0, _("Writing spooled data to Volume. Despooling %s bytes ...\n"),
          edit_uint64_with_commas(jcr->dcr->job_spool_size, ec1));
    }
+   dcr->despool_wait = true;
    dcr->spooling = false;
-   dcr->despooling = true;
    lock_device(dcr->dev);
+   dcr->despool_wait = false;
+   dcr->despooling = true;
    dcr->dev_locked = true;
 
    /*
@@ -282,10 +284,10 @@ static bool despool_data(DCR *dcr, bool commit)
    rdcr->jcr = NULL;
    free_dcr(rdcr);
    free(rdev);
-   unlock_device(dcr->dev);
    dcr->dev_locked = false;
    dcr->spooling = true;           /* turn on spooling again */
    dcr->despooling = false;
+   unlock_device(dcr->dev);
    return ok;
 }
 
index 2a951e6cbb67e1a4c46934d63f51fa34c39ca36a..404f47ae021f583d76b9ec88aee820713ec7e3c4 100644 (file)
@@ -307,8 +307,8 @@ static void list_running_jobs(BSOCK *user)
                    dcr->pool_name,
                    dcr->dev?dcr->dev->print_name(): 
                             dcr->device->device_name);
-            bnet_fsend(user, _("    spooling=%d despooling=%d devblocked=%d\n"),
-                   dcr->spooling, dcr->despooling, dcr->dev->dev_blocked); 
+            bnet_fsend(user, _("    spooling=%d despooling=%d despool_wait=%d\n"),
+                   dcr->spooling, dcr->despooling, dcr->despool_wait); 
          }
          sec = time(NULL) - jcr->run_time;
          if (sec <= 0) {
index ff7aca9b559fc489478cc244d5624ae2469c03b7..54eac9bcda938d808f366f13caa40412a96ccb53 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "1.39.16"
-#define BDATE   "19 July 2006"
-#define LSMDATE "19Jul06"
+#define BDATE   "22 July 2006"
+#define LSMDATE "22Jul06"
 
 /* Debug flags */
 #undef  DEBUG