Обсуждение: IPC on win32 - additions for 6.5.2 and current trees

Поиск
Список
Период
Сортировка

IPC on win32 - additions for 6.5.2 and current trees

От
Horak Daniel
Дата:
Hi,

please add the file ipc.patch (patch for the cygipc library) into src/win32
directory and apply the patch for README.NT (readme.patch). I think it
should go into both the 6.5.2 and current trees.

I have no reaction from the author of the cygipc library yet, so it will be
better to include the patch into the sources of PostgreSQL

            Dan



Вложения

Re: IPC on win32 - additions for 6.5.2 and current trees

От
yutaka tanida
Дата:
Hi,

Daniel Horak wrote:

> Hi,
> 
> please add the file ipc.patch (patch for the cygipc library) into src/win32
> directory and apply the patch for README.NT (readme.patch). I think it
> should go into both the 6.5.2 and current trees.
> 
> I have no reaction from the author of the cygipc library yet, so it will be
> better to include the patch into the sources of PostgreSQL

I propose more patch against cygipc. 

Hiroshi Inoue (inoue@tpf.co.jp) found another backend freezing problem.
He also found semop() in cygipc can't decrement semaphore value
correctly (Only -1 is supported).

I create follwing patch fixes these issues.


I'm sorry for my poor English.

*** sem.c.orig_    Tue Aug 17 14:19:37 1999
--- sem.c    Tue Aug 31 16:59:49 1999
***************
*** 204,210 ****     {     CloseHandle ( LHandle ) ;     }
!     LHandle = CreateSemaphore(NULL, 0, 0x7FFFFFFF, LBuff) ;     if( LHandle == NULL )     {     printf( "Creation de
Semaphore\"Sem\" impossible\n" ) ;
 
--- 204,210 ----     {     CloseHandle ( LHandle ) ;     }
!     LHandle = CreateSemaphore(NULL, 0, 1, LBuff) ;     if( LHandle == NULL )     {     printf( "Creation de Semaphore
\"Sem\"impossible\n" ) ;
 
***************
*** 374,388 **** debug_printf("do_semop : return -EACCES\n");             CYGWIN32_IPCNT_RETURN (-EACCES) ;
}
!             ReleaseSemaphore(LHandle, sop->sem_op, &LVal) ;
!                 shareadrsem->current_nb[id].current_nb[sop->sem_num] +=
!                     sop->sem_op ;             sem_deconnect() ;         } else {             if( sop->sem_flg ==
IPC_NOWAIT)             {
 
!             LRet = WaitForSingleObject(LHandle, 0) ;
!             if( LRet == WAIT_TIMEOUT )             { debug_printf("do_semop : return -EAGAIN\n");
CYGWIN32_IPCNT_RETURN(-EAGAIN) ;
 
--- 374,387 ---- debug_printf("do_semop : return -EACCES\n");             CYGWIN32_IPCNT_RETURN (-EACCES) ;
}
!             shareadrsem->current_nb[id].current_nb[sop->sem_num] +=
!                 sop->sem_op ;             sem_deconnect() ;
+             ReleaseSemaphore(LHandle, 1 , &LVal) ;         } else {             if( sop->sem_flg == IPC_NOWAIT )
      {
 
!             if( sop->sem_op + shareadrsem->current_nb[id].current_nb[sop->sem_num] <0 )             {
debug_printf("do_semop: return -EAGAIN\n");                 CYGWIN32_IPCNT_RETURN (-EAGAIN) ;
 
***************
*** 392,407 **** debug_printf("do_semop : return -EACCES\n");                 CYGWIN32_IPCNT_RETURN (-EACCES) ;
   }
 
!                 shareadrsem->current_nb[id].current_nb[sop->sem_num] -= 1 ;             sem_deconnect() ;
}else {
 
!             LRet = WaitForSingleObject(LHandle, INFINITE) ;             if (sem_connect() == 0)             {
debug_printf("do_semop: return -EACCES\n");                 CYGWIN32_IPCNT_RETURN (-EACCES) ;             }
 
!                 shareadrsem->current_nb[id].current_nb[sop->sem_num] -= 1 ;                 sem_deconnect() ;
   }         }
 
--- 391,408 ---- debug_printf("do_semop : return -EACCES\n");                 CYGWIN32_IPCNT_RETURN (-EACCES) ;
   }
 
!                 shareadrsem->current_nb[id].current_nb[sop->sem_num] += sop->sem_op;             sem_deconnect() ;
        } else {
 
!             while(sop->sem_op + shareadrsem->current_nb[id].current_nb[sop->sem_num] <0)
!                 LRet = WaitForSingleObject(LHandle, INFINITE) ;
!                          if (sem_connect() == 0)             { debug_printf("do_semop : return -EACCES\n");
     CYGWIN32_IPCNT_RETURN (-EACCES) ;             }
 
!                 shareadrsem->current_nb[id].current_nb[sop->sem_num] += sop->sem_op ;                 sem_deconnect()
;            }         }
 
***************
*** 452,458 ****     char LBuff[100] ;     HANDLE LHandle ;     long LPrevious ;
-     int LIndex;  debug_printf("semctl : semid=%X semnum=%X cmd=0x%02X arg=%p\n",semid,semnum,cmd,arg);     if (semid
<0 || semnum < 0 || cmd < 0)
 
--- 453,458 ----
***************
*** 585,606 ****         if( LHandle != NULL )         {             if( arg.val >
shareadrsem->current_nb[id].current_nb[semnum])
 
!             {
!             ReleaseSemaphore(LHandle,
!             arg.val-shareadrsem->current_nb[id].current_nb[semnum],
!             &LPrevious) ;
!             }
!             else if (arg.val <
!                      shareadrsem->current_nb[id].current_nb[semnum] )
!             {
!             for( LIndex = arg.val;
!             LIndex < shareadrsem->current_nb[id].current_nb[semnum];
!             LIndex++ )
!             {
!                 WaitForSingleObject(LHandle, 0) ;
!             }
!             }
!                     shareadrsem->current_nb[id].current_nb[semnum] = arg.val ;         } debug_printf("semctl :
SETVAL: return 0\n");         CYGWIN32_IPCNT_RETURN_DECONNECT (0);
 
--- 585,592 ----         if( LHandle != NULL )         {             if( arg.val >
shareadrsem->current_nb[id].current_nb[semnum])
 
!                 ReleaseSemaphore(LHandle,1,&LPrevious) ;
!             shareadrsem->current_nb[id].current_nb[semnum] = arg.val ;         } debug_printf("semctl : SETVAL :
return0\n");         CYGWIN32_IPCNT_RETURN_DECONNECT (0);
 



--
Yutaka tanida / S34 Co., Ltd.
tanida@s34.co.jp (Office)
yutaka@marin.or.jp(Private, or if you *HATE* Microsoft Outlook)



RE: [HACKERS] IPC on win32 - additions for 6.5.2 and current trees

От
"Hiroshi Inoue"
Дата:
> -----Original Message-----
> From: owner-pgsql-hackers@postgreSQL.org
> [mailto:owner-pgsql-hackers@postgreSQL.org]On Behalf Of Horak Daniel
> Sent: Monday, August 30, 1999 9:15 PM
> To: 'pgsql-hackers@postgreSQL.org'; 'pgsql-patches@postgresql.org'
> Subject: [HACKERS] IPC on win32 - additions for 6.5.2 and current trees
> 
> 
> Hi,
> 
> please add the file ipc.patch (patch for the cygipc library) into 
> src/win32
> directory and apply the patch for README.NT (readme.patch). I think it
> should go into both the 6.5.2 and current trees.
> 
> I have no reaction from the author of the cygipc library yet, so 
> it will be
> better to include the patch into the sources of PostgreSQL
>

It's me who made the patch. Yutaka Tanida also provided a patch
for cygipc library to prevent lock freezing by changing the
implementation of semaphore.
These patches are necessary to prevent freezing in cygwin port.   
If there's no objection,I would add a new ipc.patch provided by 
Yutaka into src/win32 and commit the patch for README.NT
for current tree.

Regards.

Hiroshi Inoue
Inoue@tpf.co.jp

Re: [HACKERS] IPC on win32 - additions for 6.5.2 and current trees

От
Bruce Momjian
Дата:
> Hi,
>
> please add the file ipc.patch (patch for the cygipc library) into src/win32
> directory and apply the patch for README.NT (readme.patch). I think it
> should go into both the 6.5.2 and current trees.
>
> I have no reaction from the author of the cygipc library yet, so it will be
> better to include the patch into the sources of PostgreSQL
>
>             Dan
>
>


I am attaching our current README.NT file.  I have done some cleanups
and appended the patch to the README file.

--
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
From: "Joost Kraaijeveld" <JKraaijeveld@askesis.nl>
To: "Pgsql-Ports@Postgresql. Org" <pgsql-ports@postgreSQL.org>
Subject: RE: [PORTS] Re: psql under win32
Date: Wed, 21 Apr 1999 07:07:47 +0200
Message-ID: <000001be8bb4$e59b0ab0$0300a8c0@abraracourcix.askesis.nl>
MIME-Version: 1.0

Installing PostgreSQL on NT:

---------------------------------------------------------------------------

It can be done by done by typing configure, make and make install.

1. Install the Cygwin package
2. Update to EGCS 1.1.2
   (This may be optional.)

---------------------------------------------------------------------------

                OPTIONAL

1. Install the Andy Piper Tools (http://www.xemacs.freeserve.co.uk/)
   (This may be optional.)

---------------------------------------------------------------------------

              CYGWIN32 INSTALLATION

1. Download the Cygwin32 IPC Package by Ludovic LANGE
   http://www.multione.capgemini.fr:80/tools/pack_ipc/current.tar.gz
2. Untar the package and follow the readme instructions.
3. Apply the patch from the file.
4. I tested 1.03.
5. I used the \cygwin-b20\h-i568-cygwin32\i586-cygwin32\lib and
\cygwin-b20\h-i568-cygwin32\i586-cygwin32\include\sys instead of the
/usr/local/lib and usr/local/include/sys.

NOTE:
Also, the cygnus-bindir has to be placed in the path before the
NT-directories, because the sort.exe has to be taken for cygnus, not
NT.

---------------------------------------------------------------------------

           POSTGRESQL INSTALL WITH NT SPECIFICS

1. Download the current version of PostgreSQL.
2. Untar the package.
3. Copy the files from \pgsql\src\win32 according to the readme file.
4. Edit \pgsql\src\template\cygwin32 if needed (I had to adjust the YFLAGS
path).
5. ./configure
6. make
7. create the directory /usr/local/pgsql manually: the mkdir cannot create a
directory 2 levels deep in one step.
8. make install
9. cd /usr/lical/pgsql/doc
10. make install
11. Set the environmental data
12. Initdb --username=jkr (do not run this command as administrator)

13. Open a new Cygwin command prompt
14. Start "ipc-deamon&" (background proces)
15. Start "postmaster -i 2>&1 > /tmp/postgres.log &" (background proces)
16. Start "tail -f /tmp/postgres.log" to see the messages

17. cd /usr/src/pgsql/src/test/regress
18. make all runtest

All test should be run, allthought the latest snapshot I tested (18-4)
appears to have some problems with locking.

NOTE:
By default, PostgreSQL clients like psql communicate using unix domain
sockets, which don't work on NT.  Start the postmaster with -i, and
when connecting to the database from a client, set the PGHOST
environment variable to 'localhost' or supply the hostname on the
command line.

Joost


---------------------------------------------------------------------------

FIX FOR POSTGRESQL FREEZING ON NT MACHINES - EVERYONE SHOULD APPLY THIS PATCH


From: "Hiroshi Inoue" <Inoue@tpf.co.jp>
To: "Horak Daniel" <horak@mmp.plzen-city.cz>, "'Tom Lane'" <tgl@sss.pgh.pa.us>
Cc: <pgsql-hackers@postgreSQL.org>
Subject: RE: [HACKERS] backend freezeing on win32 fixed (I hope ;-) )
Date: Wed, 18 Aug 1999 08:45:28 +0900
Message-ID: <000301bee90a$95d40f00$2801007e@cadzone.tpf.co.jp>
MIME-Version: 1.0
Content-Type: text/plain;
    charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
In-reply-to: <2E7F82FAC1FCD2118E1500A024B3BF907DED3F@exchange.mmp.plzen-city.cz>
Importance: Normal
Sender: owner-pgsql-hackers@postgreSQL.org
Precedence: bulk
Status: RO

> -----Original Message-----
> From: owner-pgsql-hackers@postgreSQL.org
> [mailto:owner-pgsql-hackers@postgreSQL.org]On Behalf Of Horak Daniel
> Sent: Tuesday, August 17, 1999 9:06 PM
> To: 'Tom Lane'
> Cc: 'pgsql-hackers@postgreSQL.org'
> Subject: RE: [HACKERS] backend freezeing on win32 fixed (I hope ;-) )

Yutaka Tanida [yutaka@marin.or.jp] and I have examined IPC
library.

We found that postmaster doesn't call exec() after fork() since v6.4.

The value of static/extern variables which cygipc library holds may
be different from their initial values when postmaster fork()s child
backend processes.

I made the following patch for cygipc library on trial.
This patch was effective for Yutaka's test case.

Regards.

Hiroshi Inoue
Inoue@tpf.co.jp

*** sem.c.orig    Tue Dec 01 00:16:25 1998
--- sem.c    Tue Aug 17 13:22:06 1999
***************
*** 58,63 ****
--- 58,78 ----
  static int          GFirstSem     = 0;        /*PCPC*/
  static int          GFdSem        ;        /*PCPC*/

+ static pid_t    GProcessId = 0;
+
+ static void    init_globals(void)
+ {
+     pid_t pid;
+
+     if (pid=getpid(), pid != GProcessId)
+     {
+         GFirstSem = 0;
+         used_sems = used_semids = max_semid = 0;
+         sem_seq = 0;
+         GProcessId = pid;
+     }
+ }
+
  /************************************************************************/
  /* Demande d'acces a la zone partagee de gestion des semaphores        */
  /************************************************************************/
***************
*** 77,82 ****
--- 92,98 ----
  {
      int LRet ;

+     init_globals();
      if( GFirstSem == 0 )
      {
      if( IsGSemSemExist() )
*** shm.c.orig    Tue Dec 01 01:04:57 1998
--- shm.c    Tue Aug 17 13:22:27 1999
***************
*** 59,64 ****
--- 59,81 ----
  static int          GFirstShm     = 0;        /*PCPC*/
  static int          GFdShm        ;        /*PCPC*/

+ /*****************************************/
+ /*    Initialization of static variables   */
+ /*****************************************/
+ static pid_t GProcessId = 0;
+ static void init_globals(void)
+ {
+     pid_t pid;
+
+     if (pid=getpid(), pid != GProcessId)
+     {
+         GFirstShm = 0;
+         shm_rss = shm_swp = max_shmid = 0;
+         shm_seq = 0;
+         GProcessId = pid;
+     }
+ }
+
  /************************************************************************/
  /* Demande d'acces a la zone partagee de gestion des shm        */
  /************************************************************************/
***************
*** 82,87 ****
--- 99,105 ----
  {
   int LRet ;

+  init_globals();
   if( GFirstShm == 0 )
   {
    if( IsGSemShmExist() )
*** msg.c.orig    Tue Dec 01 00:16:09 1998
--- msg.c    Tue Aug 17 13:20:04 1999
***************
*** 57,62 ****
--- 57,77 ----
  static int          GFirstMsg     = 0;        /*PCPC*/
  static int          GFdMsg        ;        /*PCPC*/

+ /*****************************************/
+ /*    Initialization of static variables   */
+ /*****************************************/
+ static pid_t GProcessId = 0;
+ static void init_globals(void)
+ {
+     pid_t pid;
+
+     if (pid=getpid(), pid != GProcessId)
+     {
+         GFirstMsg = 0;
+         msgbytes = msghdrs = msg_seq = used_queues = max_msqid = 0;
+         GProcessId = pid;
+     }
+ }
  /************************************************************************/
  /* Demande d'acces a la zone partagee de gestion des semaphores        */
  /************************************************************************/
***************
*** 79,84 ****
--- 94,100 ----
  {
   int LRet ;

+  init_globals();
   if( GFirstMsg == 0 )
   {
    if( IsGSemMsgExist() )





Re: [HACKERS] Re: IPC on win32 - additions for 6.5.2 and current trees

От
Bruce Momjian
Дата:
NT folks, I assume this patch is no longer needed.


> Hi,
> 
> Daniel Horak wrote:
> 
> > Hi,
> > 
> > please add the file ipc.patch (patch for the cygipc library) into src/win32
> > directory and apply the patch for README.NT (readme.patch). I think it
> > should go into both the 6.5.2 and current trees.
> > 
> > I have no reaction from the author of the cygipc library yet, so it will be
> > better to include the patch into the sources of PostgreSQL
> 
> I propose more patch against cygipc. 
> 
> Hiroshi Inoue (inoue@tpf.co.jp) found another backend freezing problem.
> He also found semop() in cygipc can't decrement semaphore value
> correctly (Only -1 is supported).
> 
> I create follwing patch fixes these issues.
> 
> 
> I'm sorry for my poor English.
> 
> *** sem.c.orig_    Tue Aug 17 14:19:37 1999
> --- sem.c    Tue Aug 31 16:59:49 1999
> ***************
> *** 204,210 ****
>       {
>       CloseHandle ( LHandle ) ;
>       }
> !     LHandle = CreateSemaphore(NULL, 0, 0x7FFFFFFF, LBuff) ;
>       if( LHandle == NULL )
>       {
>       printf( "Creation de Semaphore \"Sem\" impossible\n" ) ;
> --- 204,210 ----
>       {
>       CloseHandle ( LHandle ) ;
>       }
> !     LHandle = CreateSemaphore(NULL, 0, 1, LBuff) ;
>       if( LHandle == NULL )
>       {
>       printf( "Creation de Semaphore \"Sem\" impossible\n" ) ;
> ***************
> *** 374,388 ****
>   debug_printf("do_semop : return -EACCES\n");
>               CYGWIN32_IPCNT_RETURN (-EACCES) ;
>               }
> !             ReleaseSemaphore(LHandle, sop->sem_op, &LVal) ;
> !                 shareadrsem->current_nb[id].current_nb[sop->sem_num] +=
> !                     sop->sem_op ;
>               sem_deconnect() ;
>           } else {
>               if( sop->sem_flg == IPC_NOWAIT )
>               {
> !             LRet = WaitForSingleObject(LHandle, 0) ;
> !             if( LRet == WAIT_TIMEOUT )
>               {
>   debug_printf("do_semop : return -EAGAIN\n");
>                   CYGWIN32_IPCNT_RETURN (-EAGAIN) ;
> --- 374,387 ----
>   debug_printf("do_semop : return -EACCES\n");
>               CYGWIN32_IPCNT_RETURN (-EACCES) ;
>               }
> !             shareadrsem->current_nb[id].current_nb[sop->sem_num] +=
> !                 sop->sem_op ;
>               sem_deconnect() ;
> +             ReleaseSemaphore(LHandle, 1 , &LVal) ;
>           } else {
>               if( sop->sem_flg == IPC_NOWAIT )
>               {
> !             if( sop->sem_op + shareadrsem->current_nb[id].current_nb[sop->sem_num] <0 )
>               {
>   debug_printf("do_semop : return -EAGAIN\n");
>                   CYGWIN32_IPCNT_RETURN (-EAGAIN) ;
> ***************
> *** 392,407 ****
>   debug_printf("do_semop : return -EACCES\n");
>                   CYGWIN32_IPCNT_RETURN (-EACCES) ;
>               }
> !                 shareadrsem->current_nb[id].current_nb[sop->sem_num] -= 1 ;
>               sem_deconnect() ;
>               } else {
> !             LRet = WaitForSingleObject(LHandle, INFINITE) ;
>               if (sem_connect() == 0)
>               {
>   debug_printf("do_semop : return -EACCES\n");
>                   CYGWIN32_IPCNT_RETURN (-EACCES) ;
>               }
> !                 shareadrsem->current_nb[id].current_nb[sop->sem_num] -= 1 ;
>                   sem_deconnect() ;
>               }
>           }
> --- 391,408 ----
>   debug_printf("do_semop : return -EACCES\n");
>                   CYGWIN32_IPCNT_RETURN (-EACCES) ;
>               }
> !                 shareadrsem->current_nb[id].current_nb[sop->sem_num] += sop->sem_op;
>               sem_deconnect() ;
>               } else {
> !             while(sop->sem_op + shareadrsem->current_nb[id].current_nb[sop->sem_num] <0)
> !                 LRet = WaitForSingleObject(LHandle, INFINITE) ;
> !             
>               if (sem_connect() == 0)
>               {
>   debug_printf("do_semop : return -EACCES\n");
>                   CYGWIN32_IPCNT_RETURN (-EACCES) ;
>               }
> !                 shareadrsem->current_nb[id].current_nb[sop->sem_num] += sop->sem_op ;
>                   sem_deconnect() ;
>               }
>           }
> ***************
> *** 452,458 ****
>       char LBuff[100] ;
>       HANDLE LHandle ;
>       long LPrevious ;
> -     int LIndex;
>   
>   debug_printf("semctl : semid=%X semnum=%X cmd=0x%02X arg=%p\n",semid,semnum,cmd,arg);
>       if (semid < 0 || semnum < 0 || cmd < 0)
> --- 453,458 ----
> ***************
> *** 585,606 ****
>           if( LHandle != NULL )
>           {
>               if( arg.val > shareadrsem->current_nb[id].current_nb[semnum] )
> !             {
> !             ReleaseSemaphore(LHandle,
> !             arg.val-shareadrsem->current_nb[id].current_nb[semnum],
> !             &LPrevious) ;
> !             }
> !             else if (arg.val <
> !                      shareadrsem->current_nb[id].current_nb[semnum] )
> !             {
> !             for( LIndex = arg.val;
> !             LIndex < shareadrsem->current_nb[id].current_nb[semnum];
> !             LIndex++ )
> !             {
> !                 WaitForSingleObject(LHandle, 0) ;
> !             }
> !             }
> !                     shareadrsem->current_nb[id].current_nb[semnum] = arg.val ;
>           }
>   debug_printf("semctl : SETVAL : return 0\n");
>           CYGWIN32_IPCNT_RETURN_DECONNECT (0);
> --- 585,592 ----
>           if( LHandle != NULL )
>           {
>               if( arg.val > shareadrsem->current_nb[id].current_nb[semnum] )
> !                 ReleaseSemaphore(LHandle,1,&LPrevious) ;
> !             shareadrsem->current_nb[id].current_nb[semnum] = arg.val ;
>           }
>   debug_printf("semctl : SETVAL : return 0\n");
>           CYGWIN32_IPCNT_RETURN_DECONNECT (0);
> 
> 
> 
> --
> Yutaka tanida / S34 Co., Ltd.
> tanida@s34.co.jp (Office)
> yutaka@marin.or.jp(Private, or if you *HATE* Microsoft Outlook)
> 
> 
> ************
> 
> 


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


RE: [HACKERS] Re: IPC on win32 - additions for 6.5.2 and current trees

От
"Hiroshi Inoue"
Дата:
> -----Original Message-----
> From: Bruce Momjian [mailto:maillist@candle.pha.pa.us]
> Sent: Tuesday, September 28, 1999 5:49 AM
> To: yutaka tanida
> Cc: pgsql-hackers@hub.org; inoue@tpf.co.jp
> Subject: Re: [HACKERS] Re: IPC on win32 - additions for 6.5.2 and
> current trees
> 
> 
> NT folks, I assume this patch is no longer needed.
>

No,his patch is needed.
I have already committed a new patch which combines Yutaka's and
my patch to current tree under src/win32.

Regards.

Hiroshi Inoue
Inoue@tpf.co.jp


Re: [HACKERS] Re: IPC on win32 - additions for 6.5.2 and current trees

От
Bruce Momjian
Дата:
[Charset iso-8859-1 unsupported, filtering to ASCII...]
> > -----Original Message-----
> > From: Bruce Momjian [mailto:maillist@candle.pha.pa.us]
> > Sent: Tuesday, September 28, 1999 5:49 AM
> > To: yutaka tanida
> > Cc: pgsql-hackers@hub.org; inoue@tpf.co.jp
> > Subject: Re: [HACKERS] Re: IPC on win32 - additions for 6.5.2 and
> > current trees
> >
> >
> > NT folks, I assume this patch is no longer needed.
> >
>
> No,his patch is needed.
> I have already committed a new patch which combines Yutaka's and
> my patch to current tree under src/win32.

OK, patch removed from README, and user pointed to new file in win32
directory.

--
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026