#!/bin/sh
#
# test_mysql_tables bestimmt die Anzahl der Werte in den MySQL-Datenbanken
# Schickt Anzahl an Loggingdatenbank
#
# Steuerung ueber Environment:
#   ULSNAME: ULS-Hostname
#   ULSSECTION: Section im ULS
#   MYSQL_SOCKET: Socket zur DB - wenn Socket gesetzt, wird Host und Port ignoriert
#   MYSQL_HOST: oder Host
#   MYSQL_PORT: und Port, wenn abweichend von 3306
#   MYSQL_USER: User zur DB
#   MYSQL_PASSWORD: Password zur DB
#
###################################################################################
#
if [[ -z "$MYSQL_USER" ]]
 then
  if [[ -f /etc/uls/mysql.conf ]]
   then
    . /etc/uls/mysql.conf
  else
    echo "/etc/uls/mysql.conf not found."
    exit 0
  fi
fi
#
unset D S U
#
while getopts d:Su:? op
 do
  case "$op" in
    d) D="-d $OPTARG";;
    S) S="-S";;
    u) U="-u $OPTARG";;
    *) echo "usage: $0 [-d storepath] [-S|-u ulsserver]"
       exit 1;;
  esac
done
shift $(( $OPTIND - 1 ))
#
. `dirname $0`/uls_header $1
#
callmysql()
{ if [[ -n "$MYSQL_SOCKET" ]]
   then
    mysql $2 -B -S "$MYSQL_SOCKET" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  elif [[ -n "$MYSQL_PORT" ]]
   then
    mysql $2 -B -h "$MYSQL_HOST" -P "$MYSQL_PORT"  -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  else
    mysql $2 -B -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$1"
  fi
}
#
export LANG=C
export LC_CTYPE=en_US.UTF-8
#
( L=`callmysql "select @@character_set_client" -N`
  echo "L;;;;;;$L;"
  echo "D;$DT;${ULSNAME:-${ULSHOSTNAME:-`hostname`}};${ULSSECTION:-MySQL};"
  #
  D=`callmysql "show databases" -N`
  #
  if echo $D | fgrep -q information_schema
   then
    callmysql "select concat('V;;;;DB:',TABLE_SCHEMA,';',TABLE_NAME,';',TABLE_ROWS,';#') from information_schema.tables where TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA not in ('information_schema','performance_schema')" -N
  else
    for d in $D
     do
      for i in `callmysql "show tables from \\\`$d\\\`" -N`
       do
        A=`callmysql "select count(*) from \\\`$d\\\`.\\\`$i\\\`" -N`
        [ -z "$A" ] || echo "V;;;;DB:$d;$i;$A;#"
      done
    done
  fi
) | send_test_tab $D $S $U
