#!/bin/bash
set -e

ERROR_FILE=/dev/stderr
while [ "$1" != "" ]; do
    case $1 in
        --error-file)
            shift
            ERROR_FILE=$1
            ;;
        *)
            PARAM=`echo $1 | awk -F= '{print $1}'`
            VALUE=`echo $1 | awk -F= '{print $2}'`
            case $PARAM in
                --error-file)
                    ERROR_FILE=$VALUE
                    ;;
            esac
            ;;
    esac
    shift
done

if [ ! -f /etc/mysql.secret ]; then
    # MySQL not yet installed
    echo "Altering MySQL configuration prior to database installation."
    ucr set mysql/config/mysqld/innodb_file_format=Barracuda \
            mysql/config/mysqld/innodb_large_prefix=1        \
            mysql/config/mysqld/innodb_file_per_table=1      \
            mysql/config/mysqld/max_allowed_packet=1G
    exit 0
fi

MYSQL="mysql -uroot -p$(cat /etc/mysql.secret) -ss"

echo "Checking MariaDB configuration..."
# check innodb_file_format, innodb_large_prefix, innodb_file_per_table and max_allowed_packet
INNODB_FILE_FORMAT=$(($MYSQL 2>/dev/null <<EOF
SELECT @@GLOBAL.innodb_file_format
EOF
) || echo "Barracuda" )
echo "    innodb_file_format="$INNODB_FILE_FORMAT
INNODB_LARGE_PREFIX=$(($MYSQL 2>/dev/null <<EOF
SELECT @@GLOBAL.innodb_large_prefix
EOF
) || echo "1" )
echo "    innodb_large_prefix="$INNODB_LARGE_PREFIX
INNODB_FILE_PER_TABLE=$($MYSQL <<EOF
SELECT @@GLOBAL.innodb_file_per_table
EOF
)
echo "    innodb_file_per_table="$INNODB_FILE_PER_TABLE
MAX_ALLOWED_PACKET=$($MYSQL <<EOF
SELECT @@GLOBAL.max_allowed_packet
EOF
)
echo "    max_allowed_packet="$MAX_ALLOWED_PACKET
if [ $INNODB_FILE_FORMAT = "Antilope" -o $INNODB_LARGE_PREFIX -eq 0 -o $INNODB_FILE_PER_TABLE -eq 0 -o $MAX_ALLOWED_PACKET -lt 1073741824 ]; then
    echo "Altering MySQL configuration and restarting database."
    ucr set mysql/config/mysqld/innodb_file_format=Barracuda \
            mysql/config/mysqld/innodb_large_prefix=1        \
            mysql/config/mysqld/innodb_file_per_table=1      \
            mysql/config/mysqld/max_allowed_packet=1G
    service mysql restart
fi

if [ -e /etc/mysql-relution.secret ]; then
    # check relution database charset and collation
    CHARSET=$($MYSQL <<EOF
SELECT \`default_character_set_name\` from \`information_schema\`.\`SCHEMATA\` where \`schema_name\`='relution';
EOF
)
    echo "    charset="$CHARSET

    COLLATION=$($MYSQL <<EOF
SELECT \`default_collation_name\` from \`information_schema\`.\`SCHEMATA\` where \`schema_name\`='relution';
EOF
)
    echo "    collation="$COLLATION
else
    # check default database charset and collation
    CHARSET=$($MYSQL <<EOF
SELECT @@GLOBAL.character_set_server
EOF
)
    echo "    charset="$CHARSET

    COLLATION=$($MYSQL <<EOF
SELECT @@GLOBAL.collation_server
EOF
)
    echo "    collation="$COLLATION
fi
