]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Update SQL scripts for version 1025
authorEric Bollengier <eric@baculasystems.com>
Fri, 15 Oct 2021 13:47:04 +0000 (15:47 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:56 +0000 (13:56 +0200)
bacula/src/cats/cats.h
bacula/src/cats/make_mysql_tables.in
bacula/src/cats/make_postgresql_tables.in
bacula/src/cats/make_sqlite3_tables.in
bacula/src/cats/update_mysql_tables.in
bacula/src/cats/update_postgresql_tables.in
bacula/updatedb/update_mysql_tables_1024_to_1025.in [new file with mode: 0644]
bacula/updatedb/update_postgresql_tables_1024_to_1025.in [new file with mode: 0644]

index 419d979c8a7521d72fdf0c0a9fd2507f0ebe0afc..2881e226adb15c3a96090deedb9739f9a648399a 100644 (file)
@@ -48,7 +48,7 @@
  */
 
 /* Current database version number for all drivers */
-#define BDB_VERSION 1024
+#define BDB_VERSION 1025
 
 typedef void (DB_LIST_HANDLER)(void *, const char *);
 typedef int (DB_RESULT_HANDLER)(void *, int, char **);
index 9dec640a1ee93a79d80565f4fd6ec8de856416e9..6c2ae14d54b1450ae2cd1ee32286ebad50afce53 100644 (file)
@@ -607,7 +607,7 @@ CREATE TABLE Version (
    );
 
 -- Initialize Version
-INSERT INTO Version (VersionId) VALUES (1024);
+INSERT INTO Version (VersionId) VALUES (1025);
 
 END-OF-DATA
 then
index 6d89aa9044483f47d777e579e45149a6cab47ae8..4481a53432a3fc20b8f4a62d8aeeedfc74549366 100644 (file)
@@ -628,7 +628,7 @@ CREATE UNIQUE INDEX snapshot_idx ON Snapshot (Device text_pattern_ops,
                                              Volume text_pattern_ops,
                                              Name text_pattern_ops);
 
-INSERT INTO Version (VersionId) VALUES (1024);
+INSERT INTO Version (VersionId) VALUES (1025);
 
 -- Make sure we have appropriate permissions
 
index bb8b12d99b629b49b1018363607ca37e0a12a3b9..9bc560f1f2437c39caca80458ef9b283179f4a09 100644 (file)
@@ -12,6 +12,64 @@ cd @working_dir@
 db_name=@db_name@
 
 sqlite3 $* ${db_name}.db <<END-OF-DATA
+-- --------------------------------------------------------------
+-- MetaData Index
+
+CREATE TABLE MetaEmail
+(
+    EmailTenant                text,
+    EmailOwner                 text,
+    EmailId                    text,
+    EmailTime                  DATETIME,
+    EmailTags                  text,
+    EmailSubject               text,
+    EmailFolderName            text,
+    EmailFrom                  text,
+    EmailTo                    text,
+    EmailCc                        text,
+    EmailInternetMessageId     text,  -- no index
+    EmailBodyPreview           text,
+    EmailImportance            text,
+    EmailConversationId        text,
+    EmailIsRead                smallint,
+    EmailIsDraft               smallint,
+    EmailHasAttachment         smallint,
+    EmailSize                          integer,
+    Plugin                             text,
+    FileIndex                                  int,
+    JobId                              int
+);
+
+CREATE INDEX meta_emailowner on MetaEmail (EmailTenant, EmailOwner);
+CREATE INDEX meta_emailtime on MetaEmail (EmailTime);
+CREATE INDEX meta_emailtags on MetaEmail (EmailTags);
+CREATE INDEX meta_emailfoldername on MetaEmail (EmailFolderName);
+-- CREATE INDEX meta_emailsender on MetaEmail (EmailSender);
+CREATE INDEX meta_emailconversationid on MetaEmail (EmailConversationId);
+-- TODO: Implement search op in SQLite
+CREATE INDEX meta_emailimportance on MetaEmail (EmailImportance);
+CREATE INDEX meta_emailisread on MetaEmail (EmailIsRead);
+CREATE INDEX meta_emailhasattachment on MetaEmail (EmailHasAttachment);
+CREATE INDEX meta_emailjobid on MetaEmail (Jobid);
+
+CREATE TABLE MetaAttachment
+(
+    AttachmentTenant            text,
+    AttachmentOwner                    text,
+    AttachmentName                     text,
+    AttachmentEmailId                  text,
+    AttachmentContentType      text,
+    AttachmentIsInline                 smallint,
+    AttachmentSize             int,
+    Plugin                             text,
+    FileIndex                          int,
+    JobId                              int
+);
+
+CREATE INDEX meta_attachmentowner ON MetaAttachment (AttachmentTenant,AttachmentOwner);
+CREATE INDEX meta_attachmentemailid ON MetaAttachment (AttachmentEmailId);
+CREATE INDEX meta_attachmentjobid ON MetaAttachment (JobId); 
+
 CREATE TABLE TagJob
 (
    JobId integer not null,
@@ -547,7 +605,7 @@ INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
    ('I', 'Incomplete Job',25);
 
 -- Initialize Version           
-INSERT INTO Version (VersionId) VALUES (1024);
+INSERT INTO Version (VersionId) VALUES (1025);
 
 PRAGMA default_cache_size = 100000;
 PRAGMA synchronous = NORMAL;
index d4bb96daee1db8fa00c6b63677cc0454b90e8b43..412ef92ff7a02d97dcb6416847bd96da4b70a851 100644 (file)
@@ -3,11 +3,11 @@
 # Copyright (C) 2000-2022 Kern Sibbald
 # License: BSD 2-Clause; see file LICENSE-FOSS
 #
-# Shell script to update MySQL tables to Bacula version 13.0.x
+# Shell script to update MySQL tables to Bacula version 15.0.x
 #
 
-OLDVERSION=1022
-NEWVERSION=1024
+OLDVERSION=1024
+NEWVERSION=1025
 
 echo " "
 echo "This script will update a Bacula MySQL database"
@@ -559,4 +559,76 @@ END-OF-DATA
     fi
 fi
 
+if [ "$DBVERSION" -eq 1024 ] ; then
+    if mysql $* -f  <<END-OF-DATA
+USE ${db_name};
+-- --------------------------------------------------------------
+-- MetaData Index
+
+CREATE TABLE MetaEmail
+(
+    EmailTenant                TINYTEXT,
+    EmailOwner                 TINYTEXT,
+    EmailId                    TINYTEXT,
+    EmailTime                  DATETIME,
+    EmailTags                  TEXT,
+    EmailSubject               TEXT,
+    EmailFolderName            TEXT,
+    EmailFrom                  TINYTEXT,
+    EmailTo                    TEXT,
+    EmailCc                    TEXT,
+    EmailInternetMessageId     TINYTEXT,
+    EmailBodyPreview           TEXT,
+    EmailImportance            TINYTEXT,
+    EmailConversationId        TINYTEXT,
+    EmailIsRead                TINYINT,
+    EmailIsDraft               TINYINT,
+    EmailHasAttachment                 TINYINT,
+    EmailSize                          INTEGER,
+    Plugin                             TINYTEXT,
+    FileIndex                          INTEGER,
+    JobId                              INTEGER
+);
+
+-- Requires TEXT instead of BLOB
+CREATE FULLTEXT INDEX meta_emailsubjectbody ON MetaEmail 
+       (EmailSubject, EmailBodyPreview, EmailTo, EmailCc, EmailFrom);
+CREATE INDEX meta_emailowner ON MetaEmail (EmailTenant(255), EmailOwner(255));
+CREATE INDEX meta_emailtime on MetaEmail (EmailTime);
+CREATE INDEX meta_emailtags on MetaEmail (EmailTags(255));
+CREATE INDEX meta_emailfoldername on MetaEmail (EmailFolderName(255));
+CREATE INDEX meta_emailconversationid on MetaEmail (EmailConversationId(255));
+CREATE INDEX meta_emailisread on MetaEmail (EmailIsRead);
+CREATE INDEX meta_emailhasattachment on MetaEmail (EmailHasAttachment);
+CREATE INDEX meta_emailjobid on MetaEmail (Jobid);
+
+CREATE TABLE MetaAttachment
+{
+    AttachmentTenant            TINYTEXT,
+    AttachmentOwner                    TINYTEXT,
+    AttachmentName                     TEXT,
+    AttachmentEmailId                  TINYTEXT,
+    AttachmentContentType      TINYTEXT,
+    AttachmentIsInline                 SMALLINT,
+    AttachmentSize                     INTEGER,
+    Plugin                             TINYTEXT,
+    FileIndex                          INTEGER,
+    JobId                              INTEGER
+};
+
+CREATE INDEX meta_attachmentowner ON MetaAttachment (AttachmentTenant,AttachmentOwner);
+CREATE INDEX meta_attachmentemailid ON MetaAttachment (AttachmentEmailId);
+CREATE INDEX meta_attachmentjobid on MetaAttachment (Jobid);
+
+UPDATE Version SET VersionId=1025;
+END-OF-DATA
+    then
+        echo "Update of Bacula MySQL tables 1024 to 1025 succeeded."
+        getVersion
+    else
+        echo "Update of Bacula MySQL tables 1024 to 1025 failed."
+        exit 1
+    fi
+fi
+
 exit 0
index 9b808305ab7ec0f2f5913900ba2e885072aad397..60c96b536a59ad57e635336e65b5eeb4a1e35423 100644 (file)
@@ -4,13 +4,13 @@
 # License: BSD 2-Clause; see file LICENSE-FOSS
 #
 
-OLDVERSION=1022
-NEWVERSION=1024
+OLDVERSION=1024
+NEWVERSION=1025
 
 echo " "
 echo "This script will update a Bacula PostgreSQL database"
 echo " from any from version 12-16 or 1014-$OLDVERSION to version $NEWVERSION"
-echo " which is needed to convert from any Bacula Communty to version 11.4.x"
+echo " which is needed to convert from any Bacula Communty to version 15.0.x"
 echo " "
 
 
@@ -610,6 +610,93 @@ END-OF-DATA
     fi
 fi
 
+if [ "$DBVERSION" -eq 1024 ] ; then
+    if psql -f - -d ${db_name} $* <<END-OF-DATA
+begin;
+CREATE TABLE MetaEmail
+(
+    EmailTenant                text,
+    EmailOwner                 text,
+    EmailId                    text,
+    EmailTime                          timestamp without time zone,
+    EmailTags                  text,
+    EmailSubject               text,
+    EmailFolderName            text,
+    EmailFrom                  text,
+    EmailTo                    text,
+    EmailCc                        text,
+    EmailInternetMessageId     text,  -- no index
+    EmailBodyPreview           text,
+    EmailImportance            text,
+    EmailConversationId        text,
+    EmailIsRead                smallint,
+    EmailIsDraft               smallint,
+    EmailHasAttachment         smallint,
+    EmailSize                          integer,
+    Plugin                             text,
+    FileIndex                                  int,
+    JobId                              int
+);
+
+-- Need to add postgresql-contrib to the dependency list
+
+do \$\$
+declare
+  selected_ext pg_extension%rowtype;
+begin  
+
+  select 1 from pg_extension
+    into selected_ext
+  where extname = 'pg_trgm';
+  
+  if not found then
+     CREATE EXTENSION pg_trgm;
+  end if;
+end \$\$;
+
+CREATE INDEX meta_emailowner on MetaEmail (EmailTenant, EmailOwner);
+CREATE INDEX meta_emailtime on MetaEmail (EmailTime);
+CREATE INDEX meta_emailtags on MetaEmail (EmailTags);
+CREATE INDEX meta_emailfoldername on MetaEmail (EmailFolderName);
+-- CREATE INDEX meta_emailsender on MetaEmail (EmailSender);
+CREATE INDEX meta_emailconversationid on MetaEmail (EmailConversationId);
+CREATE INDEX meta_emailsubjectbody ON MetaEmail 
+       USING GIN (EmailSubject gin_trgm_ops, EmailBodyPreview gin_trgm_ops, EmailTo gin_trgm_ops, EmailCc gin_trgm_ops, EmailFrom gin_trgm_ops);
+CREATE INDEX meta_emailimportance on MetaEmail (EmailImportance);
+CREATE INDEX meta_emailisread on MetaEmail (EmailIsRead);
+CREATE INDEX meta_emailhasattachment on MetaEmail (EmailHasAttachment);
+CREATE INDEX meta_emailjobid on MetaEmail (Jobid);
+
+CREATE TABLE MetaAttachment
+(
+    AttachmentTenant            text,
+    AttachmentOwner                    text,
+    AttachmentName                     text,
+    AttachmentEmailId                  text,
+    AttachmentContentType      text,
+    AttachmentIsInline                 smallint,
+    AttachmentSize             int,
+    Plugin                             text,
+    FileIndex                          int,
+    JobId                              int
+);
+
+CREATE INDEX meta_attachmentowner ON MetaAttachment (AttachmentTenant,AttachmentOwner);
+CREATE INDEX meta_attachmentemailid ON MetaAttachment (AttachmentEmailId);
+CREATE INDEX meta_attachmentjobid ON MetaAttachment (JobId); 
+
+UPDATE Version SET VersionId=1025;
+commit;
+END-OF-DATA
+    then
+       echo "Update of Bacula PostgreSQL tables 1024 to 1025 succeeded."
+       getVersion
+    else
+       echo "Update of Bacula PostgreSQL tables 1024 to 1025 failed."
+       exit 1
+    fi
+fi
+
 #
 # For all versions, we need to create the Index on Media(PoolId/StorageId)
 # It may fail, but it's not a big problem
diff --git a/bacula/updatedb/update_mysql_tables_1024_to_1025.in b/bacula/updatedb/update_mysql_tables_1024_to_1025.in
new file mode 100644 (file)
index 0000000..6acad12
--- /dev/null
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# Copyright (C) 2000-2021 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
+# Shell script to update MySQL
+#
+echo " "
+echo "This script will update a Bacula MySQL database from version 1024 to 1025"
+echo " "
+bindir=@MYSQL_BINDIR@
+PATH="$bindir:$PATH"
+db_name=${db_name:-@db_name@}
+
+mysql $* -D ${db_name} -e "select VersionId from Version\G" >/tmp/$$
+DBVERSION=`sed -n -e 's/^VersionId: \(.*\)$/\1/p' /tmp/$$`
+if [ $DBVERSION != 1024 ] ; then
+   echo " "
+   echo "The existing database is version $DBVERSION !!"
+   echo "This script can only update an existing version 1024 database to version 1025."
+   echo "Error. Cannot upgrade this database."
+   echo " "
+   exit 1
+fi
+
+if mysql $* -f  <<END-OF-DATA
+USE ${db_name};
+-- --------------------------------------------------------------
+-- MetaData Index
+
+CREATE TABLE MetaEmail
+(
+    EmailTenant                TINYTEXT,
+    EmailOwner                 TINYTEXT,
+    EmailId                    TINYTEXT,
+    EmailTime                  DATETIME,
+    EmailTags                  TEXT,
+    EmailSubject               TEXT,
+    EmailFolderName            TEXT,
+    EmailFrom                  TINYTEXT,
+    EmailTo                    TEXT,
+    EmailCc                    TEXT,
+    EmailInternetMessageId     TINYTEXT,
+    EmailBodyPreview           TEXT,
+    EmailImportance            TINYTEXT,
+    EmailConversationId        TINYTEXT,
+    EmailIsRead                TINYINT,
+    EmailIsDraft               TINYINT,
+    EmailHasAttachment                 TINYINT,
+    EmailSize                          INTEGER,
+    Plugin                             TINYTEXT,
+    FileIndex                          INTEGER,
+    JobId                              INTEGER
+);
+
+-- Requires TEXT instead of BLOB
+CREATE FULLTEXT INDEX meta_emailsubjectbody ON MetaEmail 
+       (EmailSubject, EmailBodyPreview, EmailTo, EmailCc, EmailFrom);
+CREATE INDEX meta_emailowner ON MetaEmail (EmailTenant(255), EmailOwner(255));
+CREATE INDEX meta_emailtime on MetaEmail (EmailTime);
+CREATE INDEX meta_emailtags on MetaEmail (EmailTags(255));
+CREATE INDEX meta_emailfoldername on MetaEmail (EmailFolderName(255));
+CREATE INDEX meta_emailconversationid on MetaEmail (EmailConversationId(255));
+CREATE INDEX meta_emailisread on MetaEmail (EmailIsRead);
+CREATE INDEX meta_emailhasattachment on MetaEmail (EmailHasAttachment);
+CREATE INDEX meta_emailjobid on MetaEmail (Jobid);
+
+CREATE TABLE MetaAttachment
+{
+    AttachmentTenant            TINYTEXT,
+    AttachmentOwner                    TINYTEXT,
+    AttachmentName                     TEXT,
+    AttachmentEmailId                  TINYTEXT,
+    AttachmentContentType      TINYTEXT,
+    AttachmentIsInline                 SMALLINT,
+    AttachmentSize                     INTEGER,
+    Plugin                             TINYTEXT,
+    FileIndex                          INTEGER,
+    JobId                              INTEGER
+};
+
+CREATE INDEX meta_attachmentowner ON MetaAttachment (AttachmentTenant,AttachmentOwner);
+CREATE INDEX meta_attachmentemailid ON MetaAttachment (AttachmentEmailId);
+CREATE INDEX meta_attachmentjobid on MetaAttachment (Jobid);
+
+UPDATE Version SET VersionId=1024;
+END-OF-DATA
+then
+   echo "Update of Bacula MySQL tables 1023 to 1024 succeeded."
+   getVersion
+else
+   echo "Update of Bacula MySQL tables 1023 to 1024 failed."
+   exit 1
+fi
+
+exit 0
diff --git a/bacula/updatedb/update_postgresql_tables_1024_to_1025.in b/bacula/updatedb/update_postgresql_tables_1024_to_1025.in
new file mode 100644 (file)
index 0000000..0b52195
--- /dev/null
@@ -0,0 +1,108 @@
+#!/bin/sh
+#
+# Copyright (C) 2000-2021 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
+#
+echo " "
+echo "This script will update a Bacula PostgreSQL database from version 1024 to 1025"
+echo " "
+
+bindir=@POSTGRESQL_BINDIR@
+PATH="$bindir:$PATH"
+db_name=${db_name:-@db_name@}
+
+DBVERSION=`psql -d ${db_name} -t --pset format=unaligned -c "select VersionId from Version" $*`
+if [ $DBVERSION != 1024 ] ; then
+   echo " "
+   echo "The existing database is version $DBVERSION !!"
+   echo "This script can only update an existing version 1024 database to version 1025."
+   echo "Error. Cannot upgrade this database."
+   echo " "
+   exit 1
+fi
+
+if psql -f - -d ${db_name} $* <<END-OF-DATA
+begin;
+CREATE TABLE MetaEmail
+(
+    EmailTenant                text,
+    EmailOwner                 text,
+    EmailId                    text,
+    EmailTime                          timestamp without time zone,
+    EmailTags                  text,
+    EmailSubject               text,
+    EmailFolderName            text,
+    EmailFrom                  text,
+    EmailTo                    text,
+    EmailCc                        text,
+    EmailInternetMessageId     text,  -- no index
+    EmailBodyPreview           text,
+    EmailImportance            text,
+    EmailConversationId        text,
+    EmailIsRead                smallint,
+    EmailIsDraft               smallint,
+    EmailHasAttachment         smallint,
+    EmailSize                          integer,
+    Plugin                             text,
+    FileIndex                                  int,
+    JobId                              int
+);
+
+-- Need to add postgresql-contrib to the dependency list
+
+do \$\$
+declare
+  selected_ext pg_extension%rowtype;
+begin  
+
+  select 1 from pg_extension
+    into selected_ext
+  where extname = 'pg_trgm';
+  
+  if not found then
+     CREATE EXTENSION pg_trgm;
+  end if;
+end \$\$;
+
+CREATE INDEX meta_emailowner on MetaEmail (EmailTenant, EmailOwner);
+CREATE INDEX meta_emailtime on MetaEmail (EmailTime);
+CREATE INDEX meta_emailtags on MetaEmail (EmailTags);
+CREATE INDEX meta_emailfoldername on MetaEmail (EmailFolderName);
+-- CREATE INDEX meta_emailsender on MetaEmail (EmailSender);
+CREATE INDEX meta_emailconversationid on MetaEmail (EmailConversationId);
+CREATE INDEX meta_emailsubjectbody ON MetaEmail 
+       USING GIN (EmailSubject gin_trgm_ops, EmailBodyPreview gin_trgm_ops, EmailTo gin_trgm_ops, EmailCc gin_trgm_ops, EmailFrom gin_trgm_ops);
+CREATE INDEX meta_emailimportance on MetaEmail (EmailImportance);
+CREATE INDEX meta_emailisread on MetaEmail (EmailIsRead);
+CREATE INDEX meta_emailhasattachment on MetaEmail (EmailHasAttachment);
+CREATE INDEX meta_emailjobid on MetaEmail (Jobid);
+
+CREATE TABLE MetaAttachment
+(
+    AttachmentTenant            text,
+    AttachmentOwner                    text,
+    AttachmentName                     text,
+    AttachmentEmailId                  text,
+    AttachmentContentType      text,
+    AttachmentIsInline                 smallint,
+    AttachmentSize             int,
+    Plugin                             text,
+    FileIndex                          int,
+    JobId                              int
+);
+
+CREATE INDEX meta_attachmentowner ON MetaAttachment (AttachmentTenant,AttachmentOwner);
+CREATE INDEX meta_attachmentemailid ON MetaAttachment (AttachmentEmailId);
+CREATE INDEX meta_attachmentjobid ON MetaAttachment (JobId); 
+UPDATE Version SET VersionId=1025;
+commit;
+END-OF-DATA
+then
+   echo "Update of Bacula PostgreSQL tables 1023 to 1024 succeeded."
+else
+   echo "Update of Bacula PostgreSQL tables 1023 to 1024 failed."
+   exit 1
+fi
+
+exit 0