#
# pg_dumpall [pg_dump parameters]
# dumps all databases to standard output
-# It also dumps the pg_user table
+# It also dumps the pg_shadow table
#
# to adapt to System V vs. BSD 'echo'
#set -x
# we don't use POSTGRES_SUPER_USER_ID because the postgres super user id
# could be different on the two installations
#
-echo "select datdba into table tmp_pguser \
+echo "select datdba into table tmp_pg_shadow \
from pg_database where datname = 'template1';"
-echo "delete from pg_user where usesysid <> tmp_pguser.datdba;"
-echo "drop table tmp_pguser;"
+echo "delete from pg_shadow where usesysid <> tmp_pg_shadow.datdba;"
+echo "drop table tmp_pg_shadow;"
#
# load all the non-postgres users
#
-echo "copy pg_user from stdin;"
+echo "copy pg_shadow from stdin;"
psql -q template1 <<END
-select pg_user.*
-into table tmp_pg_user
-from pg_user
+select pg_shadow.*
+into table tmp_pg_shadow
+from pg_shadow
where usesysid <> $POSTGRES_SUPER_USER_ID;
-copy tmp_pg_user to stdout;
-drop table tmp_pg_user;
+copy tmp_pg_shadow to stdout;
+drop table tmp_pg_shadow;
END
echo "${BS}."
psql -l -A -q -t| tr '|' ' ' | grep -v '^template1 ' | \
do
POSTGRES_USER="`echo \" \
select usename \
- from pg_user \
+ from pg_shadow \
where usesysid = $DBUSERID; \" | \
psql -A -q -t template1`"
echo "${BS}connect template1 $POSTGRES_USER"