diff --git a/src/bin/pg_dump/pg_dumpall b/src/bin/pg_dump/pg_dumpall index d280b1ccd927ef098703c33fa4c7329111ae48cb..cb449b0a404e000c16223025b5d624426a4a6532 100644 --- a/src/bin/pg_dump/pg_dumpall +++ b/src/bin/pg_dump/pg_dumpall @@ -2,10 +2,12 @@ # # pg_dumpall [pg_dump parameters] # dumps all databases to standard output -# It also dumps the pg_shadow table +# It also dumps the pg_shadow and pg_group tables, which belong to the +# whole installation rather than any one individual database. +# +# $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/pg_dumpall,v 1.25 2000/05/05 03:04:00 tgl Exp $ # # to adapt to System V vs. BSD 'echo' -#set -x if echo '\\' | grep '\\\\' >/dev/null 2>&1 then BS='\' # BSD @@ -36,6 +38,8 @@ echo "delete from pg_shadow where usesysid <> tmp_pg_shadow.datdba;" echo "drop table tmp_pg_shadow;" # # load all the non-postgres users +# XXX this breaks badly if the layout of pg_shadow ever changes. +# It'd be better to convert the data into CREATE USER commands. # echo "copy pg_shadow from stdin;" psql -q template1 <<END @@ -47,6 +51,19 @@ copy tmp_pg_shadow to stdout; drop table tmp_pg_shadow; END echo "${BS}." +# +# copy the pg_group table too +# XXX this breaks badly if the layout of pg_group ever changes. +# It'd be better to convert the data into CREATE GROUP commands. +# +echo "copy pg_group from stdin;" +psql -q template1 <<END +copy pg_group to stdout; +END +echo "${BS}." +# +# For each database, run pg_dump to dump the contents of that database. +# psql -A -q -t -c "select * from pg_database" template1 | grep '|' | tr '|' ' ' | \ grep -v '^template1 ' | \ while read DATABASE DBUSERID ENCODING DATAPATH @@ -73,3 +90,5 @@ do exit 1 fi done + +exit 0