initdb

Started by Andrew Dunstanover 22 years ago4 messages
#1Andrew Dunstan
andrew@dunslane.net

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

#2Peter Eisentraut
peter_e@gmx.net
In reply to: Andrew Dunstan (#1)
Re: initdb

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

#3Andrew Dunstan
andrew@dunslane.net
In reply to: Peter Eisentraut (#2)
Re: [HACKERS] initdb

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
#4Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Andrew Dunstan (#3)
Re: [HACKERS] initdb

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