#!/bin/bash

MYDB="dbmail"
PGDB="dbmail"
PGDD="../../sql/postgresql/create_tables.pgsql"

TMPDIR="/opt/tmp"

export tables="
dbmail_users
dbmail_mailboxes
dbmail_physmessage
dbmail_messages
dbmail_messageblks
dbmail_aliases
dbmail_acl
dbmail_auto_notifications
dbmail_auto_replies
dbmail_ccfield
dbmail_datefield
dbmail_envelope
dbmail_fromfield
dbmail_headername
dbmail_headervalue
dbmail_pbsp
dbmail_referencesfield
dbmail_replycache
dbmail_replytofield
dbmail_sievescripts
dbmail_subjectfield
dbmail_subscription
dbmail_tofield
dbmail_usermap
"

export_mysql()
{
	dumpfile=$TMPDIR/dbmail.mysqldata
	[ -e "$dumpfile" ] && return 1
	echo -n "export from mysql ..."
	mysqldump --skip-opt --single-transaction --hex-blob --compatible=postgresql -q -t -c $MYDB $tables > $dumpfile
	echo "done"
}


init_pgsql()
{
	dropdb dbmail >/dev/null 2>&1
	createdb dbmail >/dev/null 2>&1
	psql dbmail < ../../sql/postgresql/create_tables.pgsql >/dev/null 2>&1 || { echo "create db failed. abort."; exit 1; }
	echo "delete from dbmail_users;"|psql dbmail

}
import_pgsql()
{
	dumpfile=$TMPDIR/dbmail.mysqldata
	echo -n "import into pgsql ..."
	cat $dumpfile | psql -q dbmail
	echo "done."
	return $?
}

pgsql_sequences()
{
	qfile=`tempfile`
	cat >> $qfile << EOQ
BEGIN;
SELECT setval('dbmail_alias_idnr_seq', max(alias_idnr)) FROM dbmail_aliases;
SELECT setval('dbmail_user_idnr_seq', max(user_idnr)) FROM dbmail_users;
SELECT setval('dbmail_mailbox_idnr_seq', max(mailbox_idnr)) FROM dbmail_mailboxes;
SELECT setval('dbmail_physmessage_id_seq', max(id)) FROM dbmail_physmessage;
SELECT setval('dbmail_message_idnr_seq', max(message_idnr)) FROM dbmail_messages;
SELECT setval('dbmail_messageblk_idnr_seq', max(messageblk_idnr)) FROM dbmail_messageblks;
SELECT setval('dbmail_seq_pbsp_id', max(idnr)) FROM dbmail_pbsp;
SELECT setval('dbmail_headername_idnr_seq', max(id)) FROM dbmail_headername;
SELECT setval('dbmail_headervalue_idnr_seq', max(id)) FROM dbmail_headervalue;
SELECT setval('dbmail_subjectfield_idnr_seq', max(id)) FROM dbmail_subjectfield;
SELECT setval('dbmail_datefield_idnr_seq', max(id)) FROM dbmail_datefield;
SELECT setval('dbmail_referencesfield_idnr_seq', max(id)) FROM dbmail_referencesfield;;
SELECT setval('dbmail_fromfield_idnr_seq', max(id)) FROM dbmail_fromfield;
SELECT setval('dbmail_tofield_idnr_seq', max(id)) FROM dbmail_tofield;
SELECT setval('dbmail_replytofield_idnr_seq', max(id)) FROM dbmail_replytofield;
SELECT setval('dbmail_ccfield_idnr_seq', max(id)) FROM dbmail_ccfield;
SELECT setval('dbmail_sievescripts_idnr_seq', max(id)) FROM dbmail_sievescripts;
SELECT setval('dbmail_envelope_idnr_seq', max(id)) FROM dbmail_envelope;
END;
EOQ
	psql -q dbmail < $qfile
	rm -f $qfile
}

pgsql_owner()
{
	for t in `echo '\d'|psql dbmail|grep root|awk '{print $3}'`; do 
		echo "alter table $t owner to dbmail;"|psql -q dbmail
	done
}

main()
{
	install -d -m 7777 $TMPDIR || { echo "unable to access $TMPDIR"; exit 1; }
	#export_mysql || { echo "Export failed"; exit 1; }
	init_pgsql
	import_pgsql || { echo "Import failed"; exit 1; }
	pgsql_sequences
	pgsql_owner
}


main



syntax highlighted by Code2HTML, v. 0.9.1