]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_sqlite_tables.in
Vacation work -- see tech log
[bacula/bacula] / bacula / src / cats / make_sqlite_tables.in
1 #!/bin/sh
2 #
3 # shell script to create Bacula SQLite tables
4
5 bindir=@SQL_BINDIR@
6 cd @working_dir@
7 sqlite=@DB_NAME@
8
9 ${bindir}/${sqlite} $* bacula.db <<END-OF-DATA
10 CREATE TABLE Filename (
11   FilenameId INTEGER,
12   Name TEXT DEFAULT "",
13   PRIMARY KEY(FilenameId) 
14   );
15
16 CREATE INDEX inx1 ON Filename (Name);
17
18 CREATE TABLE Path (
19    PathId INTEGER,
20    Path TEXT DEFAULT "",
21    PRIMARY KEY(PathId) 
22    );
23
24 CREATE INDEX inx2 ON Path (Path);
25
26
27 CREATE TABLE File (
28    FileId INTEGER,
29    FileIndex INTEGER UNSIGNED NOT NULL,
30    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
31    PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
32    FilenameId INTEGER UNSIGNED REFERENCES Filename NOT NULL,
33    MarkId INTEGER UNSIGNED DEFAULT 0,
34    LStat VARCHAR(255) NOT NULL,
35    MD5 VARCHAR(255) NOT NULL,
36    PRIMARY KEY(FileId) 
37    );
38
39 CREATE INDEX inx3 ON File (JobId);
40 CREATE INDEX inx4 ON File (FilenameId, PathId);
41 --
42 -- Possibly add one or more of the following indexes
43 --  if your Verifies are too slow.
44 --
45 -- CREATE INDEX inx4 ON File (PathId);
46 -- CREATE INDEX inx5 ON File (FileNameId);
47 -- CREATE INDEX inx9 ON File (JobId, PathId, FilenameId);
48
49 CREATE TABLE Job (
50    JobId INTEGER,
51    Job VARCHAR(128) NOT NULL,
52    Name VARCHAR(128) NOT NULL,
53    Type CHAR NOT NULL,
54    Level CHAR NOT NULL,
55    ClientId INTEGER REFERENCES Client DEFAULT 0,
56    JobStatus CHAR NOT NULL,
57    SchedTime DATETIME NOT NULL,
58    StartTime DATETIME DEFAULT 0,
59    EndTime DATETIME DEFAULT 0,
60    JobTDate BIGINT UNSIGNED DEFAULT 0,
61    VolSessionId INTEGER UNSIGNED DEFAULT 0,
62    VolSessionTime INTEGER UNSIGNED DEFAULT 0,
63    JobFiles INTEGER UNSIGNED DEFAULT 0,
64    JobBytes BIGINT UNSIGNED DEFAULT 0,
65    JobErrors INTEGER UNSIGNED DEFAULT 0,
66    JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
67    PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
68    FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
69    PurgedFiles TINYINT DEFAULT 0,
70    HasBase TINYINT DEFAULT 0,
71    PRIMARY KEY(JobId) 
72    );
73
74 CREATE INDEX inx6 ON Job (Name);
75
76 CREATE TABLE FileSet (
77    FileSetId INTEGER,
78    FileSet VARCHAR(128) NOT NULL,
79    MD5 VARCHAR(25) NOT NULL,
80    CreateTime DATETIME DEFAULT 0,
81    PRIMARY KEY(FileSetId)
82    );
83
84 CREATE TABLE JobMedia (
85    JobMediaId INTEGER,
86    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
87    MediaId INTEGER UNSIGNED REFERENCES Media NOT NULL,
88    FirstIndex INTEGER UNSIGNED NOT NULL,
89    LastIndex INTEGER UNSIGNED NOT NULL,
90    StartFile INTEGER UNSIGNED DEFAULT 0,
91    EndFile INTEGER UNSIGNED DEFAULT 0,
92    StartBlock INTEGER UNSIGNED DEFAULT 0,
93    EndBlock INTEGER UNSIGNED DEFAULT 0,
94    VolIndex INTEGER UNSIGNED DEFAULT 0,
95    PRIMARY KEY(JobMediaId) 
96    );
97
98 CREATE INDEX inx7 ON JobMedia (JobId, MediaId);
99
100
101 CREATE TABLE Media (
102    MediaId INTEGER,
103    VolumeName VARCHAR(128) NOT NULL,
104    Slot INTEGER DEFAULT 0,
105    PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
106    MediaType VARCHAR(128) NOT NULL,
107    LabelType TINYINT DEFAULT 0,
108    FirstWritten DATETIME DEFAULT 0,
109    LastWritten DATETIME DEFAULT 0,
110    LabelDate DATETIME DEFAULT 0,
111    VolJobs INTEGER UNSIGNED DEFAULT 0,
112    VolFiles INTEGER UNSIGNED DEFAULT 0,
113    VolBlocks INTEGER UNSIGNED DEFAULT 0,
114    VolMounts INTEGER UNSIGNED DEFAULT 0,
115    VolBytes BIGINT UNSIGNED DEFAULT 0,
116    VolParts INTEGER UNSIGNED DEFAULT 0,
117    VolErrors INTEGER UNSIGNED DEFAULT 0,
118    VolWrites INTEGER UNSIGNED DEFAULT 0,
119    VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
120    VolStatus VARCHAR(20) NOT NULL,
121    Recycle TINYINT DEFAULT 0,
122    VolRetention BIGINT UNSIGNED DEFAULT 0,
123    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
124    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
125    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
126    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
127    InChanger TINYINT DEFAULT 0,
128    StorageId INTEGER UNSIGNED REFERENCES Storage,         
129    MediaAddressing TINYINT DEFAULT 0,
130    VolReadTime BIGINT UNSIGNED DEFAULT 0,
131    VolWriteTime BIGINT UNSIGNED DEFAULT 0,
132    EndFile INTEGER UNSIGNED DEFAULT 0,
133    EndBlock INTEGER UNSIGNED DEFAULT 0,
134    PRIMARY KEY(MediaId)
135    );
136
137 CREATE INDEX inx8 ON Media (PoolId);
138
139 CREATE TABLE MediaType (
140    MediaTypeId INTERGER,
141    MediaType VARCHAR(128) NOT NULL,
142    ReadOnly TINYINT DEFAULT 0,
143    PRIMARY KEY(MediaTypeId)
144    );
145
146 CREATE TABLE Device (
147    DeviceId INTEGER,
148    Name VARCHAR(128) NOT NULL,
149    MediaTypeId INTEGER UNSIGNED REFERENCES MediaType NOT NULL,
150    StorageId INTEGER UNSIGNED REFERENCES Storage,
151    DevMounts INTEGER UNSIGNED DEFAULT 0,
152    DevReadBytes BIGINT UNSIGNED DEFAULT 0,
153    DevWriteBytes BIGINT UNSIGNED DEFAULT 0,
154    DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
155    DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
156    DevReadTime BIGINT UNSIGNED DEFAULT 0,
157    DevWriteTime BIGINT UNSIGNED DEFAULT 0,
158    DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
159    DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
160    CleaningDate DATETIME DEFAULT 0,
161    CleaningPeriod BIGINT UNSIGNED DEFAULT 0,
162    PRIMARY KEY(DeviceId)
163    );
164
165 CREATE TABLE Storage (
166    StorageId INTEGER,
167    Name VARCHAR(128) NOT NULL,
168    AutoChanger TINYINT DEFAULT 0,
169    PRIMARY KEY(StorageId)
170    );
171
172
173 CREATE TABLE Pool (
174    PoolId INTEGER,
175    Name VARCHAR(128) NOT NULL,
176    NumVols INTEGER UNSIGNED DEFAULT 0,
177    MaxVols INTEGER UNSIGNED DEFAULT 0,
178    UseOnce TINYINT DEFAULT 0,
179    UseCatalog TINYINT DEFAULT 1,
180    AcceptAnyVolume TINYINT DEFAULT 0,
181    VolRetention BIGINT UNSIGNED DEFAULT 0,
182    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
183    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
184    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
185    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
186    AutoPrune TINYINT DEFAULT 0,
187    Recycle TINYINT DEFAULT 0,
188    PoolType VARCHAR(20) NOT NULL,
189    LabelFormat VARCHAR(128) NOT NULL,
190    Enabled TINYINT DEFAULT 1,
191    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
192    RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
193    UNIQUE (Name),
194    PRIMARY KEY (PoolId)
195    );
196
197
198 CREATE TABLE Client (
199    ClientId INTEGER,
200    Name VARCHAR(128) NOT NULL,
201    Uname VARCHAR(255) NOT NULL,   -- uname -a field
202    AutoPrune TINYINT DEFAULT 0,
203    FileRetention BIGINT UNSIGNED DEFAULT 0,
204    JobRetention  BIGINT UNSIGNED DEFAULT 0,
205    UNIQUE (Name),
206    PRIMARY KEY(ClientId)
207    );
208
209 CREATE TABLE BaseFiles (
210    BaseId INTEGER,
211    BaseJobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
212    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
213    FileId INTEGER UNSIGNED REFERENCES File NOT NULL,
214    FileIndex INTEGER UNSIGNED,
215    PRIMARY KEY(BaseId)
216    );
217
218 CREATE TABLE UnsavedFiles (
219    UnsavedId INTEGER,
220    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
221    PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
222    FilenameId INTEGER UNSIGNED REFERENCES Filename NOT NULL,
223    PRIMARY KEY (UnsavedId)
224    );
225
226
227 CREATE TABLE NextId (
228    id INTEGER UNSIGNED DEFAULT 0,
229    TableName TEXT NOT NULL,
230    PRIMARY KEY (TableName)
231    );
232
233 -- Initialize JobId to start at 1
234 INSERT INTO NextId (id, TableName) VALUES (1, "Job");
235
236 CREATE TABLE Version (
237    VersionId INTEGER UNSIGNED NOT NULL 
238    );
239
240 -- Initialize Version            
241 INSERT INTO Version (VersionId) VALUES (8);
242
243 CREATE TABLE Counters (
244    Counter TEXT NOT NULL,     
245    MinValue INTEGER DEFAULT 0, 
246    MaxValue INTEGER DEFAULT 0,
247    CurrentValue INTEGER DEFAULT 0,
248    WrapCounter TEXT NOT NULL,
249    PRIMARY KEY (Counter)
250    );
251
252 CREATE TABLE CDImages (
253    MediaId INTEGER UNSIGNED NOT NULL,
254    LastBurn DATETIME NOT NULL,
255    PRIMARY KEY (MediaId)
256    );
257
258
259 PRAGMA default_synchronous = OFF;
260 PRAGMA default_cache_size = 10000;
261
262 END-OF-DATA
263
264 chmod 640 bacula.db
265 exit 0