Re: win2k, service, pg_ctl, popen, etc

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: win2k, service, pg_ctl, popen, etc
Дата
Msg-id 200407211420.i6LEKvV23524@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: win2k, service, pg_ctl, popen, etc  (Claudio Natoli <claudio.natoli@memetrics.com>)
Ответы Re: win2k, service, pg_ctl, popen, etc  (Andreas Pflug <pgadmin@pse-consulting.de>)
Re: win2k, service, pg_ctl, popen, etc  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-hackers-win32
Claudio Natoli wrote:
>
> > If we don't know why, sign one more down as a bug in mingw (hardly
> > surprising - just the area of pipes and consoles seems to be
> > where it's weak). In that case, why not just recode pg_ctl to execute
> > postmaster.exe from the same directory it found pg_ctl.exe
> > in. This can easily be done using GetModuleFileName(). Is a pipe opened at
>
> > any other place? Or does other places need to be fixed as well (I haven't
> gone
> > through the whole code).
>
> Moreover, all the find_*_exec calls could (and IMHO, should) make use of
> GetModuleFileName. Win32 has an API to find the running file name; *nix does
> not and so we have to jump through a few hoops. I just don't see the sense
> in jumping through the same hoops under Win32.
>
> Sure, the functions also make certain that the version is as expected, but
> to my mind this is just a safety check to make sure the hoops we just jumped
> through were all in order. Of course, we'd also lose the ability to protect
> people who mix versions in the same directory, but such people need a lot
> more protection from themselves than we can provide. ;-)
>
> Does there continue to be any resistance to this approach? If not, I'll
> gladly provide a patch.

GetModuleFileName() doesn't solve our problem here.  We already know
what we think is the right path, but we have to be sure that we are
calling a matching version binary.  For example, initdb wants to call a
postgres that is the right version, as does pg_ctl.  We have had
mismatches reported in the past, and with relocatable installs it is
even more likely.

The version check is centralized in one place, exec.c, and I don't want
to have different behaviors on Win32 and Unix if we can help it.  Let's
go with the system() into a temp file.

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

В списке pgsql-hackers-win32 по дате отправления:

Предыдущее
От: Andreas Pflug
Дата:
Сообщение: Re: win2k, service, pg_ctl, popen, etc
Следующее
От: "Magnus Hagander"
Дата:
Сообщение: Re: win2k, service, pg_ctl, popen, etc