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 removed at 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