#!/bin/bash

#
# Сценарий для обновления статистики индексов
#

set -e

database_file=/var/opt/aisexpert/database/${1:-aisexpert.fdb}
log_file=/var/opt/aisexpert/log/database-index-update.log

function print_log()
{
    echo "[$(date '+%Y.%m.%d %H.%M.%S')] $1" >> $log_file
}

function print_log_n()
{
    echo -n "[$(date '+%Y.%m.%d %H.%M.%S')] $1" >> $log_file
}

function print_text()
{
    echo "$1" >> $log_file
}

print_log "---"
print_log "Begin index update"

INDEXES=$(
/opt/firebird/bin/isql -pag 1000 -b -m -m2 -u SYSDBA -p masterkey $database_file << EOF
select RDB\$INDEX_NAME from RDB\$INDICES where RDB\$INDEX_NAME not like 'RDB\$%';
EOF
)

LINECOUNTER=0

for index in $INDEXES; do
    if [ "$LINECOUNTER" -lt 2 ]; then
        LINECOUNTER=$(($LINECOUNTER+1))
        continue;
    fi

    print_log_n "Start update index $index ... "

    cat << EOF | /opt/firebird/bin/isql -b -m -m2 -u SYSDBA -p masterkey $database_file
    SET STATISTICS INDEX $index;
    COMMIT;
EOF
    print_text "OK"
done

print_log "End index update"
