]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_postgresql_tables.in
b1e759bb2c76bb389955fbd8b61ae08b2698c00d
[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 - -d bacula $* <<END-OF-DATA
8
9 CREATE TABLE filename
10 (
11     filenameid        serial      not null,
12     name              text        not null,
13     primary key (filenameid)
14 );
15
16 CREATE INDEX filename_name_idx on filename (name);
17
18 CREATE TABLE path
19 (
20     pathid            serial      not null,
21     path              text        not null,
22     primary key (pathid)
23 );
24
25 CREATE INDEX path_name_idx on path (path);
26
27 CREATE TABLE file
28 (
29     fileid            serial      not null,
30     fileindex         integer     not null  default 0,
31     jobid             integer     not null,
32     pathid            integer     not null,
33     filenameid        integer     not null,
34     markid            integer     not null  default 0,
35     lstat             text        not null,
36     md5               text        not null,
37     primary key (fileid)
38 );
39
40 CREATE INDEX file_jobid_idx on file (jobid);
41 CREATE INDEX file_fp_idx on file (filenameid, pathid);
42
43 --
44 -- Possibly add one or more of the following indexes
45 --  if your Verifies are too slow.
46 --
47 -- CREATE INDEX file_pathid_idx on file(pathid);
48 -- CREATE INDEX file_filenameid_idx on file(filenameid);
49 -- CREATE INDEX file_jpfid_idx on file (jobid, pathid, filenameid);
50
51 CREATE TABLE job
52 (
53     jobid             serial      not null,
54     job               text        not null,
55     name              text        not null,
56     type              char(1)     not null,
57     level             char(1)     not null,
58     clientid          integer,
59     jobstatus         char(1)     not null,
60     schedtime         timestamp   without time zone not null,
61     starttime         timestamp   without time zone,
62     endtime           timestamp   without time zone,
63     jobtdate          bigint      not null,
64     volsessionid      integer     not null default 0,
65     volsessiontime    integer     not null default 0,
66     jobfiles          integer     not null default 0,
67     jobbytes          bigint      not null default 0,
68     joberrors         integer     not null default 0,
69     jobmissingfiles   integer     not null default 0,
70     poolid            integer,
71     filesetid         integer,
72     purgedfiles       smallint    not null default 0,
73     hasbase           smallint    not null default 0,
74     primary key (jobid)
75 );
76
77 CREATE INDEX job_name_idx on job (name);
78
79 CREATE TABLE fileset
80 (
81     filesetid         serial      not null,
82     fileset           text        not null,
83     md5               text        not null,
84     createtime        timestamp without time zone not null,
85     primary key (filesetid)
86 );
87
88 CREATE INDEX fileset_name_idx on fileset (fileset);
89
90 CREATE TABLE jobmedia
91 (
92     jobmediaid        serial      not null,
93     jobid             integer     not null,
94     mediaid           integer     not null,
95     firstindex        integer     not null default 0,
96     lastindex         integer     not null default 0,
97     startfile         integer     not null default 0,
98     endfile           integer     not null default 0,
99     startblock        bigint      not null default 0,
100     endblock          bigint      not null default 0,
101     volindex          integer     not null default 0,
102     primary key (jobmediaid)
103 );
104
105 CREATE INDEX job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
106
107 CREATE TABLE media
108 (
109     mediaid           serial      not null,
110     volumename        text        not null,
111     slot              integer     not null default 0,
112     poolid            integer     not null,
113     mediatype         text        not null,
114     labeltype         integer     not null default 0,
115     firstwritten      timestamp   without time zone,
116     lastwritten       timestamp   without time zone,
117     labeldate         timestamp   without time zone,
118     voljobs           integer     not null default 0,
119     volfiles          integer     not null default 0,
120     volblocks         integer     not null default 0,
121     volmounts         integer     not null default 0,
122     volbytes          bigint      not null default 0,
123     volparts          integer     not null default 0,
124     volerrors         integer     not null default 0,
125     volwrites         integer     not null default 0,
126     volcapacitybytes  bigint      not null default 0,
127     volstatus         text        not null
128         check (volstatus in ('Full','Archive','Append',
129               'Recycle','Purged','Read-Only','Disabled',
130               'Error','Busy','Used','Cleaning')),
131     recycle           smallint    not null default 0,
132     volretention      bigint      not null default 0,
133     voluseduration    bigint      not null default 0,
134     maxvoljobs        integer     not null default 0,
135     maxvolfiles       integer     not null default 0,
136     maxvolbytes       bigint      not null default 0,
137     inchanger         smallint    not null default 0,
138     StorageId         integer              default 0,
139     mediaaddressing   smallint    not null default 0,
140     volreadtime       bigint      not null default 0,
141     volwritetime      bigint      not null default 0,
142     endfile           integer     not null default 0,
143     endblock          bigint      not null default 0,
144     primary key (mediaid)
145 );
146
147 create unique index media_volumename_id on media (volumename);
148
149  
150 CREATE TABLE MediaType (
151    MediaTypeId SERIAL,
152    MediaType TEXT NOT NULL,
153    ReadOnly INTEGER DEFAULT 0,
154    PRIMARY KEY(MediaTypeId)
155    );
156
157 CREATE TABLE Device (
158    DeviceId SERIAL,
159    Name TEXT NOT NULL,
160    MediaTypeId INTEGER NOT NULL,
161    StorageId INTEGER UNSIGNED,
162    DevMounts INTEGER NOT NULL DEFAULT 0,
163    DevReadBytes BIGINT NOT NULL DEFAULT 0,
164    DevWriteBytes BIGINT NOT NULL DEFAULT 0,
165    DevReadBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
166    DevWriteBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
167    DevReadTime BIGINT NOT NULL DEFAULT 0,
168    DevWriteTime BIGINT NOT NULL DEFAULT 0,
169    DevReadTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,
170    DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
171    CleaningDate TIMESTAMP WITHOUT TIME ZONE,
172    CleaningPeriod BIGINT NOT NULL DEFAULT 0,
173    PRIMARY KEY(DeviceId)
174    );
175
176 CREATE TABLE Storage (
177    StorageId SERIAL,
178    Name TEXT NOT NULL,
179    AutoChanger INTEGER DEFAULT 0,
180    PRIMARY KEY(StorageId)
181    );
182
183 CREATE TABLE pool
184 (
185     poolid            serial      not null,
186     name              text        not null,
187     numvols           integer     not null default 0,
188     maxvols           integer     not null default 0,
189     useonce           smallint    not null default 0,
190     usecatalog        smallint    not null default 0,
191     acceptanyvolume   smallint    not null default 0,
192     volretention      bigint      not null default 0,
193     voluseduration    bigint      not null default 0,
194     maxvoljobs        integer     not null default 0,
195     maxvolfiles       integer     not null default 0,
196     maxvolbytes       bigint      not null default 0,
197     autoprune         smallint    not null default 0,
198     recycle           smallint    not null default 0,
199     pooltype          text                          
200         check (pooltype is null or (pooltype in ('Backup','Copy','Cloned','Archive','Migration'))),
201     labeltype         integer     not null default 0,
202     labelformat       text        not null,
203     enabled           smallint    not null default 1,
204     scratchpoolid     integer default 0,
205     recyclepoolid     integer default 0,
206     NextPoolId        integer default 0,
207     MigrationHighBytes BIGINT DEFAULT 0,
208     MigrationLowBytes  BIGINT DEFAULT 0,
209     MigrationTime      BIGINT DEFAULT 0,
210     primary key (poolid)
211 );
212
213 CREATE INDEX pool_name_idx on pool (name);
214
215 CREATE TABLE client
216 (
217     clientid          serial      not null,
218     name              text        not null,
219     uname             text        not null,
220     autoprune         smallint    default 0,
221     fileretention     bigint      not null,
222     jobretention      bigint      not null,
223     primary key (clientid)
224 );
225
226 create unique index client_name_idx on client (name);
227
228
229 CREATE TABLE counters
230 (
231     counter           text        not null,
232     minvalue          integer,
233     maxvalue          integer,
234     currentvalue      integer,
235     wrapcounter       text        not null,
236     primary key (counter)
237 );
238
239 CREATE TABLE version
240 (
241     versionid         integer               not null
242 );
243
244 INSERT INTO Version (VersionId) VALUES (8);
245
246
247 CREATE TABLE basefiles
248 (
249     baseid            serial                not null,
250     jobid             integer               not null,
251     fileid            integer               not null,
252     fileindex         integer                       ,
253     basejobid         integer                       ,
254     primary key (baseid)
255 );
256
257 CREATE TABLE unsavedfiles
258 (
259     UnsavedId         integer               not null,
260     jobid             integer               not null,
261     pathid            integer               not null,
262     filenameid        integer               not null,
263     primary key (UnsavedId)
264 );
265
266 CREATE TABLE CDImages 
267 (
268    MediaId integer not null,
269    LastBurn timestamp without time zone not null,
270    primary key (MediaId)
271 );
272
273 -- Make sure we have appropriate permissions
274
275
276 END-OF-DATA
277 then
278    echo "Creation of Bacula PostgreSQL tables succeeded."
279 else
280    echo "Creation of Bacula PostgreSQL tables failed."
281 fi
282 exit 0