]> git.sur5r.net Git - bacula/bacula/commitdiff
Update Win32/64 table creation to have new DB version 11 format
authorKern Sibbald <kern@sibbald.com>
Tue, 28 Apr 2009 06:58:27 +0000 (06:58 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 28 Apr 2009 06:58:27 +0000 (06:58 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8757 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/win32/cats/make_mysql_tables.sql
bacula/src/win32/cats/make_postgresql_tables.sql
bacula/src/win32/cats/make_sqlite3_tables.sql
bacula/technotes

index 4f6833f1fe2b6c0a15763da659ce9f282cba9923..86a3c8b48458280a60cedf4ed4359d2cd94dada2 100644 (file)
-USE bacula;\r
---\r
--- Note, we use BLOB rather than TEXT because in MySQL,\r
---  BLOBs are identical to TEXT except that BLOB is case\r
---  sensitive in sorts, which is what we want, and TEXT\r
---  is case insensitive.\r
---\r
-CREATE TABLE Filename (\r
-  FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-  Name BLOB NOT NULL,\r
-  PRIMARY KEY(FilenameId),\r
-  INDEX (Name(255))\r
-  );\r
-\r
-CREATE TABLE Path (\r
-   PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Path BLOB NOT NULL,\r
-   PRIMARY KEY(PathId),\r
-   INDEX (Path(255))\r
-   );\r
-\r
-\r
-CREATE TABLE File (\r
-   FileId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   FileIndex INTEGER UNSIGNED DEFAULT 0,\r
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
-   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,\r
-   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,\r
-   MarkId INTEGER UNSIGNED DEFAULT 0,\r
-   LStat TINYBLOB NOT NULL,\r
-   MD5 TINYBLOB,\r
-   PRIMARY KEY(FileId),\r
-   INDEX (JobId),\r
-   INDEX (JobId, PathId, FilenameId)\r
-   );\r
-\r
-#\r
-# Possibly add one or more of the following indexes\r
-#  to the above File table if your Verifies are\r
-#  too slow.\r
-#\r
-#  INDEX (PathId),\r
-#  INDEX (FilenameId),\r
-#  INDEX (FilenameId, PathId)\r
-#  INDEX (JobId),\r
-#\r
-\r
-CREATE TABLE MediaType (\r
-   MediaTypeId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   MediaType TINYBLOB NOT NULL,\r
-   ReadOnly TINYINT DEFAULT 0,\r
-   PRIMARY KEY(MediaTypeId)\r
-   );\r
-\r
-CREATE TABLE Storage (\r
-   StorageId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Name TINYBLOB NOT NULL,\r
-   AutoChanger TINYINT DEFAULT 0,\r
-   PRIMARY KEY(StorageId)\r
-   );\r
-\r
-CREATE TABLE Device (\r
-   DeviceId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Name TINYBLOB NOT NULL,\r
-   MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,\r
-   StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,\r
-   DevMounts INTEGER UNSIGNED DEFAULT 0,\r
-   DevReadBytes BIGINT UNSIGNED DEFAULT 0,\r
-   DevWriteBytes BIGINT UNSIGNED DEFAULT 0,\r
-   DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
-   DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
-   DevReadTime BIGINT UNSIGNED DEFAULT 0,\r
-   DevWriteTime BIGINT UNSIGNED DEFAULT 0,\r
-   DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
-   DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
-   CleaningDate DATETIME DEFAULT 0,\r
-   CleaningPeriod BIGINT UNSIGNED DEFAULT 0,\r
-   PRIMARY KEY(DeviceId)\r
-   );\r
-\r
-\r
-CREATE TABLE Job (\r
-   JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Job TINYBLOB NOT NULL,\r
-   Name TINYBLOB NOT NULL,\r
-   Type BINARY(1) NOT NULL,\r
-   Level BINARY(1) NOT NULL,\r
-   ClientId INTEGER DEFAULT 0 REFERENCES Client,\r
-   JobStatus BINARY(1) NOT NULL,\r
-   SchedTime DATETIME DEFAULT 0,\r
-   StartTime DATETIME DEFAULT 0,\r
-   EndTime DATETIME DEFAULT 0,\r
-   RealEndTime DATETIME DEFAULT 0,\r
-   JobTDate BIGINT UNSIGNED DEFAULT 0,\r
-   VolSessionId INTEGER UNSIGNED DEFAULT 0,\r
-   VolSessionTime INTEGER UNSIGNED DEFAULT 0,\r
-   JobFiles INTEGER UNSIGNED DEFAULT 0,\r
-   JobBytes BIGINT UNSIGNED DEFAULT 0,\r
-   JobErrors INTEGER UNSIGNED DEFAULT 0,\r
-   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,\r
-   PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
-   FileSetId INTEGER UNSIGNED DEFAULT 0 REFERENCES FileSet,\r
-   PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,\r
-   PurgedFiles TINYINT DEFAULT 0,\r
-   HasBase TINYINT DEFAULT 0,\r
-   PRIMARY KEY(JobId),\r
-   INDEX (Name(128))\r
-   );\r
-\r
-\r
-CREATE TABLE Location (\r
-   LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Location TINYBLOB NOT NULL,\r
-   Cost INTEGER DEFAULT 0,\r
-   Enabled TINYINT,\r
-   PRIMARY KEY(LocationId)\r
-   );\r
-\r
-CREATE TABLE LocationLog (\r
-   LocLogId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Date DATETIME DEFAULT 0,\r
-   Comment BLOB NOT NULL,\r
-   MediaId INTEGER UNSIGNED DEFAULT 0 REFERENCES Media,\r
-   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,\r
-   NewVolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',\r
-    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,\r
-   NewEnabled TINYINT,\r
-   PRIMARY KEY(LocLogId)\r
-);\r
-\r
-\r
-# \r
-CREATE TABLE FileSet (\r
-   FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   FileSet TINYBLOB NOT NULL,\r
-   MD5 TINYBLOB,\r
-   CreateTime DATETIME DEFAULT 0,\r
-   PRIMARY KEY(FileSetId)\r
-   );\r
-\r
-CREATE TABLE JobMedia (\r
-   JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
-   MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,\r
-   FirstIndex INTEGER UNSIGNED DEFAULT 0,\r
-   LastIndex INTEGER UNSIGNED DEFAULT 0,\r
-   StartFile INTEGER UNSIGNED DEFAULT 0,\r
-   EndFile INTEGER UNSIGNED DEFAULT 0,\r
-   StartBlock INTEGER UNSIGNED DEFAULT 0,\r
-   EndBlock INTEGER UNSIGNED DEFAULT 0,\r
-   VolIndex INTEGER UNSIGNED DEFAULT 0,\r
-   Copy INTEGER UNSIGNED DEFAULT 0,\r
-   Stripe INTEGER UNSIGNED DEFAULT 0,\r
-   PRIMARY KEY(JobMediaId),\r
-   INDEX (JobId, MediaId)\r
-   );\r
-\r
-\r
-CREATE TABLE Media (\r
-   MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   VolumeName TINYBLOB NOT NULL,\r
-   Slot INTEGER DEFAULT 0,\r
-   PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
-   MediaType TINYBLOB NOT NULL,\r
-   MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,\r
-   LabelType TINYINT DEFAULT 0,\r
-   FirstWritten DATETIME DEFAULT 0,\r
-   LastWritten DATETIME DEFAULT 0,\r
-   LabelDate DATETIME DEFAULT 0,\r
-   VolJobs INTEGER UNSIGNED DEFAULT 0,\r
-   VolFiles INTEGER UNSIGNED DEFAULT 0,\r
-   VolBlocks INTEGER UNSIGNED DEFAULT 0,\r
-   VolMounts INTEGER UNSIGNED DEFAULT 0,\r
-   VolBytes BIGINT UNSIGNED DEFAULT 0,\r
-   VolParts INTEGER UNSIGNED DEFAULT 0,\r
-   VolErrors INTEGER UNSIGNED DEFAULT 0,\r
-   VolWrites INTEGER UNSIGNED DEFAULT 0,\r
-   VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,\r
-   VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',\r
-    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,\r
-   Enabled TINYINT DEFAULT 1,\r
-   Recycle TINYINT DEFAULT 0,\r
-   VolRetention BIGINT UNSIGNED DEFAULT 0,\r
-   VolUseDuration BIGINT UNSIGNED DEFAULT 0,\r
-   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,\r
-   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,\r
-   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,\r
-   InChanger TINYINT DEFAULT 0,\r
-   StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,\r
-   DeviceId INTEGER UNSIGNED DEFAULT 0 REFERENCES Device,\r
-   MediaAddressing TINYINT DEFAULT 0,\r
-   VolReadTime BIGINT UNSIGNED DEFAULT 0,\r
-   VolWriteTime BIGINT UNSIGNED DEFAULT 0,\r
-   EndFile INTEGER UNSIGNED DEFAULT 0,\r
-   EndBlock INTEGER UNSIGNED DEFAULT 0,\r
-   LocationId INTEGER UNSIGNED DEFAULT 0 REFERENCES Location,\r
-   RecycleCount INTEGER UNSIGNED DEFAULT 0,\r
-   InitialWrite DATETIME DEFAULT 0,\r
-   ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
-   RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
-   Comment BLOB,\r
-   PRIMARY KEY(MediaId),\r
-   INDEX (PoolId)\r
-   );\r
-\r
-CREATE INDEX inx8 ON Media (PoolId);\r
-\r
-\r
-\r
-CREATE TABLE Pool (\r
-   PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Name TINYBLOB NOT NULL,\r
-   NumVols INTEGER UNSIGNED DEFAULT 0,\r
-   MaxVols INTEGER UNSIGNED DEFAULT 0,\r
-   UseOnce TINYINT DEFAULT 0,\r
-   UseCatalog TINYINT DEFAULT 0,\r
-   AcceptAnyVolume TINYINT DEFAULT 0,\r
-   VolRetention BIGINT UNSIGNED DEFAULT 0,\r
-   VolUseDuration BIGINT UNSIGNED DEFAULT 0,\r
-   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,\r
-   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,\r
-   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,\r
-   AutoPrune TINYINT DEFAULT 0,\r
-   Recycle TINYINT DEFAULT 0,\r
-   PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,\r
-   LabelType TINYINT DEFAULT 0,\r
-   LabelFormat TINYBLOB,\r
-   Enabled TINYINT DEFAULT 1,\r
-   ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
-   RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
-   NextPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
-   MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,\r
-   MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,\r
-   MigrationTime BIGINT UNSIGNED DEFAULT 0,\r
-   UNIQUE (Name(128)),\r
-   PRIMARY KEY (PoolId)\r
-   );\r
-\r
-\r
-CREATE TABLE Client (\r
-   ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
-   Name TINYBLOB NOT NULL,\r
-   Uname TINYBLOB NOT NULL,      /* full uname -a of client */\r
-   AutoPrune TINYINT DEFAULT 0,\r
-   FileRetention BIGINT UNSIGNED DEFAULT 0,\r
-   JobRetention  BIGINT UNSIGNED DEFAULT 0,\r
-   UNIQUE (Name(128)),\r
-   PRIMARY KEY(ClientId)\r
-   );\r
-\r
-CREATE TABLE Log (\r
-   LogId INTEGER UNSIGNED AUTO_INCREMENT,\r
-   JobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,\r
-   Time DATETIME DEFAULT 0,\r
-   LogText BLOB NOT NULL,\r
-   PRIMARY KEY(LogId),\r
-   INDEX (JobId)\r
-   );\r
-\r
-\r
-CREATE TABLE BaseFiles (\r
-   BaseId INTEGER UNSIGNED AUTO_INCREMENT,\r
-   BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
-   FileId INTEGER UNSIGNED NOT NULL REFERENCES File,\r
-   FileIndex INTEGER UNSIGNED,\r
-   PRIMARY KEY(BaseId)\r
-   );\r
-\r
-CREATE TABLE UnsavedFiles (\r
-   UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,\r
-   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
-   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,\r
-   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,\r
-   PRIMARY KEY (UnsavedId)\r
-   );\r
-\r
-\r
-\r
-CREATE TABLE Counters (\r
-   Counter TINYBLOB NOT NULL,\r
-   MinValue INTEGER DEFAULT 0,\r
-   MaxValue INTEGER DEFAULT 0,\r
-   CurrentValue INTEGER DEFAULT 0,\r
-   WrapCounter TINYBLOB NOT NULL,\r
-   PRIMARY KEY (Counter(128))\r
-   );\r
-\r
-CREATE TABLE CDImages (\r
-   MediaId INTEGER UNSIGNED NOT NULL,\r
-   LastBurn DATETIME NOT NULL,\r
-   PRIMARY KEY (MediaId)\r
-   );\r
-\r
-CREATE TABLE Status (\r
-   JobStatus CHAR(1) BINARY NOT NULL,\r
-   JobStatusLong BLOB, \r
-   PRIMARY KEY (JobStatus)\r
-   );\r
-\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('C', 'Created, not yet running'),\r
-   ('R', 'Running'),\r
-   ('B', 'Blocked'),\r
-   ('T', 'Completed successfully'),\r
-   ('E', 'Terminated with errors'),\r
-   ('e', 'Non-fatal error'),\r
-   ('f', 'Fatal error'),\r
-   ('D', 'Verify found differences'),\r
-   ('A', 'Canceled by user'),\r
-   ('F', 'Waiting for Client'),\r
-   ('S', 'Waiting for Storage daemon'),\r
-   ('m', 'Waiting for new media'),\r
-   ('M', 'Waiting for media mount'),\r
-   ('s', 'Waiting for storage resource'),\r
-   ('j', 'Waiting for job resource'),\r
-   ('c', 'Waiting for client resource'),\r
-   ('d', 'Waiting on maximum jobs'),\r
-   ('t', 'Waiting on start time'),\r
-   ('p', 'Waiting on higher priority jobs');\r
-\r
-CREATE TABLE Version (\r
-   VersionId INTEGER UNSIGNED NOT NULL \r
-   );\r
-\r
--- Initialize Version           \r
-INSERT INTO Version (VersionId) VALUES (10);\r
+USE ${db_name};
+--
+-- Note, we use BLOB rather than TEXT because in MySQL,
+--  BLOBs are identical to TEXT except that BLOB is case
+--  sensitive in sorts, which is what we want, and TEXT
+--  is case insensitive.
+--
+CREATE TABLE Filename (
+  FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+  Name BLOB NOT NULL,
+  PRIMARY KEY(FilenameId),
+  INDEX (Name(255))
+  );
+
+CREATE TABLE Path (
+   PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Path BLOB NOT NULL,
+   PRIMARY KEY(PathId),
+   INDEX (Path(255))
+   );
+
+
+CREATE TABLE File (
+   FileId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
+   FileIndex INTEGER UNSIGNED DEFAULT 0,
+   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+   PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
+   FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
+   MarkId INTEGER UNSIGNED DEFAULT 0,
+   LStat TINYBLOB NOT NULL,
+   MD5 TINYBLOB,
+   PRIMARY KEY(FileId),
+   INDEX (JobId),
+   INDEX (JobId, PathId, FilenameId)
+   );
+
+--
+-- Possibly add one or more of the following indexes
+--  to the above File table if your Verifies are
+--  too slow.
+--
+--  INDEX (PathId),
+--  INDEX (FilenameId),
+--  INDEX (FilenameId, PathId)
+--  INDEX (JobId),
+--
+
+CREATE TABLE MediaType (
+   MediaTypeId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   MediaType TINYBLOB NOT NULL,
+   ReadOnly TINYINT DEFAULT 0,
+   PRIMARY KEY(MediaTypeId)
+   );
+
+CREATE TABLE Storage (
+   StorageId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Name TINYBLOB NOT NULL,
+   AutoChanger TINYINT DEFAULT 0,
+   PRIMARY KEY(StorageId)
+   );
+
+CREATE TABLE Device (
+   DeviceId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Name TINYBLOB NOT NULL,
+   MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,
+   StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,
+   DevMounts INTEGER UNSIGNED DEFAULT 0,
+   DevReadBytes BIGINT UNSIGNED DEFAULT 0,
+   DevWriteBytes BIGINT UNSIGNED DEFAULT 0,
+   DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
+   DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
+   DevReadTime BIGINT UNSIGNED DEFAULT 0,
+   DevWriteTime BIGINT UNSIGNED DEFAULT 0,
+   DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
+   DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
+   CleaningDate DATETIME DEFAULT 0,
+   CleaningPeriod BIGINT UNSIGNED DEFAULT 0,
+   PRIMARY KEY(DeviceId)
+   );
+
+
+CREATE TABLE Job (
+   JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Job TINYBLOB NOT NULL,
+   Name TINYBLOB NOT NULL,
+   Type BINARY(1) NOT NULL,
+   Level BINARY(1) NOT NULL,
+   ClientId INTEGER DEFAULT 0 REFERENCES Client,
+   JobStatus BINARY(1) NOT NULL,
+   SchedTime DATETIME DEFAULT 0,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+   PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+   FileSetId INTEGER UNSIGNED DEFAULT 0 REFERENCES FileSet,
+   PriorJobId INTEGER UNSIGNED DEFAULT 0 REFERENCES Job,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0,
+   PRIMARY KEY(JobId),
+   INDEX (Name(128))
+   );
+
+-- Create a table like Job for long term statistics 
+CREATE TABLE JobHisto (
+   JobId INTEGER UNSIGNED NOT NULL,
+   Job TINYBLOB NOT NULL,
+   Name TINYBLOB NOT NULL,
+   Type BINARY(1) NOT NULL,
+   Level BINARY(1) NOT NULL,
+   ClientId INTEGER DEFAULT 0,
+   JobStatus BINARY(1) NOT NULL,
+   SchedTime DATETIME DEFAULT 0,
+   StartTime DATETIME DEFAULT 0,
+   EndTime DATETIME DEFAULT 0,
+   RealEndTime DATETIME DEFAULT 0,
+   JobTDate BIGINT UNSIGNED DEFAULT 0,
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
+   JobFiles INTEGER UNSIGNED DEFAULT 0,
+   JobBytes BIGINT UNSIGNED DEFAULT 0,
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,
+   JobErrors INTEGER UNSIGNED DEFAULT 0,
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
+   PoolId INTEGER UNSIGNED DEFAULT 0,
+   FileSetId INTEGER UNSIGNED DEFAULT 0,
+   PriorJobId INTEGER UNSIGNED DEFAULT 0,
+   PurgedFiles TINYINT DEFAULT 0,
+   HasBase TINYINT DEFAULT 0,
+   INDEX (StartTime)
+   );
+
+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 Location,
+   NewVolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
+    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
+   NewEnabled TINYINT,
+   PRIMARY KEY(LocLogId)
+);
+
+
+CREATE TABLE FileSet (
+   FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   FileSet TINYBLOB NOT NULL,
+   MD5 TINYBLOB,
+   CreateTime DATETIME DEFAULT 0,
+   PRIMARY KEY(FileSetId)
+   );
+
+CREATE TABLE JobMedia (
+   JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+   MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,
+   FirstIndex INTEGER UNSIGNED DEFAULT 0,
+   LastIndex INTEGER UNSIGNED DEFAULT 0,
+   StartFile INTEGER UNSIGNED DEFAULT 0,
+   EndFile INTEGER UNSIGNED DEFAULT 0,
+   StartBlock INTEGER UNSIGNED DEFAULT 0,
+   EndBlock INTEGER UNSIGNED DEFAULT 0,
+   VolIndex INTEGER UNSIGNED DEFAULT 0,
+   Copy INTEGER UNSIGNED DEFAULT 0,
+   Stripe INTEGER UNSIGNED DEFAULT 0,
+   PRIMARY KEY(JobMediaId),
+   INDEX (JobId, MediaId)
+   );
+
+
+CREATE TABLE Media (
+   MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   VolumeName TINYBLOB NOT NULL,
+   Slot INTEGER DEFAULT 0,
+   PoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+   MediaType TINYBLOB NOT NULL,
+   MediaTypeId INTEGER UNSIGNED DEFAULT 0 REFERENCES MediaType,
+   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 ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
+    'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
+   Enabled TINYINT DEFAULT 1,
+   Recycle TINYINT DEFAULT 0,
+   ActionOnPurge     TINYINT    DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   InChanger TINYINT DEFAULT 0,
+   StorageId INTEGER UNSIGNED DEFAULT 0 REFERENCES Storage,
+   DeviceId INTEGER UNSIGNED DEFAULT 0 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 DEFAULT 0 REFERENCES Location,
+   RecycleCount INTEGER UNSIGNED DEFAULT 0,
+   InitialWrite DATETIME DEFAULT 0,
+   ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+   RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+   Comment BLOB,
+   PRIMARY KEY(MediaId),
+   UNIQUE (VolumeName(128)),
+   INDEX (PoolId)
+   );
+
+CREATE TABLE Pool (
+   PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Name TINYBLOB NOT NULL,
+   NumVols INTEGER UNSIGNED DEFAULT 0,
+   MaxVols INTEGER UNSIGNED DEFAULT 0,
+   UseOnce TINYINT DEFAULT 0,
+   UseCatalog TINYINT DEFAULT 0,
+   AcceptAnyVolume TINYINT DEFAULT 0,
+   VolRetention BIGINT UNSIGNED DEFAULT 0,
+   VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+   MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+   MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+   MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+   AutoPrune TINYINT DEFAULT 0,
+   Recycle TINYINT DEFAULT 0,
+   ActionOnPurge     TINYINT    DEFAULT 0,
+   PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,
+   LabelType TINYINT DEFAULT 0,
+   LabelFormat TINYBLOB,
+   Enabled TINYINT DEFAULT 1,
+   ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+   RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+   NextPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
+   MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,
+   MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,
+   MigrationTime BIGINT UNSIGNED DEFAULT 0,
+   UNIQUE (Name(128)),
+   PRIMARY KEY (PoolId)
+   );
+
+
+CREATE TABLE Client (
+   ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+   Name TINYBLOB NOT NULL,
+   Uname TINYBLOB NOT NULL,       /* full uname -a of client */
+   AutoPrune TINYINT DEFAULT 0,
+   FileRetention BIGINT UNSIGNED DEFAULT 0,
+   JobRetention  BIGINT UNSIGNED DEFAULT 0,
+   UNIQUE (Name(128)),
+   PRIMARY KEY(ClientId)
+   );
+
+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 BaseFiles (
+   BaseId INTEGER UNSIGNED AUTO_INCREMENT,
+   BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
+   FileId BIGINT 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 Counters (
+   Counter TINYBLOB NOT NULL,
+   MinValue INTEGER DEFAULT 0,
+   MaxValue INTEGER DEFAULT 0,
+   CurrentValue INTEGER DEFAULT 0,
+   WrapCounter TINYBLOB NOT NULL,
+   PRIMARY KEY (Counter(128))
+   );
+
+CREATE TABLE CDImages (
+   MediaId INTEGER UNSIGNED NOT NULL,
+   LastBurn DATETIME NOT NULL,
+   PRIMARY KEY (MediaId)
+   );
+
+CREATE TABLE Status (
+   JobStatus CHAR(1) BINARY NOT NULL,
+   JobStatusLong BLOB, 
+   PRIMARY KEY (JobStatus)
+   );
+
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('C', 'Created, not yet running'),
+   ('R', 'Running'),
+   ('B', 'Blocked'),
+   ('T', 'Completed successfully'),
+   ('E', 'Terminated with errors'),
+   ('e', 'Non-fatal error'),
+   ('f', 'Fatal error'),
+   ('D', 'Verify found differences'),
+   ('A', 'Canceled by user'),
+   ('F', 'Waiting for Client'),
+   ('S', 'Waiting for Storage daemon'),
+   ('m', 'Waiting for new media'),
+   ('M', 'Waiting for media mount'),
+   ('s', 'Waiting for storage resource'),
+   ('j', 'Waiting for job resource'),
+   ('c', 'Waiting for client resource'),
+   ('d', 'Waiting on maximum jobs'),
+   ('t', 'Waiting on start time'),
+   ('p', 'Waiting on higher priority jobs'),
+   ('i', 'Doing batch insert file records'),
+   ('a', 'SD despooling attributes');
+
+CREATE TABLE Version (
+   VersionId INTEGER UNSIGNED NOT NULL 
+   );
+
+-- Initialize Version            
+INSERT INTO Version (VersionId) VALUES (11);
+
index 3991926fe6ef916003786f4c2b9eeb5f890f222e..e7d0d86a0a5c45f8052d0c866eeb49b9e575c6ca 100644 (file)
-CREATE TABLE filename\r
-(\r
-    filenameid       serial      not null,\r
-    name             text        not null,\r
-    primary key (filenameid)\r
-);\r
-\r
-CREATE INDEX filename_name_idx on filename (name);\r
-\r
-CREATE TABLE path\r
-(\r
-    pathid           serial      not null,\r
-    path             text        not null,\r
-    primary key (pathid)\r
-);\r
-\r
-CREATE INDEX path_name_idx on path (path);\r
-\r
-CREATE TABLE file\r
-(\r
-    fileid           serial      not null,\r
-    fileindex        integer     not null  default 0,\r
-    jobid            integer     not null,\r
-    pathid           integer     not null,\r
-    filenameid       integer     not null,\r
-    markid           integer     not null  default 0,\r
-    lstat            text        not null,\r
-    md5              text        not null,\r
-    primary key (fileid)\r
-);\r
-\r
-CREATE INDEX file_jobid_idx on file (jobid);\r
-CREATE INDEX file_fp_idx on file (filenameid, pathid);\r
-\r
---\r
--- Possibly add one or more of the following indexes\r
---  if your Verifies are too slow.\r
---\r
--- CREATE INDEX file_pathid_idx on file(pathid);\r
--- CREATE INDEX file_filenameid_idx on file(filenameid);\r
--- CREATE INDEX file_jpfid_idx on file (jobid, pathid, filenameid);\r
-\r
-CREATE TABLE job\r
-(\r
-    jobid            serial      not null,\r
-    job              text        not null,\r
-    name             text        not null,\r
-    type             char(1)     not null,\r
-    level            char(1)     not null,\r
-    clientid         integer     default 0,\r
-    jobstatus        char(1)     not null,\r
-    schedtime        timestamp   without time zone,\r
-    starttime        timestamp   without time zone,\r
-    endtime          timestamp   without time zone,\r
-    realendtime       timestamp   without time zone,\r
-    jobtdate         bigint      default 0,\r
-    volsessionid      integer    default 0,\r
-    volsessiontime    integer    default 0,\r
-    jobfiles         integer     default 0,\r
-    jobbytes         bigint      default 0,\r
-    joberrors        integer     default 0,\r
-    jobmissingfiles   integer    default 0,\r
-    poolid           integer     default 0,\r
-    filesetid        integer     default 0,\r
-    purgedfiles       smallint   default 0,\r
-    hasbase          smallint    default 0,\r
-    priorjobid       integer     default 0,\r
-    primary key (jobid)\r
-);\r
-\r
-CREATE INDEX job_name_idx on job (name);\r
-\r
-CREATE TABLE Location (\r
-   LocationId        serial      not null,\r
-   Location          text        not null,\r
-   Cost              integer     default 0,\r
-   Enabled           smallint,\r
-   primary key (LocationId)\r
-);\r
-\r
-\r
-CREATE TABLE fileset\r
-(\r
-    filesetid        serial      not null,\r
-    fileset          text        not null,\r
-    md5              text        not null,\r
-    createtime       timestamp without time zone not null,\r
-    primary key (filesetid)\r
-);\r
-\r
-CREATE INDEX fileset_name_idx on fileset (fileset);\r
-\r
-CREATE TABLE jobmedia\r
-(\r
-    jobmediaid       serial      not null,\r
-    jobid            integer     not null,\r
-    mediaid          integer     not null,\r
-    firstindex       integer     default 0,\r
-    lastindex        integer     default 0,\r
-    startfile        integer     default 0,\r
-    endfile          integer     default 0,\r
-    startblock       bigint      default 0,\r
-    endblock         bigint      default 0,\r
-    volindex         integer     default 0,\r
-    copy             integer     default 0,\r
-    primary key (jobmediaid)\r
-);\r
-\r
-CREATE INDEX job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);\r
-\r
-CREATE TABLE media\r
-(\r
-    mediaid          serial      not null,\r
-    volumename       text        not null,\r
-    slot             integer     default 0,\r
-    poolid           integer     default 0,\r
-    mediatype        text        not null,\r
-    mediatypeid       integer    default 0,\r
-    labeltype        integer     default 0,\r
-    firstwritten      timestamp   without time zone,\r
-    lastwritten       timestamp   without time zone,\r
-    labeldate        timestamp   without time zone,\r
-    voljobs          integer     default 0,\r
-    volfiles         integer     default 0,\r
-    volblocks        integer     default 0,\r
-    volmounts        integer     default 0,\r
-    volbytes         bigint      default 0,\r
-    volparts         integer     default 0,\r
-    volerrors        integer     default 0,\r
-    volwrites        integer     default 0,\r
-    volcapacitybytes  bigint     default 0,\r
-    volstatus        text        not null\r
-       check (volstatus in ('Full','Archive','Append',\r
-             'Recycle','Purged','Read-Only','Disabled',\r
-             'Error','Busy','Used','Cleaning','Scratch')),\r
-    enabled          smallint    default 1,\r
-    recycle          smallint    default 0,\r
-    volretention      bigint     default 0,\r
-    voluseduration    bigint     default 0,\r
-    maxvoljobs       integer     default 0,\r
-    maxvolfiles       integer    default 0,\r
-    maxvolbytes       bigint     default 0,\r
-    inchanger        smallint    default 0,\r
-    StorageId        integer     default 0,\r
-    DeviceId         integer     default 0,\r
-    mediaaddressing   smallint   default 0,\r
-    volreadtime       bigint     default 0,\r
-    volwritetime      bigint     default 0,\r
-    endfile          integer     default 0,\r
-    endblock         bigint      default 0,\r
-    LocationId       integer     default 0,\r
-    recyclecount      integer    default 0,\r
-    initialwrite      timestamp   without time zone,\r
-    scratchpoolid     integer    default 0,\r
-    recyclepoolid     integer    default 0,\r
-    comment          text,\r
-    primary key (mediaid)\r
-);\r
-\r
-create unique index media_volumename_id on media (volumename);\r
-\r
\r
-CREATE TABLE MediaType (\r
-   MediaTypeId SERIAL,\r
-   MediaType TEXT NOT NULL,\r
-   ReadOnly INTEGER DEFAULT 0,\r
-   PRIMARY KEY(MediaTypeId)\r
-   );\r
-\r
-CREATE TABLE Storage (\r
-   StorageId SERIAL,\r
-   Name TEXT NOT NULL,\r
-   AutoChanger INTEGER DEFAULT 0,\r
-   PRIMARY KEY(StorageId)\r
-   );\r
-\r
-CREATE TABLE Device (\r
-   DeviceId SERIAL,\r
-   Name TEXT NOT NULL,\r
-   MediaTypeId INTEGER NOT NULL,\r
-   StorageId INTEGER NOT NULL,\r
-   DevMounts INTEGER NOT NULL DEFAULT 0,\r
-   DevReadBytes BIGINT NOT NULL DEFAULT 0,\r
-   DevWriteBytes BIGINT NOT NULL DEFAULT 0,\r
-   DevReadBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,\r
-   DevWriteBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,\r
-   DevReadTime BIGINT NOT NULL DEFAULT 0,\r
-   DevWriteTime BIGINT NOT NULL DEFAULT 0,\r
-   DevReadTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,\r
-   DevWriteTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,\r
-   CleaningDate timestamp without time zone,\r
-   CleaningPeriod BIGINT NOT NULL DEFAULT 0,\r
-   PRIMARY KEY(DeviceId)\r
-   );\r
-\r
-\r
-CREATE TABLE pool\r
-(\r
-    poolid           serial      not null,\r
-    name             text        not null,\r
-    numvols          integer     default 0,\r
-    maxvols          integer     default 0,\r
-    useonce          smallint    default 0,\r
-    usecatalog       smallint    default 0,\r
-    acceptanyvolume   smallint   default 0,\r
-    volretention      bigint     default 0,\r
-    voluseduration    bigint     default 0,\r
-    maxvoljobs       integer     default 0,\r
-    maxvolfiles       integer    default 0,\r
-    maxvolbytes       bigint     default 0,\r
-    autoprune        smallint    default 0,\r
-    recycle          smallint    default 0,\r
-    pooltype         text                          \r
-      check (pooltype in ('Backup','Copy','Cloned','Archive','Migration','Scratch')),\r
-    labeltype        integer     default 0,\r
-    labelformat       text       not null,\r
-    enabled          smallint    default 1,\r
-    scratchpoolid     integer    default 0,\r
-    recyclepoolid     integer    default 0,\r
-    NextPoolId       integer     default 0,\r
-    MigrationHighBytes BIGINT    DEFAULT 0,\r
-    MigrationLowBytes  BIGINT    DEFAULT 0,\r
-    MigrationTime      BIGINT    DEFAULT 0,\r
-    primary key (poolid)\r
-);\r
-\r
-CREATE INDEX pool_name_idx on pool (name);\r
-\r
-CREATE TABLE client\r
-(\r
-    clientid         serial      not null,\r
-    name             text        not null,\r
-    uname            text        not null,\r
-    autoprune        smallint    default 0,\r
-    fileretention     bigint     default 0,\r
-    jobretention      bigint     default 0,\r
-    primary key (clientid)\r
-);\r
-\r
-create unique index client_name_idx on client (name);\r
-\r
-CREATE TABLE Log\r
-(\r
-    LogId            serial      not null,\r
-    JobId            integer     not null,\r
-    Time             timestamp   without time zone,\r
-    LogText          text        not null,\r
-    primary key (LogId)\r
-);\r
-create index log_name_idx on Log (JobId);\r
-\r
-CREATE TABLE LocationLog (\r
-   LocLogId SERIAL NOT NULL,\r
-   Date timestamp   without time zone,\r
-   Comment TEXT NOT NULL,\r
-   MediaId INTEGER DEFAULT 0,\r
-   LocationId INTEGER DEFAULT 0,\r
-   newvolstatus text not null\r
-       check (newvolstatus in ('Full','Archive','Append',\r
-             'Recycle','Purged','Read-Only','Disabled',\r
-             'Error','Busy','Used','Cleaning','Scratch')),\r
-   newenabled smallint,\r
-   PRIMARY KEY(LocLogId)\r
-);\r
-\r
-\r
-\r
-CREATE TABLE counters\r
-(\r
-    counter          text        not null,\r
-    minvalue         integer     default 0,\r
-    maxvalue         integer     default 0,\r
-    currentvalue      integer    default 0,\r
-    wrapcounter       text       not null,\r
-    primary key (counter)\r
-);\r
-\r
-\r
-\r
-CREATE TABLE basefiles\r
-(\r
-    baseid           serial                not null,\r
-    jobid            integer               not null,\r
-    fileid           integer               not null,\r
-    fileindex        integer                       ,\r
-    basejobid        integer                       ,\r
-    primary key (baseid)\r
-);\r
-\r
-CREATE TABLE unsavedfiles\r
-(\r
-    UnsavedId        integer               not null,\r
-    jobid            integer               not null,\r
-    pathid           integer               not null,\r
-    filenameid       integer               not null,\r
-    primary key (UnsavedId)\r
-);\r
-\r
-CREATE TABLE CDImages \r
-(\r
-   MediaId integer not null,\r
-   LastBurn timestamp without time zone not null,\r
-   primary key (MediaId)\r
-);\r
-\r
-\r
-CREATE TABLE version\r
-(\r
-    versionid        integer               not null\r
-);\r
-\r
-CREATE TABLE Status (\r
-   JobStatus CHAR(1) NOT NULL,\r
-   JobStatusLong TEXT, \r
-   PRIMARY KEY (JobStatus)\r
-   );\r
-\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('C', 'Created, not yet running');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('R', 'Running');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('B', 'Blocked');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('T', 'Completed successfully');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('E', 'Terminated with errors');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('e', 'Non-fatal error');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('f', 'Fatal error');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('D', 'Verify found differences');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('A', 'Canceled by user');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('F', 'Waiting for Client');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('S', 'Waiting for Storage daemon');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('m', 'Waiting for new media');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('M', 'Waiting for media mount');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('s', 'Waiting for storage resource');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('j', 'Waiting for job resource');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('c', 'Waiting for client resource');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('d', 'Waiting on maximum jobs');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('t', 'Waiting on start time');\r
-INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
-   ('p', 'Waiting on higher priority jobs');\r
-\r
-\r
-INSERT INTO Version (VersionId) VALUES (10);\r
-\r
--- Make sure we have appropriate permissions\r
+
+CREATE TABLE filename
+(
+    filenameid        serial      not null,
+    name              text        not null,
+    primary key (filenameid)
+);
+
+ALTER TABLE filename ALTER COLUMN name SET STATISTICS 1000;
+CREATE UNIQUE INDEX filename_name_idx on filename (name);
+
+CREATE TABLE path
+(
+    pathid            serial      not null,
+    path              text        not null,
+    primary key (pathid)
+);
+
+ALTER TABLE path ALTER COLUMN path SET STATISTICS 1000;
+CREATE UNIQUE INDEX path_name_idx on path (path);
+
+CREATE TABLE file
+(
+    fileid            bigserial   not null,
+    fileindex         integer     not null  default 0,
+    jobid             integer     not null,
+    pathid            integer     not null,
+    filenameid        integer     not null,
+    markid            integer     not null  default 0,
+    lstat             text        not null,
+    md5               text        not null,
+    primary key (fileid)
+);
+
+CREATE INDEX file_jobid_idx on file (jobid);
+CREATE INDEX file_fp_idx on file (filenameid, pathid);
+
+--
+-- Add this if you have a good number of job
+-- that run at the same time
+-- ALTER SEQUENCE file_fileid_seq CACHE 1000;
+
+--
+-- Possibly add one or more of the following indexes
+--  if your Verifies are too slow.
+--
+-- CREATE INDEX file_pathid_idx on file(pathid);
+-- CREATE INDEX file_filenameid_idx on file(filenameid);
+-- CREATE INDEX file_jpfid_idx on file (jobid, pathid, filenameid);
+
+CREATE TABLE job
+(
+    jobid             serial      not null,
+    job               text        not null,
+    name              text        not null,
+    type              char(1)     not null,
+    level             char(1)     not null,
+    clientid          integer     default 0,
+    jobstatus         char(1)     not null,
+    schedtime         timestamp   without time zone,
+    starttime         timestamp   without time zone,
+    endtime           timestamp   without time zone,
+    realendtime       timestamp   without time zone,
+    jobtdate          bigint      default 0,
+    volsessionid      integer     default 0,
+    volsessiontime    integer     default 0,
+    jobfiles          integer     default 0,
+    jobbytes          bigint      default 0,
+    readbytes        bigint      default 0,
+    joberrors         integer     default 0,
+    jobmissingfiles   integer     default 0,
+    poolid            integer     default 0,
+    filesetid         integer     default 0,
+    purgedfiles       smallint    default 0,
+    hasbase           smallint    default 0,
+    priorjobid        integer     default 0,
+    primary key (jobid)
+);
+
+CREATE INDEX job_name_idx on job (name);
+
+-- Create a table like Job for long term statistics 
+CREATE TABLE JobHisto (LIKE Job);
+CREATE INDEX jobhisto_idx ON jobhisto ( starttime );
+
+
+CREATE TABLE Location (
+   LocationId         serial      not null,
+   Location           text        not null,
+   Cost               integer     default 0,
+   Enabled            smallint,
+   primary key (LocationId)
+);
+
+
+CREATE TABLE fileset
+(
+    filesetid         serial      not null,
+    fileset           text        not null,
+    md5               text        not null,
+    createtime        timestamp without time zone not null,
+    primary key (filesetid)
+);
+
+CREATE INDEX fileset_name_idx on fileset (fileset);
+
+CREATE TABLE jobmedia
+(
+    jobmediaid        serial      not null,
+    jobid             integer     not null,
+    mediaid           integer     not null,
+    firstindex        integer     default 0,
+    lastindex         integer     default 0,
+    startfile         integer     default 0,
+    endfile           integer     default 0,
+    startblock        bigint      default 0,
+    endblock          bigint      default 0,
+    volindex          integer     default 0,
+    copy              integer     default 0,
+    primary key (jobmediaid)
+);
+
+CREATE INDEX job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
+
+CREATE TABLE media
+(
+    mediaid           serial      not null,
+    volumename        text        not null,
+    slot              integer     default 0,
+    poolid            integer     default 0,
+    mediatype         text        not null,
+    mediatypeid       integer     default 0,
+    labeltype         integer     default 0,
+    firstwritten      timestamp   without time zone,
+    lastwritten       timestamp   without time zone,
+    labeldate         timestamp   without time zone,
+    voljobs           integer     default 0,
+    volfiles          integer     default 0,
+    volblocks         integer     default 0,
+    volmounts         integer     default 0,
+    volbytes          bigint      default 0,
+    volparts          integer     default 0,
+    volerrors         integer     default 0,
+    volwrites         integer     default 0,
+    volcapacitybytes  bigint      default 0,
+    volstatus         text        not null
+        check (volstatus in ('Full','Archive','Append',
+              'Recycle','Purged','Read-Only','Disabled',
+              'Error','Busy','Used','Cleaning','Scratch')),
+    enabled           smallint    default 1,
+    recycle           smallint    default 0,
+    ActionOnPurge     smallint    default 0,
+    volretention      bigint      default 0,
+    voluseduration    bigint      default 0,
+    maxvoljobs        integer     default 0,
+    maxvolfiles       integer     default 0,
+    maxvolbytes       bigint      default 0,
+    inchanger         smallint    default 0,
+    StorageId         integer     default 0,
+    DeviceId          integer     default 0,
+    mediaaddressing   smallint    default 0,
+    volreadtime       bigint      default 0,
+    volwritetime      bigint      default 0,
+    endfile           integer     default 0,
+    endblock          bigint      default 0,
+    LocationId        integer     default 0,
+    recyclecount      integer     default 0,
+    initialwrite      timestamp   without time zone,
+    scratchpoolid     integer     default 0,
+    recyclepoolid     integer     default 0,
+    comment           text,
+    primary key (mediaid)
+);
+
+create unique index media_volumename_id on media (volumename);
+
+CREATE TABLE MediaType (
+   MediaTypeId SERIAL,
+   MediaType TEXT NOT NULL,
+   ReadOnly INTEGER DEFAULT 0,
+   PRIMARY KEY(MediaTypeId)
+   );
+
+CREATE TABLE Storage (
+   StorageId SERIAL,
+   Name TEXT NOT NULL,
+   AutoChanger INTEGER DEFAULT 0,
+   PRIMARY KEY(StorageId)
+   );
+
+CREATE TABLE Device (
+   DeviceId SERIAL,
+   Name TEXT NOT NULL,
+   MediaTypeId INTEGER NOT NULL,
+   StorageId INTEGER NOT NULL,
+   DevMounts INTEGER NOT NULL DEFAULT 0,
+   DevReadBytes BIGINT NOT NULL DEFAULT 0,
+   DevWriteBytes BIGINT NOT NULL DEFAULT 0,
+   DevReadBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   DevWriteBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   DevReadTime BIGINT NOT NULL DEFAULT 0,
+   DevWriteTime BIGINT NOT NULL DEFAULT 0,
+   DevReadTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   DevWriteTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   CleaningDate timestamp without time zone,
+   CleaningPeriod BIGINT NOT NULL DEFAULT 0,
+   PRIMARY KEY(DeviceId)
+   );
+
+
+CREATE TABLE pool
+(
+    poolid            serial      not null,
+    name              text        not null,
+    numvols           integer     default 0,
+    maxvols           integer     default 0,
+    useonce           smallint    default 0,
+    usecatalog        smallint    default 0,
+    acceptanyvolume   smallint    default 0,
+    volretention      bigint      default 0,
+    voluseduration    bigint      default 0,
+    maxvoljobs        integer     default 0,
+    maxvolfiles       integer     default 0,
+    maxvolbytes       bigint      default 0,
+    autoprune         smallint    default 0,
+    recycle           smallint    default 0,
+    ActionOnPurge     smallint    default 0,
+    pooltype          text                          
+      check (pooltype in ('Backup','Copy','Cloned','Archive','Migration','Scratch')),
+    labeltype         integer     default 0,
+    labelformat       text        not null,
+    enabled           smallint    default 1,
+    scratchpoolid     integer     default 0,
+    recyclepoolid     integer     default 0,
+    NextPoolId        integer     default 0,
+    MigrationHighBytes BIGINT     DEFAULT 0,
+    MigrationLowBytes  BIGINT     DEFAULT 0,
+    MigrationTime      BIGINT     DEFAULT 0,
+    primary key (poolid)
+);
+
+CREATE INDEX pool_name_idx on pool (name);
+
+CREATE TABLE client
+(
+    clientid          serial      not null,
+    name              text        not null,
+    uname             text        not null,
+    autoprune         smallint    default 0,
+    fileretention     bigint      default 0,
+    jobretention      bigint      default 0,
+    primary key (clientid)
+);
+
+create unique index client_name_idx on client (name);
+
+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);
+
+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 counters
+(
+    counter           text        not null,
+    minvalue          integer     default 0,
+    maxvalue          integer     default 0,
+    currentvalue      integer     default 0,
+    wrapcounter       text        not null,
+    primary key (counter)
+);
+
+
+
+CREATE TABLE basefiles
+(
+    baseid            serial                not null,
+    jobid             integer               not null,
+    fileid            bigint                not null,
+    fileindex         integer                       ,
+    basejobid         integer                       ,
+    primary key (baseid)
+);
+
+CREATE TABLE unsavedfiles
+(
+    UnsavedId         integer               not null,
+    jobid             integer               not null,
+    pathid            integer               not null,
+    filenameid        integer               not null,
+    primary key (UnsavedId)
+);
+
+CREATE TABLE CDImages 
+(
+   MediaId integer not null,
+   LastBurn timestamp without time zone not null,
+   primary key (MediaId)
+);
+
+
+CREATE TABLE version
+(
+    versionid         integer               not null
+);
+
+CREATE TABLE Status (
+   JobStatus CHAR(1) NOT NULL,
+   JobStatusLong TEXT, 
+   PRIMARY KEY (JobStatus)
+   );
+
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('C', 'Created, not yet running');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('R', 'Running');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('B', 'Blocked');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('T', 'Completed successfully');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('E', 'Terminated with errors');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('e', 'Non-fatal error');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('f', 'Fatal error');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('D', 'Verify found differences');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('A', 'Canceled by user');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('F', 'Waiting for Client');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('S', 'Waiting for Storage daemon');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('m', 'Waiting for new media');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('M', 'Waiting for media mount');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('s', 'Waiting for storage resource');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('j', 'Waiting for job resource');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('c', 'Waiting for client resource');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('d', 'Waiting on maximum jobs');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('t', 'Waiting on start time');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('p', 'Waiting on higher priority jobs');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('a', 'SD despooling attributes');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('i', 'Doing batch insert file records');
+
+INSERT INTO Version (VersionId) VALUES (11);
+
+-- Make sure we have appropriate permissions
+
index 89f6f8959aa9ef1b3e4f68b2eee217f42078f554..83a4e4ca2f27c9b90f2d4c4e41174f499b99f271 100644 (file)
@@ -1,6 +1,7 @@
+\r
 CREATE TABLE Filename (\r
   FilenameId INTEGER,\r
-  Name TEXT DEFAULT "",\r
+  Name TEXT DEFAULT '',\r
   PRIMARY KEY(FilenameId) \r
   );\r
 \r
@@ -8,7 +9,7 @@ CREATE INDEX inx1 ON Filename (Name);
 \r
 CREATE TABLE Path (\r
    PathId INTEGER,\r
-   Path TEXT DEFAULT "",\r
+   Path TEXT DEFAULT '',\r
    PRIMARY KEY(PathId) \r
    );\r
 \r
@@ -41,10 +42,10 @@ CREATE TABLE Job (
    JobId INTEGER,\r
    Job VARCHAR(128) NOT NULL,\r
    Name VARCHAR(128) NOT NULL,\r
-   Type CHAR NOT NULL,\r
-   Level CHAR NOT NULL,\r
+   Type CHAR(1) NOT NULL,\r
+   Level CHAR(1) NOT NULL,\r
    ClientId INTEGER REFERENCES Client DEFAULT 0,\r
-   JobStatus CHAR NOT NULL,\r
+   JobStatus CHAR(1) NOT NULL,\r
    SchedTime DATETIME NOT NULL,\r
    StartTime DATETIME DEFAULT 0,\r
    EndTime DATETIME DEFAULT 0,\r
@@ -54,6 +55,7 @@ CREATE TABLE Job (
    VolSessionTime INTEGER UNSIGNED DEFAULT 0,\r
    JobFiles INTEGER UNSIGNED DEFAULT 0,\r
    JobBytes BIGINT UNSIGNED DEFAULT 0,\r
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,\r
    JobErrors INTEGER UNSIGNED DEFAULT 0,\r
    JobMissingFiles INTEGER UNSIGNED DEFAULT 0,\r
    PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,\r
@@ -65,6 +67,35 @@ CREATE TABLE Job (
    );\r
 CREATE INDEX inx6 ON Job (Name);\r
 \r
+-- Create a table like Job for long term statistics \r
+CREATE TABLE JobHisto (\r
+   JobId INTEGER,\r
+   Job VARCHAR(128) NOT NULL,\r
+   Name VARCHAR(128) NOT NULL,\r
+   Type CHAR(1) NOT NULL,\r
+   Level CHAR(1) NOT NULL,\r
+   ClientId INTEGER DEFAULT 0,\r
+   JobStatus CHAR(1) NOT NULL,\r
+   SchedTime DATETIME NOT NULL,\r
+   StartTime DATETIME DEFAULT 0,\r
+   EndTime DATETIME DEFAULT 0,\r
+   RealEndTime DATETIME DEFAULT 0,\r
+   JobTDate BIGINT UNSIGNED DEFAULT 0,\r
+   VolSessionId INTEGER UNSIGNED DEFAULT 0,\r
+   VolSessionTime INTEGER UNSIGNED DEFAULT 0,\r
+   JobFiles INTEGER UNSIGNED DEFAULT 0,\r
+   JobBytes BIGINT UNSIGNED DEFAULT 0,\r
+   ReadBytes BIGINT UNSIGNED DEFAULT 0,\r
+   JobErrors INTEGER UNSIGNED DEFAULT 0,\r
+   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,\r
+   PoolId INTEGER UNSIGNED DEFAULT 0,\r
+   FileSetId INTEGER UNSIGNED DEFAULT 0,\r
+   PriorJobId INTEGER UNSIGNED DEFAULT 0,\r
+   PurgedFiles TINYINT DEFAULT 0,\r
+   HasBase TINYINT DEFAULT 0\r
+   );\r
+CREATE INDEX inx61 ON JobHisto (StartTime);\r
+\r
 CREATE TABLE Location (\r
    LocationId INTEGER,\r
    Location TEXT NOT NULL,\r
@@ -92,7 +123,7 @@ CREATE TABLE Log (
    LogText TEXT NOT NULL,\r
    PRIMARY KEY(LogId) \r
    );\r
-CREATE INDEX LogInx1 ON File (JobId);\r
+CREATE INDEX LogInx1 ON Log (JobId);\r
 \r
 \r
 CREATE TABLE FileSet (\r
@@ -144,6 +175,7 @@ CREATE TABLE Media (
    VolStatus VARCHAR(20) NOT NULL,\r
    Enabled TINYINT DEFAULT 1,\r
    Recycle TINYINT DEFAULT 0,\r
+   ActionOnPurge     TINYINT    DEFAULT 0,\r
    VolRetention BIGINT UNSIGNED DEFAULT 0,\r
    VolUseDuration BIGINT UNSIGNED DEFAULT 0,\r
    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,\r
@@ -217,6 +249,7 @@ CREATE TABLE Pool (
    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,\r
    AutoPrune TINYINT DEFAULT 0,\r
    Recycle TINYINT DEFAULT 0,\r
+   ActionOnPurge     TINYINT    DEFAULT 0,\r
    PoolType VARCHAR(20) NOT NULL,\r
    LabelType TINYINT DEFAULT 0,\r
    LabelFormat VARCHAR(128) NOT NULL,\r
@@ -270,7 +303,7 @@ CREATE TABLE NextId (
 \r
 \r
 -- Initialize JobId to start at 1\r
-INSERT INTO NextId (id, TableName) VALUES (1, "Job");\r
+INSERT INTO NextId (id, TableName) VALUES (1, 'Job');\r
 \r
 CREATE TABLE Version (\r
    VersionId INTEGER UNSIGNED NOT NULL \r
@@ -337,11 +370,15 @@ INSERT INTO Status (JobStatus,JobStatusLong) VALUES
    ('t', 'Waiting on start time');\r
 INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
    ('p', 'Waiting on higher priority jobs');\r
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
+   ('a', 'SD despooling attributes');\r
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
+   ('i', 'Doing batch insert file records');\r
 \r
 \r
--- Initialize Version\r
-INSERT INTO Version (VersionId) VALUES (10);\r
+-- Initialize Version            \r
+INSERT INTO Version (VersionId) VALUES (11);\r
 \r
 \r
-PRAGMA default_synchronous = OFF;\r
-PRAGMA default_cache_size = 10000;\r
+PRAGMA default_cache_size = 100000;\r
+PRAGMA synchronous = NORMAL;\r
index afe4b991018d6d992890eb2c0684724aa44ec195..de97904d9831b150966c2677d1f05fbbb3f936cb 100644 (file)
@@ -3,6 +3,7 @@
 General:
 
 28Apr09
+kes  Update Win32/64 table creation to have new DB version 11 format
 kes  Remove illegal Options in Exclude of default Win32/64 bacula-dir.conf
 27Apr09
 ebl  Fix bug #1274 where a migration job can be canceled like the