]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_sqlite_tables.in
o initial add
[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 MAC (
77    JobId INTEGER,
78    OriginalJobId INTEGER,
79    JobType CHAR NOT NULL,
80    JobLevel CHAR NOT NULL,
81    SchedTime DATETIME NOT NULL,
82    StartTime DATETIME DEFAULT 0,
83    EndTime DATETIME DEFAULT 0,
84    JobTDate BIGINT UNSIGNED DEFAULT 0,
85    PRIMARY KEY(JobId)
86    );
87
88 CREATE TABLE Location (
89    LocationId INTEGER,
90    Location TINYBLOB NOT NULL,
91    PRIMARY KEY(LocationId)
92    );
93
94
95 CREATE TABLE FileSet (
96    FileSetId INTEGER,
97    FileSet VARCHAR(128) NOT NULL,
98    MD5 VARCHAR(25) NOT NULL,
99    CreateTime DATETIME DEFAULT 0,
100    PRIMARY KEY(FileSetId)
101    );
102
103 CREATE TABLE JobMedia (
104    JobMediaId INTEGER,
105    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
106    MediaId INTEGER UNSIGNED REFERENCES Media NOT NULL,
107    FirstIndex INTEGER UNSIGNED NOT NULL,
108    LastIndex INTEGER UNSIGNED NOT NULL,
109    StartFile INTEGER UNSIGNED DEFAULT 0,
110    EndFile INTEGER UNSIGNED DEFAULT 0,
111    StartBlock INTEGER UNSIGNED DEFAULT 0,
112    EndBlock INTEGER UNSIGNED DEFAULT 0,
113    VolIndex INTEGER UNSIGNED DEFAULT 0,
114    Copy     INTEGER UNSIGNED DEFAULT 0,
115    Stripe   INTEGER UNSIGNED DEFAULT 0,
116    PRIMARY KEY(JobMediaId) 
117    );
118
119 CREATE INDEX inx7 ON JobMedia (JobId, MediaId);
120
121
122 CREATE TABLE Media (
123    MediaId INTEGER,
124    VolumeName VARCHAR(128) NOT NULL,
125    Slot INTEGER DEFAULT 0,
126    PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
127    MediaType VARCHAR(128) NOT NULL,
128    MediaTypeId INTEGER UNSIGNED REFERENCES MediaType DEFAULT 0,
129    LabelType TINYINT DEFAULT 0,
130    FirstWritten DATETIME DEFAULT 0,
131    LastWritten DATETIME DEFAULT 0,
132    LabelDate DATETIME DEFAULT 0,
133    VolJobs INTEGER UNSIGNED DEFAULT 0,
134    VolFiles INTEGER UNSIGNED DEFAULT 0,
135    VolBlocks INTEGER UNSIGNED DEFAULT 0,
136    VolMounts INTEGER UNSIGNED DEFAULT 0,
137    VolBytes BIGINT UNSIGNED DEFAULT 0,
138    VolParts INTEGER UNSIGNED DEFAULT 0,
139    VolErrors INTEGER UNSIGNED DEFAULT 0,
140    VolWrites INTEGER UNSIGNED DEFAULT 0,
141    VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
142    VolStatus VARCHAR(20) NOT NULL,
143    Recycle TINYINT DEFAULT 0,
144    VolRetention BIGINT UNSIGNED DEFAULT 0,
145    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
146    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
147    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
148    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
149    InChanger TINYINT DEFAULT 0,
150    StorageId INTEGER UNSIGNED REFERENCES Storage,         
151    DeviceId INTEGER UNSIGNED REFERENCES Device,
152    MediaAddressing TINYINT DEFAULT 0,
153    VolReadTime BIGINT UNSIGNED DEFAULT 0,
154    VolWriteTime BIGINT UNSIGNED DEFAULT 0,
155    EndFile INTEGER UNSIGNED DEFAULT 0,
156    EndBlock INTEGER UNSIGNED DEFAULT 0,
157    LocationId INTEGER UNSIGNED REFERENCES Location,
158    RecycleCount INTEGER UNSIGNED DEFAULT 0,
159    InitialWrite DATETIME DEFAULT 0,
160    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
161    RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
162    PRIMARY KEY(MediaId)
163    );
164
165 CREATE INDEX inx8 ON Media (PoolId);
166
167 CREATE TABLE MediaType (
168    MediaTypeId INTEGER,
169    MediaType VARCHAR(128) NOT NULL,
170    ReadOnly TINYINT DEFAULT 0,
171    PRIMARY KEY(MediaTypeId)
172    );
173
174 CREATE TABLE Storage (
175    StorageId INTEGER,
176    Name VARCHAR(128) NOT NULL,
177    AutoChanger TINYINT DEFAULT 0,
178    PRIMARY KEY(StorageId)
179    );
180
181 CREATE TABLE Device (
182    DeviceId INTEGER,
183    Name VARCHAR(128) NOT NULL,
184    MediaTypeId INTEGER UNSIGNED REFERENCES MediaType NOT NULL,
185    StorageId INTEGER UNSIGNED REFERENCES Storage,
186    DevMounts INTEGER UNSIGNED DEFAULT 0,
187    DevReadBytes BIGINT UNSIGNED DEFAULT 0,
188    DevWriteBytes BIGINT UNSIGNED DEFAULT 0,
189    DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
190    DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
191    DevReadTime BIGINT UNSIGNED DEFAULT 0,
192    DevWriteTime BIGINT UNSIGNED DEFAULT 0,
193    DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
194    DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
195    CleaningDate DATETIME DEFAULT 0,
196    CleaningPeriod BIGINT UNSIGNED DEFAULT 0,
197    PRIMARY KEY(DeviceId)
198    );
199
200
201 CREATE TABLE Pool (
202    PoolId INTEGER,
203    Name VARCHAR(128) NOT NULL,
204    NumVols INTEGER UNSIGNED DEFAULT 0,
205    MaxVols INTEGER UNSIGNED DEFAULT 0,
206    UseOnce TINYINT DEFAULT 0,
207    UseCatalog TINYINT DEFAULT 1,
208    AcceptAnyVolume TINYINT DEFAULT 0,
209    VolRetention BIGINT UNSIGNED DEFAULT 0,
210    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
211    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
212    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
213    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
214    AutoPrune TINYINT DEFAULT 0,
215    Recycle TINYINT DEFAULT 0,
216    PoolType VARCHAR(20) NOT NULL,
217    LabelType TINYINT DEFAULT 0,
218    LabelFormat VARCHAR(128) NOT NULL,
219    Enabled TINYINT DEFAULT 1,
220    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
221    RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
222    NextPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
223    MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,
224    MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,
225    MigrationTime BIGINT UNSIGNED DEFAULT 0,
226    UNIQUE (Name),
227    PRIMARY KEY (PoolId)
228    );
229
230
231 CREATE TABLE Client (
232    ClientId INTEGER,
233    Name VARCHAR(128) NOT NULL,
234    Uname VARCHAR(255) NOT NULL,   -- uname -a field
235    AutoPrune TINYINT DEFAULT 0,
236    FileRetention BIGINT UNSIGNED DEFAULT 0,
237    JobRetention  BIGINT UNSIGNED DEFAULT 0,
238    UNIQUE (Name),
239    PRIMARY KEY(ClientId)
240    );
241
242 CREATE TABLE BaseFiles (
243    BaseId INTEGER,
244    BaseJobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
245    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
246    FileId INTEGER UNSIGNED REFERENCES File NOT NULL,
247    FileIndex INTEGER UNSIGNED,
248    PRIMARY KEY(BaseId)
249    );
250
251 CREATE TABLE UnsavedFiles (
252    UnsavedId INTEGER,
253    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
254    PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
255    FilenameId INTEGER UNSIGNED REFERENCES Filename NOT NULL,
256    PRIMARY KEY (UnsavedId)
257    );
258
259
260 CREATE TABLE NextId (
261    id INTEGER UNSIGNED DEFAULT 0,
262    TableName TEXT NOT NULL,
263    PRIMARY KEY (TableName)
264    );
265
266 -- Initialize JobId to start at 1
267 INSERT INTO NextId (id, TableName) VALUES (1, "Job");
268
269 CREATE TABLE Version (
270    VersionId INTEGER UNSIGNED NOT NULL 
271    );
272
273
274 CREATE TABLE Counters (
275    Counter TEXT NOT NULL,     
276    MinValue INTEGER DEFAULT 0, 
277    MaxValue INTEGER DEFAULT 0,
278    CurrentValue INTEGER DEFAULT 0,
279    WrapCounter TEXT NOT NULL,
280    PRIMARY KEY (Counter)
281    );
282
283 CREATE TABLE CDImages (
284    MediaId INTEGER UNSIGNED NOT NULL,
285    LastBurn DATETIME NOT NULL,
286    PRIMARY KEY (MediaId)
287    );
288
289
290 CREATE TABLE Status (
291    JobStatus CHAR(1) NOT NULL,
292    JobStatusLong BLOB, 
293    PRIMARY KEY (JobStatus)
294    );
295
296 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
297    ('C', 'Created, not yet running');
298 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
299    ('R', 'Running');
300 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
301    ('B', 'Blocked');
302 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
303    ('T', 'Completed successfully');
304 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
305    ('E', 'Terminated with errors');
306 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
307    ('e', 'Non-fatal error');
308 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
309    ('f', 'Fatal error');
310 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
311    ('D', 'Verify found differences');
312 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
313    ('A', 'Canceled by user');
314 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
315    ('F', 'Waiting for Client');
316 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
317    ('S', 'Waiting for Storage daemon');
318 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
319    ('m', 'Waiting for new media');
320 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
321    ('M', 'Waiting for media mount');
322 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
323    ('s', 'Waiting for storage resource');
324 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
325    ('j', 'Waiting for job resource');
326 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
327    ('c', 'Waiting for client resource');
328 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
329    ('d', 'Waiting on maximum jobs');
330 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
331    ('t', 'Waiting on start time');
332 INSERT INTO Status (JobStatus,JobStatusLong) VALUES
333    ('p', 'Waiting on higher priority jobs');
334
335
336 -- Initialize Version            
337 INSERT INTO Version (VersionId) VALUES (9);
338
339
340 PRAGMA default_synchronous = OFF;
341 PRAGMA default_cache_size = 10000;
342
343 END-OF-DATA
344
345 chmod 640 bacula.db
346 exit 0