]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_sqlite_tables.in
grant sqlite privileges
[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
8 $bindir/sqlite $* bacula.db <<END-OF-DATA
9 CREATE TABLE Filename (
10   FilenameId INTEGER UNSIGNED AUTOINCREMENT,
11   Name TEXT DEFAULT "",
12   PRIMARY KEY(FilenameId) 
13   );
14
15 CREATE INDEX inx1 ON Filename (Name);
16
17 CREATE TABLE Path (
18    PathId INTEGER UNSIGNED AUTOINCREMENT,
19    Path TEXT DEFAULT "",
20    PRIMARY KEY(PathId) 
21    );
22
23 CREATE INDEX inx2 ON Path (Path);
24
25
26 CREATE TABLE File (
27    FileId INTEGER UNSIGNED AUTOINCREMENT,
28    FileIndex INTEGER UNSIGNED NOT NULL,
29    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
30    PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
31    FilenameId INTEGER UNSIGNED REFERENCES Filename NOT NULL,
32    MarkId INTEGER UNSIGNED DEFAULT 0,
33    LStat VARCHAR(255) NOT NULL,
34    MD5 VARCHAR(255) NOT NULL,
35    PRIMARY KEY(FileId) 
36    );
37
38 CREATE INDEX inx3 ON File (JobId);
39 CREATE INDEX inx4 ON File (PathId);
40 CREATE INDEX inx5 ON File (FileNameId);
41
42 CREATE TABLE Job (
43    JobId INTEGER UNSIGNED NOT NULL,
44    Job VARCHAR(128) NOT NULL,
45    Name VARCHAR(128) NOT NULL,
46    Type CHAR NOT NULL,
47    Level CHAR NOT NULL,
48    ClientId INTEGER REFERENCES Client DEFAULT 0,
49    JobStatus CHAR NOT NULL,
50    SchedTime DATETIME NOT NULL,
51    StartTime DATETIME DEFAULT 0,
52    EndTime DATETIME DEFAULT 0,
53    JobTDate BIGINT UNSIGNED DEFAULT 0,
54    VolSessionId INTEGER UNSIGNED DEFAULT 0,
55    VolSessionTime INTEGER UNSIGNED DEFAULT 0,
56    JobFiles INTEGER UNSIGNED DEFAULT 0,
57    JobBytes BIGINT UNSIGNED DEFAULT 0,
58    JobErrors INTEGER UNSIGNED DEFAULT 0,
59    JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
60    PoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
61    FileSetId INTEGER UNSIGNED REFERENCES FileSet DEFAULT 0,
62    PurgedFiles TINYINT DEFAULT 0,
63    HasBase TINYINT DEFAULT 0,
64    PRIMARY KEY(JobId) 
65    );
66
67 CREATE INDEX inx6 ON Job (Name);
68
69 CREATE TABLE FileSet (
70    FileSetId INTEGER UNSIGNED AUTOINCREMENT,
71    FileSet VARCHAR(128) NOT NULL,
72    MD5 VARCHAR(25) NOT NULL,
73    CreateTime DATETIME DEFAULT 0,
74    PRIMARY KEY(FileSetId)
75    );
76
77 CREATE TABLE JobMedia (
78    JobMediaId INTEGER UNSIGNED AUTOINCREMENT,
79    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
80    MediaId INTEGER UNSIGNED REFERENCES Media NOT NULL,
81    FirstIndex INTEGER UNSIGNED NOT NULL,
82    LastIndex INTEGER UNSIGNED NOT NULL,
83    StartFile INTEGER UNSIGNED DEFAULT 0,
84    EndFile INTEGER UNSIGNED DEFAULT 0,
85    StartBlock INTEGER UNSIGNED DEFAULT 0,
86    EndBlock INTEGER UNSIGNED DEFAULT 0,
87    VolIndex INTEGER UNSIGNED DEFAULT 0,
88    PRIMARY KEY(JobMediaId) 
89    );
90
91 CREATE INDEX inx7 ON JobMedia (JobId, MediaId);
92
93
94 CREATE TABLE Media (
95    MediaId INTEGER UNSIGNED AUTOINCREMENT,
96    VolumeName VARCHAR(128) NOT NULL,
97    Slot INTEGER DEFAULT 0,
98    PoolId INTEGER UNSIGNED REFERENCES Pool NOT NULL,
99    MediaType VARCHAR(128) NOT NULL,
100    FirstWritten DATETIME DEFAULT 0,
101    LastWritten DATETIME DEFAULT 0,
102    LabelDate DATETIME DEFAULT 0,
103    VolJobs INTEGER UNSIGNED DEFAULT 0,
104    VolFiles INTEGER UNSIGNED DEFAULT 0,
105    VolBlocks INTEGER UNSIGNED DEFAULT 0,
106    VolMounts INTEGER UNSIGNED DEFAULT 0,
107    VolBytes BIGINT UNSIGNED DEFAULT 0,
108    VolErrors INTEGER UNSIGNED DEFAULT 0,
109    VolWrites INTEGER UNSIGNED DEFAULT 0,
110    VolCapacityBytes BIGINT UNSIGNED DEFAULT 0,
111    VolStatus VARCHAR(20) NOT NULL,
112    Recycle TINYINT DEFAULT 0,
113    VolRetention BIGINT UNSIGNED DEFAULT 0,
114    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
115    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
116    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
117    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
118    Drive INTEGER DEFAULT 0,
119    InChanger TINYINT DEFAULT 0,
120    MediaAddressing TINYINT DEFAULT 0,
121    PRIMARY KEY(MediaId)
122    );
123
124 CREATE INDEX inx8 ON Media (PoolId);
125
126 CREATE TABLE Pool (
127    PoolId INTEGER UNSIGNED AUTOINCREMENT,
128    Name VARCHAR(128) NOT NULL,
129    NumVols INTEGER UNSIGNED DEFAULT 0,
130    MaxVols INTEGER UNSIGNED DEFAULT 0,
131    UseOnce TINYINT DEFAULT 0,
132    UseCatalog TINYINT DEFAULT 1,
133    AcceptAnyVolume TINYINT DEFAULT 0,
134    VolRetention BIGINT UNSIGNED DEFAULT 0,
135    VolUseDuration BIGINT UNSIGNED DEFAULT 0,
136    MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
137    MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
138    MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
139    AutoPrune TINYINT DEFAULT 0,
140    Recycle TINYINT DEFAULT 0,
141    PoolType VARCHAR(20) NOT NULL,
142    LabelFormat VARCHAR(128) NOT NULL,
143    Enabled TINYINT DEFAULT 1,
144    ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
145    RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
146    UNIQUE (Name),
147    PRIMARY KEY (PoolId)
148    );
149
150
151 CREATE TABLE Client (
152    ClientId INTEGER UNSIGNED AUTOINCREMENT,
153    Name VARCHAR(128) NOT NULL,
154    Uname VARCHAR(255) NOT NULL,   -- uname -a field
155    AutoPrune TINYINT DEFAULT 0,
156    FileRetention BIGINT UNSIGNED DEFAULT 0,
157    JobRetention  BIGINT UNSIGNED DEFAULT 0,
158    UNIQUE (Name),
159    PRIMARY KEY(ClientId)
160    );
161
162 CREATE TABLE BaseFiles (
163    BaseId INTEGER UNSIGNED AUTOINCREMENT,
164    BaseJobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
165    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
166    FileId INTEGER UNSIGNED REFERENCES File NOT NULL,
167    FileIndex INTEGER UNSIGNED,
168    PRIMARY KEY(BaseId)
169    );
170
171 CREATE TABLE UnsavedFiles (
172    UnsavedId INTEGER UNSIGNED AUTOINCREMENT,
173    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
174    PathId INTEGER UNSIGNED REFERENCES Path NOT NULL,
175    FilenameId INTEGER UNSIGNED REFERENCES Filename NOT NULL,
176    PRIMARY KEY (UnsavedId)
177    );
178
179
180 CREATE TABLE NextId (
181    id INTEGER UNSIGNED DEFAULT 0,
182    TableName TEXT NOT NULL,
183    PRIMARY KEY (TableName)
184    );
185
186 -- Initialize JobId to start at 1
187 INSERT INTO NextId (id, TableName) VALUES (1, "Job");
188
189 CREATE TABLE Version (
190    VersionId INTEGER UNSIGNED NOT NULL 
191    );
192
193 -- Initialize Version            
194 INSERT INTO Version (VersionId) VALUES (7);
195
196 CREATE TABLE Counters (
197    Counter TEXT NOT NULL,     
198    MinValue INTEGER DEFAULT 0, 
199    MaxValue INTEGER DEFAULT 0,
200    CurrentValue INTEGER DEFAULT 0,
201    WrapCounter TEXT NOT NULL,
202    PRIMARY KEY (Counter)
203    );
204
205 PRAGMA default_synchronous = OFF;
206 PRAGMA default_cache_size = 10000;
207
208 END-OF-DATA
209
210 chmod 640 bacula.db
211 exit 0