Thread: initdb
The following code is in initdb.sh: exit_nicely(){ stty echo > /dev/null 2>&1 echo 1>&2 echo "$CMDNAME: failed" 1>&2 if [ "$noclean" != yes ]; then if [ "$made_new_pgdata" = yes ]; then echo "$CMDNAME: removing data directory \"$PGDATA\"" 1>&2 rm -rf "$PGDATA" || echo "$CMDNAME: failed" 1>&2 fi else echo "$CMDNAME: data directory \"$PGDATA\" not removedat user's request" 1>&2 fi exit 1 } So if the data directory previously existed and was empty, we don't clean it out on error, even if we didn't use the noclean flag. Is this intended behaviour or a bug? (If a bug it's trivially easy to fix.) cheers andrew
Andrew Dunstan writes: > So if the data directory previously existed and was empty, we don't > clean it out on error, even if we didn't use the noclean flag. Is this > intended behaviour or a bug? (If a bug it's trivially easy to fix.) If the data directory already existed, we don't want to delete it. We should possibly delete the content, though. -- Peter Eisentraut peter_e@gmx.net
Peter Eisentraut wrote: >Andrew Dunstan writes: > > > >>So if the data directory previously existed and was empty, we don't >>clean it out on error, even if we didn't use the noclean flag. Is this >>intended behaviour or a bug? (If a bug it's trivially easy to fix.) >> >> > >If the data directory already existed, we don't want to delete it. We >should possibly delete the content, though. > > > yes, that's what I meant. Here's a patch which should work, I think: Index: src/bin/initdb/initdb.sh =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/bin/initdb/initdb.sh,v retrieving revision 1.203 diff -c -w -r1.203 initdb.sh *** src/bin/initdb/initdb.sh 27 Sep 2003 16:27:57 -0000 1.203 --- src/bin/initdb/initdb.sh 1 Oct 2003 21:06:07 -0000 *************** *** 44,49 **** --- 44,53 ---- if [ "$made_new_pgdata" = yes ]; then echo "$CMDNAME: removing data directory \"$PGDATA\"" 1>&2 rm -rf "$PGDATA" || echo "$CMDNAME: failed" 1>&2 + else + echo "$CMDNAME: removing contents of data directory \"$PGDATA\"" 1>&2 + rm -rf "$PGDATA"/* || echo "$CMDNAME: failed" 1>&2 fi else echo "$CMDNAME: data directory \"$PGDATA\" not removed at user's request" 1>&2
This has been saved for the 7.5 release: http:/momjian.postgresql.org/cgi-bin/pgpatches2 I know initdb might be in C for 7.5, but this behavior has to be ported to 7.5 too then. --------------------------------------------------------------------------- Andrew Dunstan wrote: > Peter Eisentraut wrote: > > >Andrew Dunstan writes: > > > > > > > >>So if the data directory previously existed and was empty, we don't > >>clean it out on error, even if we didn't use the noclean flag. Is this > >>intended behaviour or a bug? (If a bug it's trivially easy to fix.) > >> > >> > > > >If the data directory already existed, we don't want to delete it. We > >should possibly delete the content, though. > > > > > > > yes, that's what I meant. > > Here's a patch which should work, I think: > > Index: src/bin/initdb/initdb.sh > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/bin/initdb/initdb.sh,v > retrieving revision 1.203 > diff -c -w -r1.203 initdb.sh > *** src/bin/initdb/initdb.sh 27 Sep 2003 16:27:57 -0000 1.203 > --- src/bin/initdb/initdb.sh 1 Oct 2003 21:06:07 -0000 > *************** > *** 44,49 **** > --- 44,53 ---- > if [ "$made_new_pgdata" = yes ]; then > echo "$CMDNAME: removing data directory \"$PGDATA\"" 1>&2 > rm -rf "$PGDATA" || echo "$CMDNAME: failed" 1>&2 > + else > + echo "$CMDNAME: removing contents of data directory > \"$PGDATA\"" 1>&2 > + rm -rf "$PGDATA"/* || echo "$CMDNAME: failed" 1>&2 > fi > else > echo "$CMDNAME: data directory \"$PGDATA\" not removed at > user's request" 1>&2 > > > > ---------------------------(end of broadcast)--------------------------- > TIP 8: explain analyze is your friend > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073