]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_postgresql_tables.in
Integrate Nicolas' patch for direct DVD support.
[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 $* bacula -f - <<END-OF-DATA
8
9 create table version
10 (
11     versionid         integer               not null
12 );
13
14 INSERT INTO Version (VersionId) VALUES (8);
15
16 create table counters
17 (
18     counter           text                  not null,
19     minvalue          integer                       ,
20     maxvalue          integer                       ,
21     currentvalue      integer                       ,
22     wrapcounter       text                  not null,
23     primary key (counter)
24 );
25
26 create table filename
27 (
28     filenameid        serial                not null,
29     name              text                  not null,
30     primary key (filenameid)
31 );
32
33 create index filename_name_idx on filename (name);
34
35 create table path
36 (
37     pathid            serial                not null,
38     path              text                  not null,
39     primary key (pathid)
40 );
41
42 create index path_name_idx on path (path);
43
44 create table fileset
45 (
46     filesetid         serial                not null,
47     fileset           text                  not null,
48     md5               text                  not null,
49     createtime        timestamp without time zone not null,
50     primary key (filesetid)
51 );
52
53 create index fileset_name_idx on fileset (fileset);
54
55 create table pool
56 (
57     poolid            serial                not null,
58     name              text                  not null,
59     numvols           integer               not null
60         default 0,
61     maxvols           integer               not null
62         default 0,
63     useonce           smallint              not null,
64     usecatalog        smallint              not null,
65     acceptanyvolume   smallint                      
66         default 0,
67     volretention      bigint                not null,
68     voluseduration    bigint                not null,
69     maxvoljobs        integer               not null
70         default 0,
71     maxvolfiles       integer               not null
72         default 0,
73     maxvolbytes       bigint                not null,
74     autoprune         smallint              not null
75         default 0,
76     recycle           smallint                      
77         default 0,
78     pooltype          text                          
79         check (pooltype is null or (pooltype in ('Backup','Copy','Cloned','Archive','Migration'))),
80     labelformat       text                  not null,
81     enabled           smallint              not null
82         default 1,
83     scratchpoolid     integer                       ,
84     recyclepoolid     integer                       ,
85     primary key (poolid)
86 );
87
88 create index pool_name_idx on pool (name);
89
90 create table client
91 (
92     clientid          serial                not null,
93     name              text                  not null,
94     uname             text                  not null,
95     autoprune         smallint                      
96         default 0,
97     fileretention     bigint                not null,
98     jobretention      bigint                not null,
99     primary key (clientid)
100 );
101
102 create unique index client_name_idx on client (name);
103
104 create table media
105 (
106     mediaid           serial                not null,
107     volumename        text                  not null,
108     slot              integer               not null
109         default 0,
110     poolid            integer               not null,
111     mediatype         text                  not null,
112     firstwritten      timestamp without time zone,
113     lastwritten       timestamp without time zone,
114     labeldate         timestamp without time zone,
115     voljobs           integer               not null
116         default 0,
117     volfiles          integer               not null
118         default 0,
119     volblocks         integer               not null
120         default 0,
121     volmounts         integer               not null
122         default 0,
123     volbytes          bigint                not null
124         default 0,
125     volparts          integer               not null
126         default 0,
127     volerrors         integer               not null
128         default 0,
129     volwrites         integer               not null
130         default 0,
131     volcapacitybytes  bigint                not null,
132     volstatus         text                  not null
133         check (volstatus in ('Full','Archive','Append','Recycle','Purged','Read-Only','Disabled','Error','Busy',
134             'Used','Cleaning')),
135     recycle           smallint              not null
136         default 0,
137     volretention      bigint                not null
138         default 0,
139     voluseduration    bigint                not null
140         default 0,
141     maxvoljobs        integer               not null
142         default 0,
143     maxvolfiles       integer               not null
144         default 0,
145     maxvolbytes       bigint                not null
146         default 0,
147     inchanger         smallint              not null
148         default 0,
149     mediaaddressing   smallint              not null
150         default 0,
151     volreadtime       bigint                not null
152         default 0,
153     volwritetime      bigint                not null
154         default 0,
155     endfile           integer               not null
156         default 0,
157     endblock          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        integer               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 index file_jobid_idx on file (jobid);
216 create index file_fp_idx on file (filenameid, pathid);
217
218 --
219 -- Possibly add one or more of the following indexes
220 --  if your Verifies are too slow.
221 --
222 -- create index file_pathid_idx on file(pathid);
223 -- create index file_filenameid_idx on file(filenameid);
224 -- create index file_jpfid_idx on file (jobid, pathid, filenameid);
225
226 create table jobmedia
227 (
228     jobmediaid        serial                not null,
229     jobid             integer               not null,
230     mediaid           integer               not null,
231     firstindex        integer               not null
232         default 0,
233     lastindex         integer               not null
234         default 0,
235     startfile         integer               not null
236         default 0,
237     endfile           integer               not null
238         default 0,
239     startblock        bigint                not null
240         default 0,
241     endblock          bigint                not null
242         default 0,
243     volindex          integer               not null
244         default 0,
245     primary key (jobmediaid)
246 );
247
248 create index job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
249
250 create table basefiles
251 (
252     baseid            serial                not null,
253     jobid             integer               not null,
254     fileid            integer               not null,
255     fileindex         integer                       ,
256     basejobid         integer                       ,
257     primary key (baseid)
258 );
259
260 create table unsavedfiles
261 (
262     UnsavedId         integer               not null,
263     jobid             integer               not null,
264     pathid            integer               not null,
265     filenameid        integer               not null,
266     primary key (UnsavedId)
267 );
268
269 create table CDImages 
270 (
271    MediaId integer not null,
272    LastBurn timestamp without time zone not null,
273    primary key (MediaId)
274 );
275
276 -- Make sure we have appropriate permissions
277
278
279 END-OF-DATA
280 then
281    echo "Creation of Bacula PostgreSQL tables succeeded."
282 else
283    echo "Creation of Bacula PostgreSQL tables failed."
284 fi
285 exit 0