ynh_die --message="Failed to run Mattermost to create PostgreSQL database tables" --ret_code=1
fi
set -e
popd
# Some fixes to let the MariaDB -> PostgreSQL conversion working
ynh_psql_execute_as_root --sql='DROP INDEX public.idx_fileinfo_content_txt;' --database=$db_name
ynh_psql_execute_as_root --sql='DROP INDEX public.idx_posts_message_txt;' --database=$db_name
ynh_mysql_execute_as_root --sql="ALTER TABLE mattermost.Users DROP COLUMN IF EXISTS acceptedtermsofserviceid;" --database=$db_name
ynh_mysql_execute_as_root --sql="ALTER TABLE mattermost.SharedChannelRemotes DROP COLUMN IF EXISTS description;" --database=$db_name
ynh_mysql_execute_as_root --sql="ALTER TABLE mattermost.SharedChannelRemotes DROP COLUMN IF EXISTS nextsyncat;" --database=$db_name
# Use pgloader to migrate database content from MariaDB to PostgreSQL
tmpdir="$(mktemp -d)"
cat <<EOT > $tmpdir/commands.load
LOAD DATABASE
FROM mysql://$mysql_db_user:$mysqlpwd@127.0.0.1:3306/$db_name
INTO postgresql://$db_user:$psqlpwd@127.0.0.1:5432/$db_name
WITH include no drop, truncate, create no tables,
create no indexes, preserve index names, no foreign keys,
data only, workers= 16, concurrency=1
SET MySQL PARAMETERS
net_read_timeout='90',
net_write_timeout='180'
ALTER SCHEMA '$db_name' RENAME TO 'public'
;
EOT
pgloader $tmpdir/commands.load
# Rebuild INDEX
ynh_psql_execute_as_root --sql='CREATE INDEX idx_fileinfo_content_txt ON public.fileinfo USING gin (to_tsvector('\''english'\''::regconfig, content))' --database=$db_name
ynh_psql_execute_as_root --sql='CREATE INDEX idx_posts_message_txt ON public.posts USING gin (to_tsvector('\''english'\''::regconfig, (message)::text));' --database=$db_name
if ynh_compare_current_package_version --comparison eq --version 7.3.0~ynh1
then
# There is a problem with version 7.3.0 and the database migration.
# More information here: https://forum.mattermost.com/t/migrating-from-mariadb-to-postgresql-db/14194/6
ynh_psql_execute_as_root --sql="DELETE FROM db_migrations WHERE version=92;" --database=$db_name