From: Jan Wieck Date: Thu, 2 Nov 2000 16:54:21 +0000 (+0000) Subject: New dump utility script pg_dumpaccounts. X-Git-Tag: REL7_0_3~6 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=013c2c65e03f4e1bc6b7af88c6ab1a351f1476dd;p=postgresql.git New dump utility script pg_dumpaccounts. Dumps pg_shadow and pg_group (derived from pg_dumpall). Jan --- diff --git a/src/bin/pg_dump/Makefile.in b/src/bin/pg_dump/Makefile.in index dddc006b8bd..0e8e26ac4da 100644 --- a/src/bin/pg_dump/Makefile.in +++ b/src/bin/pg_dump/Makefile.in @@ -7,7 +7,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/Makefile.in,v 1.13 2000/05/11 17:46:32 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/Makefile.in,v 1.13.2.1 2000/11/02 16:54:21 wieck Exp $ # #------------------------------------------------------------------------- @@ -41,6 +41,7 @@ submake: install: pg_dump $(INSTALL) $(INSTL_EXE_OPTS) pg_dump$(X) $(BINDIR)/pg_dump$(X) $(INSTALL) $(INSTL_EXE_OPTS) pg_dumpall $(BINDIR)/pg_dumpall + $(INSTALL) $(INSTL_EXE_OPTS) pg_dumpaccounts $(BINDIR)/pg_dumpaccounts $(INSTALL) $(INSTL_EXE_OPTS) pg_upgrade $(BINDIR)/pg_upgrade depend dep: diff --git a/src/bin/pg_dump/pg_dumpaccounts b/src/bin/pg_dump/pg_dumpaccounts new file mode 100644 index 00000000000..7d68d153ade --- /dev/null +++ b/src/bin/pg_dump/pg_dumpaccounts @@ -0,0 +1,65 @@ +#!/bin/sh +# +# pg_dumpaccounts +# 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_dumpaccounts,v 1.1.2.1 2000/11/02 16:54:21 wieck Exp $ +# +# to adapt to System V vs. BSD 'echo' +if echo '\\' | grep '\\\\' >/dev/null 2>&1 +then + BS='\' # BSD +else + BS='\\' # System V +fi +# +# Dump everyone but the postgres user +# initdb creates him +# +# get the postgres user id +# +POSTGRES_SUPER_USER_ID="`echo \" \ + select datdba \ + from pg_database \ + where datname = 'template1'; \" | \ + psql -A -q -t template1`" +echo "${BS}connect template1" +# +# delete all users in case they run this twice +# +# 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_pg_shadow \ + from pg_database where datname = 'template1';" +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 < $POSTGRES_SUPER_USER_ID; +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 "delete from pg_group;" +echo "copy pg_group from stdin;" +psql -q template1 <