]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/make_mysql_tables.in
Implement restore files
[bacula/bacula] / bacula / src / cats / make_mysql_tables.in
index 22acc913f7db1f7d1d8bcdfda0d4bdf00f55701d..1ce0d6aadcab7d5c15fdce62bb6a4701ab40647a 100644 (file)
@@ -4,7 +4,7 @@
 #
 bindir=@SQL_BINDIR@
 
-if $bindir/mysql -f <<END-OF-DATA
+if $bindir/mysql $* -f <<END-OF-DATA
 USE bacula;
 CREATE TABLE Filename (
   FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
@@ -21,13 +21,13 @@ CREATE TABLE Path (
    );
 
 
-# ****FIXME**** make FileId BIGINT *****
+# ****FIXME**** make FileId BIGINT someday when MySQL works *****
 CREATE TABLE File (
    FileId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    FileIndex INTEGER UNSIGNED NOT NULL,
    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
    PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
-   FilenameId INTEGER NOT NULL REFERENCES Filename,
+   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
    MarkId INTEGER UNSIGNED NOT NULL DEFAULT 0,
    LStat TINYBLOB NOT NULL,
    MD5 TINYBLOB NOT NULL,
@@ -42,7 +42,6 @@ CREATE TABLE Job (
    JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    Job TINYBLOB NOT NULL,
    Name TINYBLOB NOT NULL,
-   PurgedFiles TINYINT NOT NULL DEFAULT 0,
    Type BINARY(1) NOT NULL,
    Level BINARY(1) NOT NULL,
    ClientId INTEGER NOT NULL REFERENCES Client,
@@ -59,6 +58,8 @@ CREATE TABLE Job (
    JobMissingFiles INTEGER UNSIGNED NOT NULL,
    PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
    FileSetId INTEGER UNSIGNED NOT NULL REFERENCES FileSet,
+   PurgedFiles TINYINT NOT NULL DEFAULT 0,
+   HasBase TINYINT NOT NULL DEFAULT 0,
    PRIMARY KEY(JobId),
    INDEX (Name(128))
    );
@@ -68,6 +69,7 @@ CREATE TABLE FileSet (
    FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    FileSet TINYBLOB NOT NULL,
    MD5 TINYBLOB NOT NULL,
+   CreateTime DATETIME NOT NULL,
    PRIMARY KEY(FileSetId)
    );
 
@@ -81,6 +83,7 @@ CREATE TABLE JobMedia (
    EndFile INTEGER UNSIGNED NOT NULL,
    StartBlock INTEGER UNSIGNED NOT NULL,
    EndBlock INTEGER UNSIGNED NOT NULL,
+   VolIndex INTEGER UNSIGNED NOT NULL,
    PRIMARY KEY(JobMediaId),
    INDEX (JobId, MediaId)
    );
@@ -102,12 +105,15 @@ CREATE TABLE Media (
    VolBytes BIGINT UNSIGNED NOT NULL,
    VolErrors INTEGER UNSIGNED NOT NULL,
    VolWrites INTEGER UNSIGNED NOT NULL,
-   VolMaxBytes BIGINT UNSIGNED NOT NULL,
+   MaxVolBytes BIGINT UNSIGNED NOT NULL,
    VolCapacityBytes BIGINT UNSIGNED NOT NULL,
    VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
-    'Read-Only', 'Disabled', 'Error', 'Busy') NOT NULL,
+    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
    Recycle TINYINT NOT NULL,
    VolRetention BIGINT UNSIGNED NOT NULL,
+   VolUseDuration BIGINT UNSIGNED NOT NULL,
+   MaxVolJobs INTEGER UNSIGNED NOT NULL,
+   MaxVolFiles INTEGER UNSIGNED NOT NULL,
    PRIMARY KEY(MediaId),
    INDEX (PoolId)
    );
@@ -121,6 +127,10 @@ CREATE TABLE Pool (
    UseCatalog TINYINT NOT NULL,
    AcceptAnyVolume TINYINT DEFAULT 0,
    VolRetention BIGINT UNSIGNED NOT NULL,
+   VolUseDuration BIGINT UNSIGNED NOT NULL,
+   MaxVolJobs INTEGER UNSIGNED NOT NULL,
+   MaxVolFiles INTEGER UNSIGNED NOT NULL,
+   MaxVolBytes BIGINT UNSIGNED NOT NULL,
    AutoPrune TINYINT DEFAULT 0,
    Recycle TINYINT DEFAULT 0,
    PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration') NOT NULL,
@@ -141,56 +151,44 @@ CREATE TABLE Client (
    PRIMARY KEY(ClientId)
    );
 
+CREATE TABLE BaseFiles (
+   BaseId INTEGER UNSIGNED AUTO_INCREMENT,
+   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+   FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
+   FileIndex INTEGER UNSIGNED,
+   PRIMARY KEY(BaseId)
+   );
+
+CREATE TABLE UnsavedFiles (
+   UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
+   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
+   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
+   PRIMARY KEY (UnsavedId)
+   );
+
+
 CREATE TABLE Version (
    VersionId INTEGER UNSIGNED NOT NULL 
    );
 
 -- Initialize Version           
-INSERT INTO Version (VersionId) VALUES (2);
+INSERT INTO Version (VersionId) VALUES (6);
 
 CREATE TABLE Counters (
    Counter TINYBLOB NOT NULL,
-   PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
    MinValue INTEGER,
    MaxValue INTEGER,
    CurrentValue INTEGER,
-   WrapCounter TINYBLOB NOT NULL
+   WrapCounter TINYBLOB NOT NULL,
+   PRIMARY KEY (Counter(128))
    );
 
-## Experimental
-#CREATE TABLE FileSave (
-#   FileSaveId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
-#   FileIndex INTEGER UNSIGNED NOT NULL,
-#   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
-#   FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
-#   VLStat TINYBLOB NOT NULL,
-#   PRIMARY KEY(FileSaveId),
-#   );
-
-# Experimental stuff below. Not used.
-# Invariant part of File
-#CREATE TABLE BaseFile (
-#   FileId INTEGER UNSIGNED AUTOINCREMENT,
-#   PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
-#   FilenameId INTEGER REFERENCES Filename NOT NULL,
-#   LStat VARCHAR(255) NOT NULL,
-#   MD5 VARCHAR(25) NOT NULL,
-#   PRIMARY KEY(FileId) 
-#   );
-
-# Variable part of File
-#CREATE TABLE FileSave (
-#   FileId INTEGER UNSIGNED REFERENCES BaseFile NOT NULL,
-#   FileIndex INTEGER UNSIGNED NOT NULL,
-#   JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
-#   PRIMARY KEY(FileId) 
-#   );
-
 
 END-OF-DATA
 then
-   echo "Creation of Bacula tables succeeded."
+   echo "Creation of Bacula MySQL tables succeeded."
 else
-   echo "Creation of Bacula tables failed."
+   echo "Creation of Bacula MySQL tables failed."
 fi
 exit 0