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