]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/update_postgresql_tables.in
Correct compile error
[bacula/bacula] / bacula / src / cats / update_postgresql_tables.in
index ea746d5835cbe0fed7cdb22b24f2b64f8145812e..97ecee2650bce3c55cffc0729fd966a21441b8a1 100755 (executable)
 #!/bin/sh
 #
-# Shell script to update PostgreSQL tables from version 1.36 to 1.38
+# Shell script to update PostgreSQL tables from version 1.38 to 2.0.0 or higher
 #
 echo " "
-echo "This script will update a Bacula PostgreSQL database from version 8 to 9"
+echo "This script will update a Bacula PostgreSQL database from version 9 to 10"
+echo " which is needed to convert from Bacula version 1.38.x to 2.0.0 or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
 echo " "
 bindir=@SQL_BINDIR@
-
-if $bindir/psql -f - -d bacula $* <<END-OF-DATA
-
-ALTER TABLE media ADD COLUMN labeltype integer;
-UPDATE media SET labeltype=0;
-ALTER TABLE media ALTER COLUMN labeltype SET NOT NULL;
-ALTER TABLE media ADD COLUMN StorageId integer;
-UPDATE media SET StorageId=0;
-
-ALTER TABLE pool ADD COLUMN labeltype integer;
-UPDATE pool set labeltype=0;
-ALTER TABLE pool ALTER COLUMN labeltype SET NOT NULL;
-ALTER TABLE pool ADD COLUMN NextPoolId       integer;
-ALTER TABLE pool SET NextPoolId=0;
-ALTER TABLE pool ADD COLUMN MigrationHighBytes BIGINT;
-ALTER TABLE pool SET MigrationHighBytes=0;
-ALTER TABLE pool ADD COLUMN MigrationLowBytes  BIGINT;
-ALTER TABLE pool SET MigrationLowBytes=0;
-ALTER TABLE pool ADD COLUMN MigrationTime      BIGINT;
-ALTER TABLE pool SET MigrationTime=0;
-
-
-ALTER TABLE jobmedia ADD COLUMN Copy integer;
-UPDATE jobmedia SET Copy=0;
-ALTER TABLE jobmedia ADD COLUMN Stripe integer;
-UPDATE jobmedia SET Stripe=0;
-
-
-ALTER TABLE media ADD COLUMN volparts integer;
-UPDATE media SET volparts=0;
-ALTER TABLE media ALTER COLUMN volparts SET NOT NULL;
-
-CREATE TABLE MediaType (
-   MediaTypeId SERIAL,
-   MediaType TEXT NOT NULL,
-   ReadOnly INTEGER DEFAULT 0,
-   PRIMARY KEY(MediaTypeId)
-   );
-
-CREATE TABLE Device (
-   DeviceId SERIAL,
-   Name TEXT NOT NULL,
-   MediaTypeId INTEGER NOT NULL,
-   StorageId INTEGER UNSIGNED,
-   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 UNSIGNED DEFAULT 0,
-   CleaningDate TIMESTAMP WITHOUT TIME ZONE,
-   CleaningPeriod BIGINT NOT NULL DEFAULT 0,
-   PRIMARY KEY(DeviceId)
-   );
-
-CREATE TABLE Storage (
-   StorageId SERIAL,
-   Name TEXT NOT NULL,
-   AutoChanger INTEGER DEFAULT 0,
-   PRIMARY KEY(StorageId)
-   );
-
-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');
+db_name=@db_name@
+
+if $bindir/psql -f - -d ${db_name} $* <<END-OF-DATA
+
+ALTER TABLE media ADD COLUMN DeviceId integer;
+UPDATE media SET DeviceId=0;
+ALTER TABLE media ADD COLUMN MediaTypeId integer;
+UPDATE media SET MediaTypeId=0;
+ALTER TABLE media ADD COLUMN LocationId integer;
+UPDATE media SET LocationId=0;
+ALTER TABLE media ADD COLUMN RecycleCount integer;
+UPDATE media SET RecycleCount=0;
+ALTER TABLE media ADD COLUMN InitialWrite timestamp without time zone;
+ALTER TABLE media ADD COLUMN scratchpoolid integer;
+UPDATE media SET scratchpoolid=0;
+ALTER TABLE media ADD COLUMN recyclepoolid integer;
+UPDATE media SET recyclepoolid=0;
+ALTER TABLE media ADD COLUMN enabled integer;
+UPDATE media SET enabled=1;
+ALTER TABLE media ADD COLUMN Comment TEXT;
+
+ALTER TABLE job ADD COLUMN RealEndTime timestamp without time zone;
+ALTER TABLE job ADD COLUMN PriorJobId integer;
+UPDATE job SET PriorJobId=0;
+
+ALTER TABLE jobmedia DROP COLUMN Stripe;
+
+CREATE TABLE Location (
+   LocationId SERIAL NOT NULL,
+   Location TEXT NOT NULL,
+   Cost integer default 0,
+   Enabled integer,
+   PRIMARY KEY (LocationId)
+);
+
+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)
+);
+
+
+CREATE TABLE Log
+(
+    LogId            serial      not null,
+    JobId            integer     not null,
+    Time             timestamp   without time zone,
+    LogText          text        not null,
+    primary key (LogId)
+);
+create index log_name_idx on Log (JobId);
 
 
 DELETE FROM version;
-INSERT INTO version (versionId) VALUES (9);
+INSERT INTO version (versionId) VALUES (10);
 
 vacuum;