Thread: initdb

initdb

From
Andrew Dunstan
Date:
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



Re: initdb

From
Peter Eisentraut
Date:
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



Re: initdb

From
Andrew Dunstan
Date:
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



Re: initdb

From
Bruce Momjian
Date:
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