]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_postgresql_tables.in
Remove "not null" and "default current_timestamp" from
[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,
114     lastwritten       timestamp without time zone,
115     labeldate         timestamp without time zone,
116     voljobs           integer               not null
117         default 0,
118     volfiles          integer               not null
119         default 0,
120     volblocks         integer               not null
121         default 0,
122     volmounts         integer               not null
123         default 0,
124     volbytes          bigint                not null
125         default 0,
126     volerrors         integer               not null
127         default 0,
128     volwrites         integer               not null
129         default 0,
130     volcapacitybytes  bigint                not null,
131     volstatus         text                  not null
132         check (volstatus in ('Full','Archive','Append','Recycle','Purged','Read-Only','Disabled','Error','Busy',
133             'Used','Cleaning')),
134     recycle           smallint              not null
135         default 0,
136     volretention      bigint                not null
137         default 0,
138     voluseduration    bigint                not null
139         default 0,
140     maxvoljobs        integer               not null
141         default 0,
142     maxvolfiles       integer               not null
143         default 0,
144     maxvolbytes       bigint                not null
145         default 0,
146     inchanger         smallint              not null
147         default 0,
148     mediaaddressing   smallint              not null
149         default 0,
150     volreadtime       bigint                not null
151         default 0,
152     volwritetime      bigint                not null
153         default 0,
154     primary key (mediaid)
155 );
156
157 create unique index media_volumename_id on media (volumename);
158
159 create table job
160 (
161     jobid             serial                not null,
162     job               text                  not null,
163     name              text                  not null,
164     type              char(1)               not null,
165     level             char(1)               not null,
166     clientid          integer                       ,
167     jobstatus         char(1)               not null,
168     schedtime         timestamp without time zone not null,
169     starttime         timestamp without time zone         ,
170     endtime           timestamp without time zone         ,
171     jobtdate          bigint                not null,
172     volsessionid      integer               not null
173         default 0,
174     volsessiontime    integer               not null
175         default 0,
176     jobfiles          integer               not null
177         default 0,
178     jobbytes          bigint                not null
179         default 0,
180     joberrors         integer               not null
181         default 0,
182     jobmissingfiles   integer               not null
183         default 0,
184     poolid            integer                       ,
185     filesetid         integer                       ,
186     purgedfiles       smallint              not null
187         default 0,
188     hasbase           smallint              not null
189         default 0,
190     primary key (jobid)
191 );
192
193 create index job_name_idx on job (name);
194
195 create table file
196 (
197     fileid            serial                not null,
198     fileindex         integer               not null
199         default 0,
200     jobid             integer               not null,
201     pathid            integer               not null,
202     filenameid        bigint                not null,
203     markid            integer               not null
204         default 0,
205     lstat             text                  not null,
206     md5               text                  not null,
207     primary key (fileid)
208 );
209
210 create table jobmedia
211 (
212     jobmediaid        serial                not null,
213     jobid             integer               not null,
214     mediaid           integer               not null,
215     firstindex        integer               not null
216         default 0,
217     lastindex         integer               not null
218         default 0,
219     startfile         integer               not null
220         default 0,
221     endfile           integer               not null
222         default 0,
223     startblock        integer               not null
224         default 0,
225     endblock          integer               not null
226         default 0,
227     volindex          integer               not null
228         default 0,
229     primary key (jobmediaid)
230 );
231
232 create index job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
233
234 create table basefiles
235 (
236     baseid            serial                not null,
237     jobid             integer               not null,
238     fileid            integer               not null,
239     fileindex         integer                       ,
240     basejobid         integer                       ,
241     primary key (baseid)
242 );
243
244 create table unsavedfiles
245 (
246     UnsavedId         integer               not null,
247     jobid             integer               not null,
248     pathid            integer               not null,
249     filenameid        integer               not null,
250     primary key (UnsavedId)
251 );
252
253 alter table pool
254     add foreign key  (scratchpoolid)
255        references pool (poolid) on update cascade on delete cascade;
256
257 alter table pool
258     add foreign key  (recyclepoolid)
259        references pool (poolid) on update cascade on delete cascade;
260
261 alter table media
262     add foreign key  (poolid)
263        references pool (poolid) on update cascade on delete cascade;
264
265 alter table job
266     add foreign key  (poolid)
267        references pool (poolid) on update cascade on delete cascade;
268
269 alter table job
270     add foreign key  (filesetid)
271        references fileset (filesetid) on update cascade on delete cascade;
272
273 alter table job
274     add foreign key  (clientid)
275        references client (clientid) on update cascade on delete cascade;
276
277 alter table file
278     add foreign key  (jobid)
279        references job (jobid) on update cascade on delete cascade;
280
281 alter table file
282     add foreign key  (pathid)
283        references path (pathid) on update cascade on delete restrict;
284
285 alter table file
286     add foreign key  (filenameid)
287        references filename (filenameid) on update cascade on delete cascade;
288
289 alter table jobmedia
290     add foreign key  (jobid)
291        references job (jobid) on update cascade on delete cascade;
292
293 alter table jobmedia
294     add foreign key  (mediaid)
295        references media (mediaid) on update cascade on delete cascade;
296
297 alter table basefiles
298     add foreign key  (jobid)
299        references job (jobid) on update cascade on delete cascade;
300
301 alter table basefiles
302     add foreign key  (fileid)
303        references file (fileid) on update cascade on delete cascade;
304
305 alter table basefiles
306     add foreign key  (basejobid)
307        references job (jobid) on update cascade on delete cascade;
308
309 alter table unsavedfiles
310     add foreign key  (jobid)
311        references job (jobid) on update restrict on delete restrict;
312
313 alter table unsavedfiles
314     add foreign key  (pathid)
315        references path (pathid) on update restrict on delete restrict;
316
317 alter table unsavedfiles
318     add foreign key  (filenameid)
319        references filename (filenameid) on update restrict on delete restrict;
320
321
322
323 END-OF-DATA
324 then
325    echo "Creation of Bacula PostgreSQL tables succeeded."
326 else
327    echo "Creation of Bacula PostgreSQL tables failed."
328 fi
329 exit 0