#!/bin/bash
#
# This script is executed by both SysV init /etc/init.d/mariadb and
# systemd mariadb.service on every (re)start.
#
# Changes to this file will be preserved when updating the Debian package.
#

# shellcheck source=debian/additions/debian-start.inc.sh
source /usr/share/mysql/debian-start.inc.sh

# Read default/mysql first and then default/mariadb just like the init.d file does
if [ -f /etc/default/mysql ]
then
  # shellcheck source=/dev/null
  . /etc/default/mysql
fi

if [ -f /etc/default/mariadb ]
then
  # shellcheck source=/dev/null
  . /etc/default/mariadb
fi

MARIADB="/usr/bin/mariadb --defaults-extra-file=/etc/mysql/debian.cnf"
MYADMIN="/usr/bin/mariadb-admin --defaults-extra-file=/etc/mysql/debian.cnf"
# Don't run full mariadb-upgrade on every server restart, use --version-check to do it only once
MYUPGRADE="/usr/bin/mariadb-upgrade --defaults-extra-file=/etc/mysql/debian.cnf --version-check --silent"
MYCHECK_SUBJECT="WARNING: mariadb-check has found corrupt tables"
MYCHECK_RCPT="${MYCHECK_RCPT:-root}"

## Checking for corrupt, not cleanly closed (only for MyISAM and Aria engines) and upgrade needing tables.

# The following commands should be run when the server is up but in background
# where they do not block the server start and in one shell instance so that
# they run sequentially. They are supposed not to echo anything to stdout.
# If you want to disable the check for crashed tables comment
# "check_for_crashed_tables" out.
# (There may be no output to stdout inside the background process!)

# Need to ignore SIGHUP, as otherwise a SIGHUP can sometimes abort the upgrade
# process in the middle.
trap "" SIGHUP
(
  upgrade_system_tables_if_necessary;
  check_root_accounts;
  check_for_crashed_tables;
) >&2 &

exit 0
