Thread: pgsql-server: Use strdup in pg_ctl for canonicalize_path on environment

pgsql-server: Use strdup in pg_ctl for canonicalize_path on environment

From
momjian@svr1.postgresql.org (Bruce Momjian)
Date:
Log Message:
-----------
Use strdup in pg_ctl for canonicalize_path on environment variable.
Simplify postmaster call too.

Modified Files:
--------------
    pgsql-server/src/backend/postmaster:
        postmaster.c (r1.409 -> r1.410)

(http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/postmaster/postmaster.c.diff?r1=1.409&r2=1.410)
    pgsql-server/src/bin/pg_ctl:
        pg_ctl.c (r1.18 -> r1.19)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/bin/pg_ctl/pg_ctl.c.diff?r1=1.18&r2=1.19)

momjian@svr1.postgresql.org (Bruce Momjian) writes:
> Use strdup in pg_ctl for canonicalize_path on environment variable.
> Simplify postmaster call too.

You're not doing very well with this project :-(.  pg_ctl is now
actively broken, because the PGDATA value passed down to the
bootstrap backend is the one in the environment variable.  The
previous coding canonicalized that, this does not.

I do not like the "simplified" postmaster.c coding either; it may
save one line but it is harder to understand.

            regards, tom lane

Re: pgsql-server: Use strdup in pg_ctl for canonicalize_path

From
Bruce Momjian
Date:
Tom Lane wrote:
> momjian@svr1.postgresql.org (Bruce Momjian) writes:
> > Use strdup in pg_ctl for canonicalize_path on environment variable.
> > Simplify postmaster call too.
>
> You're not doing very well with this project :-(.  pg_ctl is now
> actively broken, because the PGDATA value passed down to the
> bootstrap backend is the one in the environment variable.  The
> previous coding canonicalized that, this does not.

I didn't think we could modify the environment variables like that
portably.   Also, it is not even needed because we now do the proper
canonicalization in the postmaster.

> I do not like the "simplified" postmaster.c coding either; it may
> save one line but it is harder to understand.

OK, reverted that part.

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

Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Tom Lane wrote:
>> You're not doing very well with this project :-(.  pg_ctl is now
>> actively broken, because the PGDATA value passed down to the
>> bootstrap backend is the one in the environment variable.  The
>> previous coding canonicalized that, this does not.

> I didn't think we could modify the environment variables like that
> portably.

Possibly not, but if you think that then the correct response is to
re-assign the environment var using putenv().

            regards, tom lane

Re: pgsql-server: Use strdup in pg_ctl for canonicalize_path

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Tom Lane wrote:
> >> You're not doing very well with this project :-(.  pg_ctl is now
> >> actively broken, because the PGDATA value passed down to the
> >> bootstrap backend is the one in the environment variable.  The
> >> previous coding canonicalized that, this does not.
>
> > I didn't think we could modify the environment variables like that
> > portably.
>
> Possibly not, but if you think that then the correct response is to
> re-assign the environment var using putenv().

Yea, but we clean up the variable on input to the backend anyway.

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