]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/make_postgresql_tables.in
ebl Add ClientId in db_create_job_record
[bacula/bacula] / bacula / src / cats / make_postgresql_tables.in
index 337a74ff4e2286f046874811e98a51f4eaa91c9b..6f24d6b377c2ccb5ba9efe51aaf7808a36322c63 100644 (file)
 #
 bindir=@SQL_BINDIR@
 
 #
 bindir=@SQL_BINDIR@
 
-if $bindir/psql $* -f - <<END-OF-DATA
-\c bacula
+$bindir/psql -f - -d bacula $* <<END-OF-DATA
 
 
-create table version
+CREATE TABLE filename
 (
 (
-    versionid         integer               not null
+    filenameid       serial      not null,
+    name             text        not null,
+    primary key (filenameid)
 );
 
 );
 
-INSERT INTO Version (VersionId) VALUES (7);
+CREATE INDEX filename_name_idx on filename (name);
 
 
-create table counters
+CREATE TABLE path
 (
 (
-    counter           text                  not null,
-    minvalue          integer                       ,
-    maxvalue          integer                       ,
-    currentvalue      integer                       ,
-    wrapcounter       text                  not null,
-    primary key (counter)
+    pathid           serial      not null,
+    path             text        not null,
+    primary key (pathid)
 );
 
 );
 
-create table filename
+CREATE INDEX path_name_idx on path (path);
+
+CREATE TABLE file
 (
 (
-    filenameid        serial                not null,
-    name              text                  not null,
-    primary key (filenameid)
+    fileid           serial      not null,
+    fileindex        integer     not null  default 0,
+    jobid            integer     not null,
+    pathid           integer     not null,
+    filenameid       integer     not null,
+    markid           integer     not null  default 0,
+    lstat            text        not null,
+    md5              text        not null,
+    primary key (fileid)
 );
 
 );
 
-create index filename_name_idx on filename (name);
+CREATE INDEX file_jobid_idx on file (jobid);
+CREATE INDEX file_fp_idx on file (filenameid, pathid);
+
+--
+-- Possibly add one or more of the following indexes
+--  if your Verifies are too slow.
+--
+-- CREATE INDEX file_pathid_idx on file(pathid);
+-- CREATE INDEX file_filenameid_idx on file(filenameid);
+-- CREATE INDEX file_jpfid_idx on file (jobid, pathid, filenameid);
 
 
-create table path
+CREATE TABLE job
 (
 (
-    pathid            serial                not null,
-    path              text                  not null,
-    primary key (pathid)
+    jobid            serial      not null,
+    job              text        not null,
+    name             text        not null,
+    type             char(1)     not null,
+    level            char(1)     not null,
+    clientid         integer     default 0,
+    jobstatus        char(1)     not null,
+    schedtime        timestamp   without time zone,
+    starttime        timestamp   without time zone,
+    endtime          timestamp   without time zone,
+    realendtime       timestamp   without time zone,
+    jobtdate         bigint      default 0,
+    volsessionid      integer    default 0,
+    volsessiontime    integer    default 0,
+    jobfiles         integer     default 0,
+    jobbytes         bigint      default 0,
+    joberrors        integer     default 0,
+    jobmissingfiles   integer    default 0,
+    poolid           integer     default 0,
+    filesetid        integer     default 0,
+    purgedfiles       smallint   default 0,
+    hasbase          smallint    default 0,
+    priorjobid       integer     default 0,
+    primary key (jobid)
 );
 
 );
 
-create index path_name_idx on path (path);
+CREATE INDEX job_name_idx on job (name);
 
 
-create table fileset
-(
-    filesetid         serial                not null,
-    fileset           text                  not null,
-    md5               text                  not null,
-    createtime        timestamp without time zone not null,
-    primary key (filesetid)
+CREATE TABLE Location (
+   LocationId        serial      not null,
+   Location          text        not null,
+   Cost              integer     default 0,
+   Enabled           smallint,
+   primary key (LocationId)
 );
 
 );
 
-create index fileset_name_idx on fileset (fileset);
 
 
-create table pool
+CREATE TABLE fileset
 (
 (
-    poolid            serial                not null,
-    name              text                  not null,
-    numvols           integer               not null
-        default 0,
-    maxvols           integer               not null
-        default 0,
-    useonce           smallint              not null,
-    usecatalog        smallint              not null,
-    acceptanyvolume   smallint                      
-        default 0,
-    volretention      bigint                not null,
-    voluseduration    bigint                not null,
-    maxvoljobs        integer               not null
-        default 0,
-    maxvolfiles       integer               not null
-        default 0,
-    maxvolbytes       bigint                not null,
-    autoprune         smallint              not null
-        default 0,
-    recycle           smallint                      
-        default 0,
-    pooltype          text                          
-        check (pooltype is null or (pooltype in ('Backup','Copy','Cloned','Archive','Migration'))),
-    labelformat       text                  not null,
-    enabled           smallint              not null
-        default 1,
-    scratchpoolid     integer                       ,
-    recyclepoolid     integer                       ,
-    primary key (poolid)
+    filesetid        serial      not null,
+    fileset          text        not null,
+    md5              text        not null,
+    createtime       timestamp without time zone not null,
+    primary key (filesetid)
 );
 
 );
 
-create index pool_name_idx on pool (name);
+CREATE INDEX fileset_name_idx on fileset (fileset);
 
 
-create table client
+CREATE TABLE jobmedia
 (
 (
-    clientid          serial                not null,
-    name              text                  not null,
-    uname             text                  not null,
-    autoprune         smallint                      
-        default 0,
-    fileretention     bigint                not null,
-    jobretention      bigint                not null,
-    primary key (clientid)
+    jobmediaid       serial      not null,
+    jobid            integer     not null,
+    mediaid          integer     not null,
+    firstindex       integer     default 0,
+    lastindex        integer     default 0,
+    startfile        integer     default 0,
+    endfile          integer     default 0,
+    startblock       bigint      default 0,
+    endblock         bigint      default 0,
+    volindex         integer     default 0,
+    copy             integer     default 0,
+    primary key (jobmediaid)
 );
 
 );
 
-create unique index client_name_idx on client (name);
+CREATE INDEX job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
 
 
-create table media
+CREATE TABLE media
 (
 (
-    mediaid           serial                not null,
-    volumename        text                  not null,
-    slot              integer               not null
-        default 0,
-    poolid            integer               not null,
-    mediatype         text                  not null,
-    firstwritten      timestamp without time zone not null
-        default current_timestamp,
-    lastwritten       timestamp without time zone not null
-        default current_timestamp,
-    labeldate         timestamp without time zone not null
-       default current_timestamp,
-    voljobs           integer               not null
-        default 0,
-    volfiles          integer               not null
-        default 0,
-    volblocks         integer               not null
-        default 0,
-    volmounts         integer               not null
-        default 0,
-    volbytes          bigint                not null
-        default 0,
-    volerrors         integer               not null
-        default 0,
-    volwrites         integer               not null
-        default 0,
-    volcapacitybytes  bigint                not null,
-    volstatus         text                  not null
-        check (volstatus in ('Full','Archive','Append','Recycle','Purged','Read-Only','Disabled','Error','Busy',
-            'Used','Cleaning')),
-    recycle           smallint              not null
-        default 0,
-    volretention      bigint                not null
-        default 0,
-    voluseduration    bigint                not null
-        default 0,
-    maxvoljobs        integer               not null
-        default 0,
-    maxvolfiles       integer               not null
-        default 0,
-    maxvolbytes       bigint                not null
-        default 0,
-    drive             integer               not null
-        default 0,
-    inchanger         smallint              not null
-        default 0,
-    mediaaddressing   smallint              not null
-        default 0,
+    mediaid          serial      not null,
+    volumename       text        not null,
+    slot             integer     default 0,
+    poolid           integer     default 0,
+    mediatype        text        not null,
+    mediatypeid       integer    default 0,
+    labeltype        integer     default 0,
+    firstwritten      timestamp   without time zone,
+    lastwritten       timestamp   without time zone,
+    labeldate        timestamp   without time zone,
+    voljobs          integer     default 0,
+    volfiles         integer     default 0,
+    volblocks        integer     default 0,
+    volmounts        integer     default 0,
+    volbytes         bigint      default 0,
+    volparts         integer     default 0,
+    volerrors        integer     default 0,
+    volwrites        integer     default 0,
+    volcapacitybytes  bigint     default 0,
+    volstatus        text        not null
+       check (volstatus in ('Full','Archive','Append',
+             'Recycle','Purged','Read-Only','Disabled',
+             'Error','Busy','Used','Cleaning','Scratch')),
+    enabled          smallint    default 1,
+    recycle          smallint    default 0,
+    volretention      bigint     default 0,
+    voluseduration    bigint     default 0,
+    maxvoljobs       integer     default 0,
+    maxvolfiles       integer    default 0,
+    maxvolbytes       bigint     default 0,
+    inchanger        smallint    default 0,
+    StorageId        integer     default 0,
+    DeviceId         integer     default 0,
+    mediaaddressing   smallint   default 0,
+    volreadtime       bigint     default 0,
+    volwritetime      bigint     default 0,
+    endfile          integer     default 0,
+    endblock         bigint      default 0,
+    LocationId       integer     default 0,
+    recyclecount      integer    default 0,
+    initialwrite      timestamp   without time zone,
+    scratchpoolid     integer    default 0,
+    recyclepoolid     integer    default 0,
+    comment          text,
     primary key (mediaid)
 );
 
 create unique index media_volumename_id on media (volumename);
 
     primary key (mediaid)
 );
 
 create unique index media_volumename_id on media (volumename);
 
-create table job
+CREATE TABLE MediaType (
+   MediaTypeId SERIAL,
+   MediaType TEXT NOT NULL,
+   ReadOnly INTEGER DEFAULT 0,
+   PRIMARY KEY(MediaTypeId)
+   );
+
+CREATE TABLE Storage (
+   StorageId SERIAL,
+   Name TEXT NOT NULL,
+   AutoChanger INTEGER DEFAULT 0,
+   PRIMARY KEY(StorageId)
+   );
+
+CREATE TABLE Device (
+   DeviceId SERIAL,
+   Name TEXT NOT NULL,
+   MediaTypeId INTEGER NOT NULL,
+   StorageId INTEGER NOT NULL,
+   DevMounts INTEGER NOT NULL DEFAULT 0,
+   DevReadBytes BIGINT NOT NULL DEFAULT 0,
+   DevWriteBytes BIGINT NOT NULL DEFAULT 0,
+   DevReadBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   DevWriteBytesSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   DevReadTime BIGINT NOT NULL DEFAULT 0,
+   DevWriteTime BIGINT NOT NULL DEFAULT 0,
+   DevReadTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   DevWriteTimeSinceCleaning BIGINT NOT NULL DEFAULT 0,
+   CleaningDate timestamp without time zone,
+   CleaningPeriod BIGINT NOT NULL DEFAULT 0,
+   PRIMARY KEY(DeviceId)
+   );
+
+
+CREATE TABLE pool
 (
 (
-    jobid             serial                not null,
-    job               text                  not null,
-    name              text                  not null,
-    type              char(1)               not null,
-    level             char(1)               not null,
-    clientid          integer                       ,
-    jobstatus         char(1)               not null,
-    schedtime         timestamp without time zone not null,
-    starttime         timestamp without time zone         ,
-    endtime           timestamp without time zone         ,
-    jobtdate          bigint                not null,
-    volsessionid      integer               not null
-        default 0,
-    volsessiontime    integer               not null
-        default 0,
-    jobfiles          integer               not null
-       default 0,
-    jobbytes          bigint                not null
-        default 0,
-    joberrors         integer               not null
-        default 0,
-    jobmissingfiles   integer               not null
-        default 0,
-    poolid            integer                       ,
-    filesetid         integer                       ,
-    purgedfiles       smallint              not null
-        default 0,
-    hasbase           smallint              not null
-        default 0,
-    primary key (jobid)
+    poolid           serial      not null,
+    name             text        not null,
+    numvols          integer     default 0,
+    maxvols          integer     default 0,
+    useonce          smallint    default 0,
+    usecatalog       smallint    default 0,
+    acceptanyvolume   smallint   default 0,
+    volretention      bigint     default 0,
+    voluseduration    bigint     default 0,
+    maxvoljobs       integer     default 0,
+    maxvolfiles       integer    default 0,
+    maxvolbytes       bigint     default 0,
+    autoprune        smallint    default 0,
+    recycle          smallint    default 0,
+    pooltype         text                          
+      check (pooltype in ('Backup','Copy','Cloned','Archive','Migration','Scratch')),
+    labeltype        integer     default 0,
+    labelformat       text       not null,
+    enabled          smallint    default 1,
+    scratchpoolid     integer    default 0,
+    recyclepoolid     integer    default 0,
+    NextPoolId       integer     default 0,
+    MigrationHighBytes BIGINT    DEFAULT 0,
+    MigrationLowBytes  BIGINT    DEFAULT 0,
+    MigrationTime      BIGINT    DEFAULT 0,
+    primary key (poolid)
 );
 
 );
 
-create index job_name_idx on job (name);
-
-create table file
-(
-    fileid            serial                not null,
-    fileindex         integer               not null
-        default 0,
-    jobid             integer               not null,
-    pathid            integer               not null,
-    filenameid        bigint                not null,
-    markid            integer               not null
-        default 0,
-    lstat             text                  not null,
-    md5               text                  not null,
-    primary key (fileid)
-);
+CREATE INDEX pool_name_idx on pool (name);
 
 
-create table jobmedia
+CREATE TABLE client
 (
 (
-    jobmediaid        serial                not null,
-    jobid             integer               not null,
-    mediaid           integer               not null,
-    firstindex        integer               not null
-        default 0,
-    lastindex         integer               not null
-        default 0,
-    startfile         integer               not null
-        default 0,
-    endfile           integer               not null
-        default 0,
-    startblock        integer               not null
-        default 0,
-    endblock          integer               not null
-        default 0,
-    volindex          integer               not null
-        default 0,
-    primary key (jobmediaid)
+    clientid         serial      not null,
+    name             text        not null,
+    uname            text        not null,
+    autoprune        smallint    default 0,
+    fileretention     bigint     default 0,
+    jobretention      bigint     default 0,
+    primary key (clientid)
 );
 
 );
 
-create index job_media_job_id_media_id_idx on jobmedia (jobid, mediaid);
+create unique index client_name_idx on client (name);
 
 
-create table basefiles
+CREATE TABLE Log
 (
 (
-    baseid            serial                not null,
-    jobid             integer               not null,
-    fileid            integer               not null,
-    fileindex         integer                       ,
-    basejobid         integer                       ,
-    primary key (baseid)
+    LogId            serial      not null,
+    JobId            integer     not null,
+    Time             timestamp   without time zone,
+    LogText          text        not null,
+    primary key (LogId)
 );
 );
-
-create table unsavedfiles
-(
-    UnsavedId         integer               not null,
-    jobid             integer               not null,
-    pathid            integer               not null,
-    filenameid        integer               not null,
-    primary key (UnsavedId)
+create index log_name_idx on Log (JobId);
+
+CREATE TABLE LocationLog (
+   LocLogId SERIAL NOT NULL,
+   Date timestamp   without time zone,
+   Comment TEXT NOT NULL,
+   MediaId INTEGER DEFAULT 0,
+   LocationId INTEGER DEFAULT 0,
+   newvolstatus text not null
+       check (newvolstatus in ('Full','Archive','Append',
+             'Recycle','Purged','Read-Only','Disabled',
+             'Error','Busy','Used','Cleaning','Scratch')),
+   newenabled smallint,
+   PRIMARY KEY(LocLogId)
 );
 
 );
 
-alter table pool
-    add foreign key  (scratchpoolid)
-       references pool (poolid) on update cascade on delete cascade;
-
-alter table pool
-    add foreign key  (recyclepoolid)
-       references pool (poolid) on update cascade on delete cascade;
-
-alter table media
-    add foreign key  (poolid)
-       references pool (poolid) on update cascade on delete cascade;
 
 
-alter table job
-    add foreign key  (poolid)
-       references pool (poolid) on update cascade on delete cascade;
 
 
-alter table job
-    add foreign key  (filesetid)
-       references fileset (filesetid) on update cascade on delete cascade;
-
-alter table job
-    add foreign key  (clientid)
-       references client (clientid) on update cascade on delete cascade;
-
-alter table file
-    add foreign key  (jobid)
-       references job (jobid) on update cascade on delete cascade;
-
-alter table file
-    add foreign key  (pathid)
-       references path (pathid) on update cascade on delete restrict;
-
-alter table file
-    add foreign key  (filenameid)
-       references filename (filenameid) on update cascade on delete cascade;
-
-alter table jobmedia
-    add foreign key  (jobid)
-       references job (jobid) on update cascade on delete cascade;
+CREATE TABLE counters
+(
+    counter          text        not null,
+    minvalue         integer     default 0,
+    maxvalue         integer     default 0,
+    currentvalue      integer    default 0,
+    wrapcounter       text       not null,
+    primary key (counter)
+);
 
 
-alter table jobmedia
-    add foreign key  (mediaid)
-       references media (mediaid) on update cascade on delete cascade;
 
 
-alter table basefiles
-    add foreign key  (jobid)
-       references job (jobid) on update cascade on delete cascade;
 
 
-alter table basefiles
-    add foreign key  (fileid)
-       references file (fileid) on update cascade on delete cascade;
+CREATE TABLE basefiles
+(
+    baseid           serial                not null,
+    jobid            integer               not null,
+    fileid           integer               not null,
+    fileindex        integer                       ,
+    basejobid        integer                       ,
+    primary key (baseid)
+);
 
 
-alter table basefiles
-    add foreign key  (basejobid)
-       references job (jobid) on update cascade on delete cascade;
+CREATE TABLE unsavedfiles
+(
+    UnsavedId        integer               not null,
+    jobid            integer               not null,
+    pathid           integer               not null,
+    filenameid       integer               not null,
+    primary key (UnsavedId)
+);
 
 
-alter table unsavedfiles
-    add foreign key  (jobid)
-       references job (jobid) on update restrict on delete restrict;
+CREATE TABLE CDImages 
+(
+   MediaId integer not null,
+   LastBurn timestamp without time zone not null,
+   primary key (MediaId)
+);
 
 
-alter table unsavedfiles
-    add foreign key  (pathid)
-       references path (pathid) on update restrict on delete restrict;
 
 
-alter table unsavedfiles
-    add foreign key  (filenameid)
-       references filename (filenameid) on update restrict on delete restrict;
+CREATE TABLE version
+(
+    versionid        integer               not null
+);
 
 
+CREATE TABLE Status (
+   JobStatus CHAR(1) NOT NULL,
+   JobStatusLong TEXT, 
+   PRIMARY KEY (JobStatus)
+   );
+
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('C', 'Created, not yet running');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('R', 'Running');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('B', 'Blocked');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('T', 'Completed successfully');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('E', 'Terminated with errors');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('e', 'Non-fatal error');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('f', 'Fatal error');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('D', 'Verify found differences');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('A', 'Canceled by user');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('F', 'Waiting for Client');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('S', 'Waiting for Storage daemon');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('m', 'Waiting for new media');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('M', 'Waiting for media mount');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('s', 'Waiting for storage resource');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('j', 'Waiting for job resource');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('c', 'Waiting for client resource');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('d', 'Waiting on maximum jobs');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('t', 'Waiting on start time');
+INSERT INTO Status (JobStatus,JobStatusLong) VALUES
+   ('p', 'Waiting on higher priority jobs');
+
+
+INSERT INTO Version (VersionId) VALUES (10);
+
+-- Make sure we have appropriate permissions
 
 
 END-OF-DATA
 
 
 END-OF-DATA
+pstat=$?
+if test $pstat = 0; 
 then
    echo "Creation of Bacula PostgreSQL tables succeeded."
 else
    echo "Creation of Bacula PostgreSQL tables failed."
 fi
 then
    echo "Creation of Bacula PostgreSQL tables succeeded."
 else
    echo "Creation of Bacula PostgreSQL tables failed."
 fi
-exit 0
+exit $pstat