]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_postgresql_tables.in
Add volreadtime and volwritetime to media table.
[bacula/bacula] / bacula / src / cats / make_postgresql_tables.in
1 #!/bin/sh
2 #
3 # shell script to create Bacula PostgreSQL tables
4 #
5 bindir=@SQL_BINDIR@
6
7 if $bindir/psql $* -f - <<END-OF-DATA
8 \c bacula
9
10 create table version
11 (
12     versionid         integer               not null
13 );
14
15 INSERT INTO Version (VersionId) VALUES (7);
16
17 create table counters
18 (
19     counter           text                  not null,
20     minvalue          integer                       ,
21     maxvalue          integer                       ,
22     currentvalue      integer                       ,
23     wrapcounter       text                  not null,
24     primary key (counter)
25 );
26
27 create table filename
28 (
29     filenameid        serial                not null,
30     name              text                  not null,
31     primary key (filenameid)
32 );
33
34 create index filename_name_idx on filename (name);
35
36 create table path
37 (
38     pathid            serial                not null,
39     path              text                  not null,
40     primary key (pathid)
41 );
42
43 create index path_name_idx on path (path);
44
45 create table fileset
46 (
47     filesetid         serial                not null,
48     fileset           text                  not null,
49     md5               text                  not null,
50     createtime        timestamp without time zone not null,
51     primary key (filesetid)
52 );
53
54 create index fileset_name_idx on fileset (fileset);
55
56 create table pool
57 (
58     poolid            serial                not null,
59     name              text                  not null,
60     numvols           integer               not null
61         default 0,
62     maxvols           integer               not null
63         default 0,
64     useonce           smallint              not null,
65     usecatalog        smallint              not null,
66     acceptanyvolume   smallint                      
67         default 0,
68     volretention      bigint                not null,
69     voluseduration    bigint                not null,
70     maxvoljobs        integer               not null
71         default 0,
72     maxvolfiles       integer               not null
73         default 0,
74     maxvolbytes       bigint                not null,
75     autoprune         smallint              not null
76         default 0,
77     recycle           smallint                      
78         default 0,
79     pooltype          text                          
80         check (pooltype is null or (pooltype in ('Backup','Copy','Cloned','Archive','Migration'))),
81     labelformat       text                  not null,
82     enabled           smallint              not null
83         default 1,
84     scratchpoolid     integer                       ,
85     recyclepoolid     integer                       ,
86     primary key (poolid)
87 );
88
89 create index pool_name_idx on pool (name);
90
91 create table client
92 (
93     clientid          serial                not null,
94     name              text                  not null,
95     uname             text                  not null,
96     autoprune         smallint                      
97         default 0,
98     fileretention     bigint                not null,
99     jobretention      bigint                not null,
100     primary key (clientid)
101 );
102
103 create unique index client_name_idx on client (name);
104
105 create table media
106 (
107     mediaid           serial                not null,
108     volumename        text                  not null,
109     slot              integer               not null
110         default 0,
111     poolid            integer               not null,
112     mediatype         text                  not null,
113     firstwritten      timestamp without time zone not null
114         default current_timestamp,
115     lastwritten       timestamp without time zone not null
116         default current_timestamp,
117     labeldate         timestamp without time zone not null
118         default current_timestamp,
119     voljobs           integer               not null
120         default 0,
121     volfiles          integer               not null
122         default 0,
123     volblocks         integer               not null
124         default 0,
125     volmounts         integer               not null
126         default 0,
127     volbytes          bigint                not null
128         default 0,
129     volerrors         integer               not null
130         default 0,
131     volwrites         integer               not null
132         default 0,
133     volcapacitybytes  bigint                not null,
134     volstatus         text                  not null
135         check (volstatus in ('Full','Archive','Append','Recycle','Purged','Read-Only','Disabled','Error','Busy',
136             'Used','Cleaning')),
137     recycle           smallint              not null
138         default 0,
139     volretention      bigint                not null
140         default 0,
141     voluseduration    bigint                not null
142         default 0,
143     maxvoljobs        integer               not null
144         default 0,
145     maxvolfiles       integer               not null
146         default 0,
147     maxvolbytes       bigint                not null
148         default 0,
149     drive             integer               not null
150         default 0,
151     inchanger         smallint              not null
152         default 0,
153     mediaaddressing   smallint              not null
154         default 0,
155     volreadtime       bigint                not null
156         default 0,
157     volwritetime      bigint                not null
158         default 0,
159     primary key (mediaid)
160 );
161
162 create unique index media_volumename_id on media (volumename);
163
164 create table job
165 (
166     jobid             serial                not null,
167     job               text                  not null,
168     name              text                  not null,
169     type              char(1)               not null,
170     level             char(1)               not null,
171     clientid          integer                       ,
172     jobstatus         char(1)               not null,
173     schedtime         timestamp without time zone not null,
174     starttime         timestamp without time zone         ,
175     endtime           timestamp without time zone         ,
176     jobtdate          bigint                not null,
177     volsessionid      integer               not null
178         default 0,
179     volsessiontime    integer               not null
180         default 0,
181     jobfiles          integer               not null
182         default 0,
183     jobbytes          bigint                not null
184         default 0,
185     joberrors         integer               not null
186         default 0,
187     jobmissingfiles   integer               not null
188         default 0,
189     poolid            integer                       ,
190     filesetid         integer                       ,
191     purgedfiles       smallint              not null
192         default 0,
193     hasbase           smallint              not null
194         default 0,
195     primary key (jobid)
196 );
197
198 create index job_name_idx on job (name);
199
200 create table file
201 (
202     fileid            serial                not null,
203     fileindex         integer               not null
204         default 0,
205     jobid             integer               not null,
206     pathid            integer               not null,
207     filenameid        bigint                not null,
208     markid            integer               not null
209         default 0,
210     lstat             text                  not null,
211     md5               text                  not null,
212     primary key (fileid)
213 );
214
215 create table jobmedia
216 (
217     jobmediaid        serial                not null,
218     jobid             integer               not null,
219     mediaid           integer               not null,
220     firstindex        integer               not null
221         default 0,
222     lastindex         integer               not null
223         default 0,
224     startfile         integer               not null
225         default 0,
226     endfile           integer               not null
227         default 0,
228     startblock        integer               not null
229         default 0,
230     endblock          integer               not null
231         default 0,
232     volindex          integer               not null
233         default 0,
234     primary key (jobmediaid)
235 );
236
237 create index job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
238
239 create table basefiles
240 (
241     baseid            serial                not null,
242     jobid             integer               not null,
243     fileid            integer               not null,
244     fileindex         integer                       ,
245     basejobid         integer                       ,
246     primary key (baseid)
247 );
248
249 create table unsavedfiles
250 (
251     UnsavedId         integer               not null,
252     jobid             integer               not null,
253     pathid            integer               not null,
254     filenameid        integer               not null,
255     primary key (UnsavedId)
256 );
257
258 alter table pool
259     add foreign key  (scratchpoolid)
260        references pool (poolid) on update cascade on delete cascade;
261
262 alter table pool
263     add foreign key  (recyclepoolid)
264        references pool (poolid) on update cascade on delete cascade;
265
266 alter table media
267     add foreign key  (poolid)
268        references pool (poolid) on update cascade on delete cascade;
269
270 alter table job
271     add foreign key  (poolid)
272        references pool (poolid) on update cascade on delete cascade;
273
274 alter table job
275     add foreign key  (filesetid)
276        references fileset (filesetid) on update cascade on delete cascade;
277
278 alter table job
279     add foreign key  (clientid)
280        references client (clientid) on update cascade on delete cascade;
281
282 alter table file
283     add foreign key  (jobid)
284        references job (jobid) on update cascade on delete cascade;
285
286 alter table file
287     add foreign key  (pathid)
288        references path (pathid) on update cascade on delete restrict;
289
290 alter table file
291     add foreign key  (filenameid)
292        references filename (filenameid) on update cascade on delete cascade;
293
294 alter table jobmedia
295     add foreign key  (jobid)
296        references job (jobid) on update cascade on delete cascade;
297
298 alter table jobmedia
299     add foreign key  (mediaid)
300        references media (mediaid) on update cascade on delete cascade;
301
302 alter table basefiles
303     add foreign key  (jobid)
304        references job (jobid) on update cascade on delete cascade;
305
306 alter table basefiles
307     add foreign key  (fileid)
308        references file (fileid) on update cascade on delete cascade;
309
310 alter table basefiles
311     add foreign key  (basejobid)
312        references job (jobid) on update cascade on delete cascade;
313
314 alter table unsavedfiles
315     add foreign key  (jobid)
316        references job (jobid) on update restrict on delete restrict;
317
318 alter table unsavedfiles
319     add foreign key  (pathid)
320        references path (pathid) on update restrict on delete restrict;
321
322 alter table unsavedfiles
323     add foreign key  (filenameid)
324        references filename (filenameid) on update restrict on delete restrict;
325
326
327
328 END-OF-DATA
329 then
330    echo "Creation of Bacula PostgreSQL tables succeeded."
331 else
332    echo "Creation of Bacula PostgreSQL tables failed."
333 fi
334 exit 0