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