#!/bin/sh

PATH=${PATH}:/usr/local/pgsql/bin
TIMEFORMAT="%3Uu %3Ss %lR %P%%"
export PATH TIMEFORMAT

case "$1" in
  -n)
	  trashing=0
	  ;;
  *)
	 trashing=1
	 ;;
esac

echo "TESTING ON UNCLUSTERED FTI"

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, artist_fti f1, artist_fti f2
        where
                f1.string ~ '^lapton' and f2.string ~ '^ric' and
                f1.id=p.oid and f2.id=p.oid;"

echo -n "1: ^lapton and ^ric           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lapton and ^ric           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lapton and ^ric           : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, artist_fti f1, artist_fti f2
        where
                f1.string ~ '^lling' and f2.string ~ '^tones' and
                f1.id=p.oid and f2.id=p.oid;"

echo -n "1: ^lling and ^tones          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lling and ^tones          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lling and ^tones          : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, artist_fti f1, artist_fti f2
        where
                f1.string ~ '^aughan' and f2.string ~ '^evie' and
                f1.id=p.oid and f2.id=p.oid;"

echo -n "1: ^aughan and ^evie          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^aughan and ^evie          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^aughan and ^evie          : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, artist_fti f1
        where
                f1.string ~ '^lling' and 
                p.oid=f1.id;"

echo -n "1: ^lling                     : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lling                     : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lling                     : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, artist_fti f1, artist_fti f2, artist_fti f3
        where
                f1.string ~ '^stev' and
                f2.string ~ '^ray' and
                f3.string ~ '^vaugh' and
                p.oid=f1.id and p.oid=f2.id and p.oid=f3.id;"

echo -n "1: ^stev and ^ray and ^vaugh  : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^stev and ^ray and ^vaugh  : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^stev and ^ray and ^vaugh  : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(*) from artist_fti where string ~ '^lling';"

echo -n "1: ^lling (no join)           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lling (no join)           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lling (no join)           : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(*) from artist_fti where string ~ '^vaughan';"

echo -n "1: ^vaughan (no join)         : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^vaughan (no join)         : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^vaughan (no join)         : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(*) from artist_fti where string ~ '^rol';"

echo -n "1: ^rol (no join)             : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^rol (no join)             : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^rol (no join)             : "
time psql -q -n -o /dev/null -c "$Q" test

echo
echo "TESTING ON CLUSTERED FTI"

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, clustered f1, clustered f2
        where
                f1.string ~ '^lapton' and f2.string ~ '^ric' and
                f1.id=p.oid and f2.id=p.oid;"

echo -n "1: ^lapton and ^ric           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lapton and ^ric           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lapton and ^ric           : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, clustered f1, clustered f2
        where
                f1.string ~ '^lling' and f2.string ~ '^tones' and
                f1.id=p.oid and f2.id=p.oid;"

echo -n "1: ^lling and ^tones          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lling and ^tones          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lling and ^tones          : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, clustered f1, clustered f2
        where
                f1.string ~ '^aughan' and f2.string ~ '^evie' and
                f1.id=p.oid and f2.id=p.oid;"

echo -n "1: ^aughan and ^evie          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^aughan and ^evie          : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^aughan and ^evie          : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, clustered f1
        where
                f1.string ~ '^lling' and 
                p.oid=f1.id;"

echo -n "1: ^lling                     : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lling                     : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lling                     : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(p.oid) from product p, clustered f1, clustered f2, clustered f3
        where
                f1.string ~ '^stev' and
                f2.string ~ '^ray' and
                f3.string ~ '^vaugh' and
                p.oid=f1.id and p.oid=f2.id and p.oid=f3.id;"

echo -n "1: ^stev and ^ray and ^vaugh  : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^stev and ^ray and ^vaugh  : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^stev and ^ray and ^vaugh  : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(*) from clustered where string ~ '^lling';"

echo -n "1: ^lling (no join)           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^lling (no join)           : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^lling (no join)           : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(*) from clustered where string ~ '^vaughan';"

echo -n "1: ^vaughan (no join)         : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^vaughan (no join)         : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^vaughan (no join)         : "
time psql -q -n -o /dev/null -c "$Q" test

# trash disk
if [ $trashing = 1 ]
then
  echo "trashing"
  psql -q -n -o /dev/null -c "select count(*) from product;" test
else
  echo
fi

Q="select count(*) from clustered where string ~ '^rol';"

echo -n "1: ^rol (no join)             : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "2: ^rol (no join)             : "
time psql -q -n -o /dev/null -c "$Q" test
echo -n "3: ^rol (no join)             : "
time psql -q -n -o /dev/null -c "$Q" test