diff options
author | Bruce Momjian <bruce@momjian.us> | 2000-06-02 02:27:59 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2000-06-02 02:27:59 +0000 |
commit | acad203c31cc7d2c80937ff5b65ff8295f71c46c (patch) | |
tree | db5a1d0af3831a0fbc75cc7bb1395d27a9592f32 /doc/FAQ_NT | |
parent | bff5dce9939cdf38b4b7b9f6b1e70672d25aae3c (diff) | |
download | postgresql-acad203c31cc7d2c80937ff5b65ff8295f71c46c.tar.gz postgresql-acad203c31cc7d2c80937ff5b65ff8295f71c46c.zip |
Update faq's.
Diffstat (limited to 'doc/FAQ_NT')
-rw-r--r-- | doc/FAQ_NT | 367 |
1 files changed, 367 insertions, 0 deletions
diff --git a/doc/FAQ_NT b/doc/FAQ_NT new file mode 100644 index 00000000000..e4542895063 --- /dev/null +++ b/doc/FAQ_NT @@ -0,0 +1,367 @@ +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.) + You need at least the crypt library (also available as + ftp://sourceware.cygnus.com/pub/cygwin/xfree/libcrypt-cygwin-b20.1.tar.bz2) + +--------------------------------------------------------------------------- + + CYGWIN32 INSTALLATION + +1. Download the Cygwin32 IPC Package by Ludovic LANGE + http://penguin.cz/~horak/cygwin32_ipc-1.03.tar.gz +2. Untar the package and follow the readme instructions. +3. Apply the patch at the end of this file to the cygipc sources + before compiling the library. +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. + +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 + +PS: If you still have problems you can mail to Dan Horak <dan.horak@email.cz> + who is the maintainer for the win32 port + +--------------------------------------------------------------------------- + +*** ./ipc-daemon.c.orig Tue Dec 01 00:04:24 1998 +--- ./ipc-daemon.c Fri Sep 24 13:34:16 1999 +*************** +*** 270,285 **** + { + itoa(100*id+Index, LBuff) ; + LHandle = OpenSemaphore(SEMAPHORE_ALL_ACCESS, FALSE, LBuff) ; +! while (LAdrSem->current_nb[id].current_nb[Index] > 0 ) +! { +! WaitForSingleObject(LHandle, 0) ; +! LAdrSem->current_nb[id].current_nb[Index]-- ; +! } +! CloseHandle(LHandle) ; + } + LAdrSem->semary[id] = IPC_UNUSED ; + LAdrSem->state[id] = 0 ; + } + else + { + for (Index = 0; Index < sma->sem_nsems; Index++) +--- 270,284 ---- + { + itoa(100*id+Index, LBuff) ; + LHandle = OpenSemaphore(SEMAPHORE_ALL_ACCESS, FALSE, LBuff) ; +! while (WaitForSingleObject(LHandle, 0) == WAIT_OBJECT_0) +! ; +! LAdrSem->current_nb[id].current_nb[Index] = 0; +! CloseHandle(LHandle) ; + } + LAdrSem->semary[id] = IPC_UNUSED ; + LAdrSem->state[id] = 0 ; + } ++ /* + else + { + for (Index = 0; Index < sma->sem_nsems; Index++) +*************** +*** 288,293 **** +--- 287,293 ---- + LHandle = OpenSemaphore(SEMAPHORE_ALL_ACCESS, FALSE, LBuff) ; + } + } ++ */ + } + } + +*** ./msg.c.orig Tue Dec 01 00:16:09 1998 +--- ./msg.c Fri Sep 17 12:50:50 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() ) +*** ./sem.c.orig Tue Dec 01 00:16:25 1998 +--- ./sem.c Fri Sep 17 12:47:11 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() ) +*************** +*** 187,193 **** + { + CloseHandle ( LHandle ) ; + } +! LHandle = CreateSemaphore(NULL, 0, 0x7FFFFFFF, LBuff) ; + if( LHandle == NULL ) + { + printf( "Creation de Semaphore \"Sem\" impossible\n" ) ; +--- 203,209 ---- + { + CloseHandle ( LHandle ) ; + } +! LHandle = CreateSemaphore(NULL, 0, 1, LBuff) ; + if( LHandle == NULL ) + { + printf( "Creation de Semaphore \"Sem\" impossible\n" ) ; +*************** +*** 357,371 **** + 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) ; +--- 373,386 ---- + 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) ; +*************** +*** 375,390 **** + 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() ; + } + } +--- 390,407 ---- + 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() ; + } + } +*************** +*** 435,441 **** + 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) +--- 452,457 ---- +*************** +*** 568,589 **** + 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); +--- 584,591 ---- + 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); +*** ./shm.c.orig Fri Sep 17 12:46:24 1999 +--- ./shm.c Fri Sep 17 12:47:11 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() ) + |