*/
/* 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 **);
);
-- Initialize Version
-INSERT INTO Version (VersionId) VALUES (1024);
+INSERT INTO Version (VersionId) VALUES (1025);
END-OF-DATA
then
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
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,
('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;
# 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"
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
# 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 " "
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
--- /dev/null
+#!/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
--- /dev/null
+#!/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