Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3f6299d

Browse files
committed
Fix pg_upgrade to handle dbnames, user/group names with spaces.
1 parent25f050d commit3f6299d

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

‎src/bin/pg_dump/pg_dumpall.sh

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# and "pg_group" tables, which belong to the whole installation rather
77
# than any one individual database.
88
#
9-
# $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/pg_dumpall.sh,v 1.17 2002/04/1104:56:21 momjian Exp $
9+
# $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/pg_dumpall.sh,v 1.18 2002/04/1119:23:36 momjian Exp $
1010

1111
CMDNAME="`basename$0`"
1212

@@ -24,7 +24,8 @@ if echo "$0" | grep '/' > /dev/null 2>&1 ; then
2424
PGPATH=`echo"$0"| sed's,/[^/]*$,,'`# (dirname command is not portable)
2525
else
2626
# look for it in PATH ('which' command is not portable)
27-
fordirin`echo"$PATH"| sed's/:/ /g'`;do
27+
echo"$PATH"| sed's/:/\
28+
/g'|whileread dir;do
2829
# empty entry in path means current dir
2930
[ x"$dir"= x ]&& dir='.'
3031
if [-f"$dir/$CMDNAME" ];then
@@ -193,18 +194,20 @@ echo
193194
echo"DELETE FROM pg_group;"
194195
echo
195196

196-
$PSQL -d template1 -At -F'' \
197-
-c'SELECT groname,grosysid,grolist FROM pg_group;'| \
198-
whileread GRONAME GROSYSID GROLIST;do
197+
198+
$PSQL -d template1 -At -F'
199+
' -c'SELECT groname,grosysid,grolist FROM pg_group;'| \
200+
whileread GRONAME;do
201+
read GROSYSID
202+
read GROLIST
199203
echo"CREATE GROUP\"$GRONAME\" WITH SYSID${GROSYSID};"
200-
raw_grolist=`echo"$GROLIST"| sed's/^{\(.*\)}$/\1/'| tr','''`
201-
foruseridin$raw_grolist;do
202-
username=`$PSQL -d template1 -At -c"SELECT usename FROM pg_shadow WHERE usesysid =${userid};"`
204+
echo"$GROLIST"| sed's/^{\(.*\)}$/\1/'| tr',''\n'|
205+
whileread userid;do
206+
username="`$PSQL -d template1 -At -c\"SELECT usename FROM pg_shadow WHERE usesysid =${userid};\"`"
203207
echo" ALTER GROUP\"$GRONAME\" ADD USER\"$username\";"
204208
done
205209
done
206210

207-
208211
test"$globals_only" = yes&&exit 0
209212

210213

@@ -218,10 +221,13 @@ exec 4<&0
218221
# We skip databases marked not datallowconn, since we'd be unable to
219222
# connect to them anyway (and besides, we don't want to dump template0).
220223

221-
$PSQL -d template1 -At -F'' \
222-
-c"SELECT datname, coalesce(usename, (select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), pg_encoding_to_char(d.encoding), datistemplate, datpath FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) WHERE datallowconn ORDER BY 1;"| \
223-
whileread DATABASE DBOWNER ENCODING ISTEMPLATE DBPATH;do
224-
224+
$PSQL -d template1 -At -F'
225+
' -c"SELECT datname, coalesce(usename, (select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), pg_encoding_to_char(d.encoding), datistemplate, datpath FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) WHERE datallowconn ORDER BY 1;"| \
226+
whileread DATABASE;do
227+
read DBOWNER
228+
read ENCODING
229+
read ISTEMPLATE
230+
read DBPATH
225231
if ["$DATABASE"!= template1 ];then
226232
echo
227233

@@ -243,8 +249,8 @@ while read DATABASE DBOWNER ENCODING ISTEMPLATE DBPATH; do
243249
fi
244250
done
245251

246-
$PSQL -d template1 -At -F'' \
247-
-c"SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;"| \
252+
$PSQL -d template1 -At -F'
253+
' -c"SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;"| \
248254
whileread DATABASE;do
249255
echo"dumping database\"$DATABASE\"..."1>&2
250256
echo

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp