#!/bin/sh

PG_DUMP="/usr/bin/pg_dump"
DIFF="/usr/bin/diff -u"

if [ $# -lt 4 ]; then
    echo "Usage: $0 <DBNAME-1> <TABLE-1> <DBNAME-2> <TABLE-2> [<PG-DUMP-ARGS> ...]"
    exit 1
fi

DBNAME1=$1; shift
TABLE1=$1; shift
DBNAME2=$1; shift
TABLE2=$1; shift
PG_DUMP_ARGS=$@

DUMP1=`mktemp`
DUMP2=`mktemp`

clear_temp_files()
{
    rm -f $DUMP1 $DUMP2
}

trap "clear_temp_files" ABRT INT QUIT TERM

dump_table()
{
    $PG_DUMP $PG_DUMP_ARGS --schema-only --table $1 $2 \
    | grep -v "^--" \
    | grep "." \
    >$3
}

echo "Running pg_dump over specified databases..."
dump_table $TABLE1 $DBNAME1 $DUMP1 && \
dump_table $TABLE2 $DBNAME2 $DUMP2

RETVAL=$?
if [ $RETVAL -ne 0 ]; then
    clear_temp_files
    exit $RETVAL
fi

echo "${DUMP1}: Dump of '$TABLE1' in '$DBNAME1'."
echo "${DUMP2}: Dump of '$TABLE2' in '$DBNAME2'."
echo

$DIFF $DUMP1 $DUMP2
RETVAL=$?

clear_temp_files
exit $RETVAL