From 12f59470a12af234624c5321915b8d025a840eb7 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 21 Jul 2001 04:41:29 +0000 Subject: [PATCH] Remove libpq TODO.detail. We don't need it any more because the item is done. --- doc/TODO.detail/libpq | 1753 ----------------------------------------- 1 file changed, 1753 deletions(-) delete mode 100644 doc/TODO.detail/libpq diff --git a/doc/TODO.detail/libpq b/doc/TODO.detail/libpq deleted file mode 100644 index f719b0da92..0000000000 --- a/doc/TODO.detail/libpq +++ /dev/null @@ -1,1753 +0,0 @@ -From pgsql-interfaces-owner+M1688@postgresql.org Tue Jun 5 17:37:13 2001 -Reply-To: -From: Jeff Johnson -To: -Subject: [INTERFACES] libpq socket problem on Win32 -Date: Thu, 31 May 2001 15:56:18 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -Importance: Normal -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 2088 - -I found a problem in libpq.dll when trying to send large SQL -statements to postgres 7.1.x on FreeBSD 4.3 from Windows 2000. The -same SQL worked fine when sent from FreeBSD. At first I thought it -was something to do with an 8k limit on text fields but it's just low -level socket code trying to deal with large packets that breaks on -Win32. - -It looks like recv on Win32 returns ENOENT instead of EAGAIN for some -reason. I avoid C as much as possible and low level socket stuff so -this is all new to me. I hacked libpq\fe-misc.c to handle ENOENT the -same way it handles EAGAIN and everything works now. I got the clue -from searching deja.com for "ENOENT EAGAIN recv". The first article -describes a similar problem. - -I don't know if my code is the correct fix. Who should I send it to? - -Thanks, -Jeff - -> -----Original Message----- -> From: pygresql-admin@vex.net -> [mailto:pygresql-admin@vex.net]On Behalf Of -> Daryl Tester -> Sent: Thursday, May 31, 2001 9:56 AM -> To: pygresql@vex.net -> Subject: Re: [PyGreSQL] limit on size of text fields? -> -> -> Jeff Johnson wrote: -> -> Netscape just crashed and ate my last reply, so this one will -> be brief ... -> -> > Why does the same script run fine when run from FreeBSD also using -> > pygresql? -> -> No idea. -> -> > Postgres claims it -> > has virtually no limits and 8k seems kinda small for a text field -> > limit. -> -> This is on 6.5 - I've no idea what you're running - -> -> dt=> create table test ( t text); -> CREATE -> insert into test values ('xxxxxxxxxxxxxxxxxx'); -- x * 8200 -> ERROR: Tuple is too big: size 8236 -> EOF -> -> According to the FAQ on PostgreSQL's website, 7.1 and greater -> supports unlimited row size. Which version are you running? -> -> Regards, -> Daryl Tester -> -> _______________________________________________ -> PyGreSQL mailing list -> PyGreSQL@vex.net -> http://www.vex.net/mailman/listinfo/pygresql -> - - - - ----------------------------(end of broadcast)--------------------------- -TIP 2: you can get off all lists at once with the unregister command - (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) - -From pgsql-docs-owner+M804@postgresql.org Tue Jun 5 17:28:56 2001 -Reply-To: -From: Jeff Johnson -To: , -Subject: [DOCS] libpq sockets on win32 -Date: Mon, 4 Jun 2001 12:42:12 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Precedence: bulk -Sender: pgsql-docs-owner@postgresql.org -Content-Length: 894 - -I found that sending more than 16k of data in a SQL statement caused a -problem. I was using PyGreSQL but narrowed the error down to -"\postgresql-7.1.2\src\interfaces\libpq\fe-misc.c" pqReadData() and -pqFlush(). After some poking around, it looked like recv was setting -errno to ENOENT for some reason. I figured out why today. Win32 -sockets don't set errno at all. ENOENT was just left in errno from -some earlier call. - -This article describes the problem and work around. -http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm - -I haven't done much C coding in a few years and don't want to break -other code by blindly doing: - -#define errno WSAGetLastError - -Does anyone that knows this code want to take a crack at it? - -Thanks, -Jeff - - ----------------------------(end of broadcast)--------------------------- -TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org - -From pgsql-interfaces-owner+M1662@postgresql.org Mon Jun 4 13:19:31 2001 -Reply-To: -From: Jeff Johnson -To: , -Subject: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 12:42:12 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 859 - -I found that sending more than 16k of data in a SQL statement caused a -problem. I was using PyGreSQL but narrowed the error down to -"\postgresql-7.1.2\src\interfaces\libpq\fe-misc.c" pqReadData() and -pqFlush(). After some poking around, it looked like recv was setting -errno to ENOENT for some reason. I figured out why today. Win32 -sockets don't set errno at all. ENOENT was just left in errno from -some earlier call. - -This article describes the problem and work around. -http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm - -I haven't done much C coding in a few years and don't want to break -other code by blindly doing: - -#define errno WSAGetLastError - -Does anyone that knows this code want to take a crack at it? - -Thanks, -Jeff - - ----------------------------(end of broadcast)--------------------------- -TIP 4: Don't 'kill -9' the postmaster - -From pgsql-interfaces-owner+M1665@postgresql.org Mon Jun 4 15:00:58 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 14:01:52 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 517 - -> > This article describes the problem and work around. -> > http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm -> -> I can't read that web site under Netscape. -> -> If I could read it, I think I could fix it. Please send it in some -> readable format. -> - -I chopped the content out and stuck it into a basic HTML file and -attached it. - -Thanks for taking a look, -Jeff - -[ Attachment, skipping... ] - - ----------------------------(end of broadcast)--------------------------- -TIP 4: Don't 'kill -9' the postmaster - -From jeff@jeffjohnson.net Mon Jun 4 14:08:25 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 14:01:52 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Content-Length: 404 - -> > This article describes the problem and work around. -> > http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm -> -> I can't read that web site under Netscape. -> -> If I could read it, I think I could fix it. Please send it in some -> readable format. -> - -I chopped the content out and stuck it into a basic HTML file and -attached it. - -Thanks for taking a look, -Jeff - -[ Attachment, skipping... ] - -From pgsql-interfaces-owner+M1664@postgresql.org Mon Jun 4 14:49:18 2001 -From: Bruce Momjian -Message-ID: <200106041822.f54IMjY29512@candle.pha.pa.us> -Subject: Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: from Jeff Johnson - at Jun 4, 2001 02:01:52 pm -To: jeff@jeffjohnson.net -Date: Mon, 4 Jun 2001 14:22:45 -0400 (EDT) -cc: pgsql-interfaces@postgresql.org, pgsql-docs@postgresql.org -X-Mailer: ELM [version 2.4ME+ PL90 (25)] -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 2326 - - -Can you try this patch and let me know if it helps? It is a different -approach. This was the only place I saw errno checked for a -non-predefined value. - -One other solution may be to use the #define only in the libpq C files -that need it. What really stinks is that the errno define is only -useful for socket errno settings. - -I do see a use in fe-connect.c: - - #ifndef WIN32 - if (errno == EINPROGRESS || errno == 0) - #else - if (WSAGetLastError() == WSAEINPROGRESS) - #endif - -I hate to litter this through the whole source. I wonder if we have to -bracket the errno checkes with #define/#undef. Can you try that with -the fix described on the web page. The above would convert to: - - #ifdef WIN32 - #define errno WSAGetLastError - #endif - if (errno == EINPROGRESS || errno == 0) - #ifdef WIN32 - #undef errno - #endif - -Maybe make these into their own macros somehow. - -> > > This article describes the problem and work around. -> > > http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm -> > -> > I can't read that web site under Netscape. -> > -> > If I could read it, I think I could fix it. Please send it in some -> > readable format. -> > -> -> I chopped the content out and stuck it into a basic HTML file and -> attached it. -> -> Thanks for taking a look, -> Jeff - -[ Attachment, skipping... ] - --- - Bruce Momjian | http://candle.pha.pa.us - pgman@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 - -Index: src/interfaces/libpq/fe-misc.c -=================================================================== -RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v -retrieving revision 1.49 -diff -c -r1.49 fe-misc.c -*** src/interfaces/libpq/fe-misc.c 2001/05/28 15:29:51 1.49 ---- src/interfaces/libpq/fe-misc.c 2001/06/04 17:52:40 -*************** -*** 614,619 **** ---- 614,623 ---- - - int sent; - -+ #ifdef WIN32 -+ errno = 0; /* Win32 doesn't set this, needs reset */ -+ #endif -+ - #ifdef USE_SSL - if (conn->ssl) - sent = SSL_write(conn->ssl, ptr, len); - - ----------------------------(end of broadcast)--------------------------- -TIP 6: Have you searched our list archives? - -http://www.postgresql.org/search.mpl - -From pgsql-interfaces-owner+M1667@postgresql.org Mon Jun 4 15:09:54 2001 -Date: Mon, 4 Jun 2001 20:24:23 +0200 (CEST) -From: Peter Eisentraut -To: Jeff Johnson -cc: -Subject: Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: -Message-ID: -X-Sender: 520083510237-0001@t-dialin.net -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 831 - -Jeff Johnson writes: - -> After some poking around, it looked like recv was setting errno to -> ENOENT for some reason. I figured out why today. Win32 sockets don't -> set errno at all. ENOENT was just left in errno from some earlier -> call. - -There are already a few (wrong) attempts to cover this situation in -fe-connect.c, but it looks like a bunch of #ifdef's are needed. - -> I haven't done much C coding in a few years and don't want to break -> other code by blindly doing: -> -> #define errno WSAGetLastError - -Probably rather - -#ifndef WIN32 -normal code; -#else -windows code; -#endif - --- -Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter - - ----------------------------(end of broadcast)--------------------------- -TIP 5: Have you checked our extensive FAQ? - -http://www.postgresql.org/users-lounge/docs/faq.html - -From tgl@sss.pgh.pa.us Mon Jun 4 14:29:46 2001 -To: Bruce Momjian -cc: jeff@jeffjohnson.net, pgsql-interfaces@postgresql.org, - pgsql-docs@postgresql.org -Subject: Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: <200106041753.f54HrrU27542@candle.pha.pa.us> -References: <200106041753.f54HrrU27542@candle.pha.pa.us> -Comments: In-reply-to Bruce Momjian - message dated "Mon, 04 Jun 2001 13:53:53 -0400" -Date: Mon, 04 Jun 2001 14:29:38 -0400 -Message-ID: <6675.991679378@sss.pgh.pa.us> -From: Tom Lane -Content-Length: 683 - -Bruce Momjian writes: ->> This article describes the problem and work around. ->> http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm - -> I can't read that web site under Netscape. - -Comes up fine for me (maybe you need to turn off Javascript?) - -However, the advice on it seems to be written by someone who does not -know the difference between a variable and a function :-(. Read with -a large grain of salt. - -We already have a couple of #ifdef'd usages of WSAGetLastError() in -libpq, but it's quite unclear which other references to errno might -need to be changed. A blanket replacement of errno would certainly -break things. - - regards, tom lane - -From pgsql-interfaces-owner+M1666@postgresql.org Mon Jun 4 15:04:34 2001 -To: Bruce Momjian -cc: jeff@jeffjohnson.net, pgsql-interfaces@postgresql.org, - pgsql-docs@postgresql.org -Subject: Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: <200106041753.f54HrrU27542@candle.pha.pa.us> -References: <200106041753.f54HrrU27542@candle.pha.pa.us> -Comments: In-reply-to Bruce Momjian - message dated "Mon, 04 Jun 2001 13:53:53 -0400" -Date: Mon, 04 Jun 2001 14:29:38 -0400 -Message-ID: <6675.991679378@sss.pgh.pa.us> -From: Tom Lane -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 854 - -Bruce Momjian writes: ->> This article describes the problem and work around. ->> http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm - -> I can't read that web site under Netscape. - -Comes up fine for me (maybe you need to turn off Javascript?) - -However, the advice on it seems to be written by someone who does not -know the difference between a variable and a function :-(. Read with -a large grain of salt. - -We already have a couple of #ifdef'd usages of WSAGetLastError() in -libpq, but it's quite unclear which other references to errno might -need to be changed. A blanket replacement of errno would certainly -break things. - - regards, tom lane - ----------------------------(end of broadcast)--------------------------- -TIP 5: Have you checked our extensive FAQ? - -http://www.postgresql.org/users-lounge/docs/faq.html - -From pgsql-interfaces-owner+M1668@postgresql.org Mon Jun 4 15:09:47 2001 -From: Bruce Momjian -Message-ID: <200106041832.f54IWHD00108@candle.pha.pa.us> -Subject: Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: <6675.991679378@sss.pgh.pa.us> from Tom Lane at Jun 4, 2001 02:29:38 - pm -To: Tom Lane -Date: Mon, 4 Jun 2001 14:32:17 -0400 (EDT) -cc: jeff@jeffjohnson.net, pgsql-interfaces@postgresql.org, - pgsql-docs@postgresql.org -X-Mailer: ELM [version 2.4ME+ PL90 (25)] -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 1323 - -> Bruce Momjian writes: -> >> This article describes the problem and work around. -> >> http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_26ia.htm -> -> > I can't read that web site under Netscape. -> -> Comes up fine for me (maybe you need to turn off Javascript?) - -Thanks, that fixed it. - -> However, the advice on it seems to be written by someone who does not -> know the difference between a variable and a function :-(. Read with -> a large grain of salt. -> -> We already have a couple of #ifdef'd usages of WSAGetLastError() in -> libpq, but it's quite unclear which other references to errno might -> need to be changed. A blanket replacement of errno would certainly -> break things. - -That's why I recommended brackets of #define/#undef around tests of -socket errno's. - --- - Bruce Momjian | http://candle.pha.pa.us - pgman@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 - ----------------------------(end of broadcast)--------------------------- -TIP 3: if posting/reading through Usenet, please send an appropriate -subscribe-nomail command to majordomo@postgresql.org so that your -message can get through to the mailing list cleanly - -From jeff@jeffjohnson.net Mon Jun 4 15:09:40 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 15:03:35 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Content-Length: 1605 - -Bruce Momjian wrote: -> Can you try this patch and let me know if it helps? It is a -different -> approach. This was the only place I saw errno checked for a -> non-predefined value. - -Setting errno = 0 doesn't help, the error handling code is entered -when recv returns -1, then even if errno == 0, it'll bomb out. - -> I hate to litter this through the whole source. I wonder if -> we have to -> bracket the errno checkes with #define/#undef. Can you try that -with -> the fix described on the web page. The above would convert to: -> -> #ifdef WIN32 -> #define errno WSAGetLastError -> #endif -> if (errno == EINPROGRESS || errno == 0) -> #ifdef WIN32 -> #undef errno -> #endif -> -> Maybe make these into their own macros somehow. - -Even when I was a C programmer I never did much more than simple -defines with the pre-compiler so I'll leave this to those that know -how :) - -As Tom Lane points out in another post, the "define errno -WSAGetLastError" seems to confuse a variable with a function. I was -surprised that such a thing could work. I'm happy to hear that it -doesn't. - -What about something like this: - -#ifdef WIN32 -#define s_errno WSAGetLastError() -#else -#define s_errno errno -#endif - -/* for socket functions, check s_errno */ -if (s_errno == EINPROGRESS || s_errno == 0) -... - -/* for non-socket functions, check errno as usual */ -if (errno == ENOENT) -... - - -Then replace only errno with s_errno when it is used with socket code. -I'm not sure if strerror would work with all the errors returned by -WSAGetLastError(). The Win32 SDK says to use FormatMessage(a ton of -stuff here). - - -Regards, -Jeff - - -From pgsql-interfaces-owner+M1669@postgresql.org Mon Jun 4 15:36:36 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 15:03:35 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 1761 - -Bruce Momjian wrote: -> Can you try this patch and let me know if it helps? It is a -different -> approach. This was the only place I saw errno checked for a -> non-predefined value. - -Setting errno = 0 doesn't help, the error handling code is entered -when recv returns -1, then even if errno == 0, it'll bomb out. - -> I hate to litter this through the whole source. I wonder if -> we have to -> bracket the errno checkes with #define/#undef. Can you try that -with -> the fix described on the web page. The above would convert to: -> -> #ifdef WIN32 -> #define errno WSAGetLastError -> #endif -> if (errno == EINPROGRESS || errno == 0) -> #ifdef WIN32 -> #undef errno -> #endif -> -> Maybe make these into their own macros somehow. - -Even when I was a C programmer I never did much more than simple -defines with the pre-compiler so I'll leave this to those that know -how :) - -As Tom Lane points out in another post, the "define errno -WSAGetLastError" seems to confuse a variable with a function. I was -surprised that such a thing could work. I'm happy to hear that it -doesn't. - -What about something like this: - -#ifdef WIN32 -#define s_errno WSAGetLastError() -#else -#define s_errno errno -#endif - -/* for socket functions, check s_errno */ -if (s_errno == EINPROGRESS || s_errno == 0) -... - -/* for non-socket functions, check errno as usual */ -if (errno == ENOENT) -... - - -Then replace only errno with s_errno when it is used with socket code. -I'm not sure if strerror would work with all the errors returned by -WSAGetLastError(). The Win32 SDK says to use FormatMessage(a ton of -stuff here). - - -Regards, -Jeff - - ----------------------------(end of broadcast)--------------------------- -TIP 6: Have you searched our list archives? - -http://www.postgresql.org/search.mpl - -From pgsql-interfaces-owner+M1670@postgresql.org Mon Jun 4 16:01:48 2001 -From: Bruce Momjian -Message-ID: <200106041921.f54JLns03333@candle.pha.pa.us> -Subject: Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: from Jeff Johnson - at Jun 4, 2001 03:03:35 pm -To: jeff@jeffjohnson.net -Date: Mon, 4 Jun 2001 15:21:49 -0400 (EDT) -cc: pgsql-interfaces@postgresql.org, pgsql-docs@postgresql.org -X-Mailer: ELM [version 2.4ME+ PL90 (25)] -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 12086 - -> As Tom Lane points out in another post, the "define errno -> WSAGetLastError" seems to confuse a variable with a function. I was -> surprised that such a thing could work. I'm happy to hear that it -> doesn't. -> -> What about something like this: -> -> #ifdef WIN32 -> #define s_errno WSAGetLastError() -> #else -> #define s_errno errno -> #endif -> -> /* for socket functions, check s_errno */ -> if (s_errno == EINPROGRESS || s_errno == 0) -> ... -> -> /* for non-socket functions, check errno as usual */ -> if (errno == ENOENT) -> ... - -I have done exactly that. I assume fcntl(), ioctl(), select() use errno -even if used on a socket, while getsockopt(), setsockopt(), socket(), -connect(), getsockname(), send(), recv() use WSAGetLastError. Is this -list correct? - -The patch is attached. Please let me know so I can finalize it and -apply it. - --- - Bruce Momjian | http://candle.pha.pa.us - pgman@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 - -Index: src/interfaces/libpq/fe-connect.c -=================================================================== -RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v -retrieving revision 1.164 -diff -c -r1.164 fe-connect.c -*** src/interfaces/libpq/fe-connect.c 2001/03/31 23:14:37 1.164 ---- src/interfaces/libpq/fe-connect.c 2001/06/04 19:18:14 -*************** -*** 735,741 **** - { - printfPQExpBuffer(&conn->errorMessage, - "connectNoDelay() -- setsockopt failed: errno=%d\n%s\n", -! errno, strerror(errno)); - #ifdef WIN32 - printf("Winsock error: %i\n", WSAGetLastError()); - #endif ---- 735,741 ---- - { - printfPQExpBuffer(&conn->errorMessage, - "connectNoDelay() -- setsockopt failed: errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - #ifdef WIN32 - printf("Winsock error: %i\n", WSAGetLastError()); - #endif -*************** -*** 890,896 **** - printfPQExpBuffer(&conn->errorMessage, - "connectDBStart() -- " - "socket() failed: errno=%d\n%s\n", -! errno, strerror(errno)); - goto connect_errReturn; - } - ---- 890,896 ---- - printfPQExpBuffer(&conn->errorMessage, - "connectDBStart() -- " - "socket() failed: errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - goto connect_errReturn; - } - -*************** -*** 934,944 **** - */ - if (connect(conn->sock, &conn->raddr.sa, conn->raddr_len) < 0) - { -! #ifndef WIN32 -! if (errno == EINPROGRESS || errno == 0) -! #else -! if (WSAGetLastError() == WSAEINPROGRESS) -! #endif - { - - /* ---- 934,940 ---- - */ - if (connect(conn->sock, &conn->raddr.sa, conn->raddr_len) < 0) - { -! if (sockerrno == EINPROGRESS || sockerrno == 0) - { - - /* -*************** -*** 950,956 **** - else - { - /* Something's gone wrong */ -! connectFailureMessage(conn, "connectDBStart()", errno); - goto connect_errReturn; - } - } ---- 946,952 ---- - else - { - /* Something's gone wrong */ -! connectFailureMessage(conn, "connectDBStart()", sockerrno); - goto connect_errReturn; - } - } -*************** -*** 970,983 **** - { - printfPQExpBuffer(&conn->errorMessage, - "connectDB() -- couldn't send SSL negotiation packet: errno=%d\n%s\n", -! errno, strerror(errno)); - goto connect_errReturn; - } - /* Now receive the postmasters response */ - if (recv(conn->sock, &SSLok, 1, 0) != 1) - { - printfPQExpBuffer(&conn->errorMessage, "PQconnectDB() -- couldn't read postmaster response: errno=%d\n%s\n", -! errno, strerror(errno)); - goto connect_errReturn; - } - if (SSLok == 'S') ---- 966,979 ---- - { - printfPQExpBuffer(&conn->errorMessage, - "connectDB() -- couldn't send SSL negotiation packet: errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - goto connect_errReturn; - } - /* Now receive the postmasters response */ - if (recv(conn->sock, &SSLok, 1, 0) != 1) - { - printfPQExpBuffer(&conn->errorMessage, "PQconnectDB() -- couldn't read postmaster response: errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - goto connect_errReturn; - } - if (SSLok == 'S') -*************** -*** 1233,1239 **** - printfPQExpBuffer(&conn->errorMessage, - "PQconnectPoll() -- getsockopt() failed: " - "errno=%d\n%s\n", -! errno, strerror(errno)); - goto error_return; - } - else if (optval != 0) ---- 1229,1235 ---- - printfPQExpBuffer(&conn->errorMessage, - "PQconnectPoll() -- getsockopt() failed: " - "errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - goto error_return; - } - else if (optval != 0) -*************** -*** 1255,1261 **** - printfPQExpBuffer(&conn->errorMessage, - "PQconnectPoll() -- getsockname() failed: " - "errno=%d\n%s\n", -! errno, strerror(errno)); - goto error_return; - } - ---- 1251,1257 ---- - printfPQExpBuffer(&conn->errorMessage, - "PQconnectPoll() -- getsockname() failed: " - "errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - goto error_return; - } - -*************** -*** 1296,1302 **** - "PQconnectPoll() -- " - "couldn't send startup packet: " - "errno=%d\n%s\n", -! errno, strerror(errno)); - goto error_return; - } - ---- 1292,1298 ---- - "PQconnectPoll() -- " - "couldn't send startup packet: " - "errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - goto error_return; - } - -*************** -*** 2110,2116 **** ---- 2106,2114 ---- - int - PQrequestCancel(PGconn *conn) - { -+ #ifndef WIN32 - int save_errno = errno; -+ #endif - int tmpsock = -1; - struct - { -*************** -*** 2127,2133 **** ---- 2125,2133 ---- - strcpy(conn->errorMessage.data, - "PQrequestCancel() -- connection is not open\n"); - conn->errorMessage.len = strlen(conn->errorMessage.data); -+ #ifndef WIN32 - errno = save_errno; -+ #endif - return FALSE; - } - -*************** -*** 2173,2183 **** - close(tmpsock); - #endif - - errno = save_errno; - return TRUE; - - cancel_errReturn: -! strcat(conn->errorMessage.data, strerror(errno)); - strcat(conn->errorMessage.data, "\n"); - conn->errorMessage.len = strlen(conn->errorMessage.data); - if (tmpsock >= 0) ---- 2173,2185 ---- - close(tmpsock); - #endif - -+ #ifndef WIN32 - errno = save_errno; -+ #endif - return TRUE; - - cancel_errReturn: -! strcat(conn->errorMessage.data, strerror(sockerrno)); - strcat(conn->errorMessage.data, "\n"); - conn->errorMessage.len = strlen(conn->errorMessage.data); - if (tmpsock >= 0) -*************** -*** 2188,2194 **** ---- 2190,2198 ---- - close(tmpsock); - #endif - } -+ #ifndef WIN32 - errno = save_errno; -+ #endif - return FALSE; - } - -Index: src/interfaces/libpq/fe-misc.c -=================================================================== -RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v -retrieving revision 1.49 -diff -c -r1.49 fe-misc.c -*** src/interfaces/libpq/fe-misc.c 2001/05/28 15:29:51 1.49 ---- src/interfaces/libpq/fe-misc.c 2001/06/04 19:18:20 -*************** -*** 447,471 **** - conn->inBufSize - conn->inEnd, 0); - if (nread < 0) - { -! if (errno == EINTR) - goto tryAgain; - /* Some systems return EAGAIN/EWOULDBLOCK for no data */ - #ifdef EAGAIN -! if (errno == EAGAIN) - return someread; - #endif - #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) -! if (errno == EWOULDBLOCK) - return someread; - #endif - /* We might get ECONNRESET here if using TCP and backend died */ - #ifdef ECONNRESET -! if (errno == ECONNRESET) - goto definitelyFailed; - #endif - printfPQExpBuffer(&conn->errorMessage, - "pqReadData() -- read() failed: errno=%d\n%s\n", -! errno, strerror(errno)); - return -1; - } - if (nread > 0) ---- 447,471 ---- - conn->inBufSize - conn->inEnd, 0); - if (nread < 0) - { -! if (sockerrno == EINTR) - goto tryAgain; - /* Some systems return EAGAIN/EWOULDBLOCK for no data */ - #ifdef EAGAIN -! if (sockerrno == EAGAIN) - return someread; - #endif - #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) -! if (sockerrno == EWOULDBLOCK) - return someread; - #endif - /* We might get ECONNRESET here if using TCP and backend died */ - #ifdef ECONNRESET -! if (sockerrno == ECONNRESET) - goto definitelyFailed; - #endif - printfPQExpBuffer(&conn->errorMessage, - "pqReadData() -- read() failed: errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - return -1; - } - if (nread > 0) -*************** -*** 533,557 **** - conn->inBufSize - conn->inEnd, 0); - if (nread < 0) - { -! if (errno == EINTR) - goto tryAgain2; - /* Some systems return EAGAIN/EWOULDBLOCK for no data */ - #ifdef EAGAIN -! if (errno == EAGAIN) - return 0; - #endif - #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) -! if (errno == EWOULDBLOCK) - return 0; - #endif - /* We might get ECONNRESET here if using TCP and backend died */ - #ifdef ECONNRESET -! if (errno == ECONNRESET) - goto definitelyFailed; - #endif - printfPQExpBuffer(&conn->errorMessage, - "pqReadData() -- read() failed: errno=%d\n%s\n", -! errno, strerror(errno)); - return -1; - } - if (nread > 0) ---- 533,557 ---- - conn->inBufSize - conn->inEnd, 0); - if (nread < 0) - { -! if (sockerrno == EINTR) - goto tryAgain2; - /* Some systems return EAGAIN/EWOULDBLOCK for no data */ - #ifdef EAGAIN -! if (sockerrno == EAGAIN) - return 0; - #endif - #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) -! if (sockerrno == EWOULDBLOCK) - return 0; - #endif - /* We might get ECONNRESET here if using TCP and backend died */ - #ifdef ECONNRESET -! if (sockerrno == ECONNRESET) - goto definitelyFailed; - #endif - printfPQExpBuffer(&conn->errorMessage, - "pqReadData() -- read() failed: errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - return -1; - } - if (nread > 0) -*************** -*** 633,639 **** - * EPIPE or ECONNRESET, assume we've lost the backend - * connection permanently. - */ -! switch (errno) - { - #ifdef EAGAIN - case EAGAIN: ---- 633,639 ---- - * EPIPE or ECONNRESET, assume we've lost the backend - * connection permanently. - */ -! switch (sockerrno) - { - #ifdef EAGAIN - case EAGAIN: -*************** -*** 668,674 **** - default: - printfPQExpBuffer(&conn->errorMessage, - "pqFlush() -- couldn't send data: errno=%d\n%s\n", -! errno, strerror(errno)); - /* We don't assume it's a fatal error... */ - return EOF; - } ---- 668,674 ---- - default: - printfPQExpBuffer(&conn->errorMessage, - "pqFlush() -- couldn't send data: errno=%d\n%s\n", -! sockerrno, strerror(sockerrno)); - /* We don't assume it's a fatal error... */ - return EOF; - } -Index: src/interfaces/libpq/libpq-int.h -=================================================================== -RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq/libpq-int.h,v -retrieving revision 1.33 -diff -c -r1.33 libpq-int.h -*** src/interfaces/libpq/libpq-int.h 2001/03/22 04:01:27 1.33 ---- src/interfaces/libpq/libpq-int.h 2001/06/04 19:18:23 -*************** -*** 34,39 **** ---- 34,45 ---- - #include - #endif - -+ #ifndef WIN32 -+ #define sockerrno errno -+ #else -+ #define sockerrno WSAGetLastError -+ #endif -+ - /* libpq supports this version of the frontend/backend protocol. - * - * NB: we used to use PG_PROTOCOL_LATEST from the backend pqcomm.h file, - - ----------------------------(end of broadcast)--------------------------- -TIP 2: you can get off all lists at once with the unregister command - (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) - -From jeff@jeffjohnson.net Mon Jun 4 15:54:55 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 15:48:50 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Content-Length: 2120 - -> I have done exactly that. I assume fcntl(), ioctl(), -> select() use errno -> even if used on a socket, while getsockopt(), setsockopt(), -socket(), -> connect(), getsockname(), send(), recv() use WSAGetLastError. Is -this -> list correct? - -I don't know enough about such things. - -> -> The patch is attached. Please let me know so I can finalize it and -> apply it. - -Couple of changes required to compile on Win32: - -Change: -#define sockerrno WSAGetLastError -To: -#define sockerrno WSAGetLastError() - - -This has to go back into fe-connect.c, EINPROGRESS isn't defined in -Win32 for some reason.. -#ifndef WIN32 - if (errno == EINPROGRESS || errno == 0) -#else - if (WSAGetLastError() == WSAEINPROGRESS) -#endif - - - -I tested it out but I'm getting this error when sending a large SQL -statement (>16k). - - - File "WebKit\Application.py", line 340, in dispatchRequest - self.handleGoodURL(transaction) - File "WebKit\Application.py", line 457, in handleGoodURL - self.respond(transaction) - File "WebKit\Application.py", line 569, in respond - transaction.respond() - File "H:\webware\Webware\WebKit\Transaction.py", line 93, in respond - self._servlet.respond(self) - File "H:\webware\Webware\WebKit\HTTPServlet.py", line 38, in respond - method(self, trans) - File "H:\webware\Webware\WebKit\Page.py", line 34, in respondToGet - self._respond(transaction) - File "H:\webware\Webware\WebKit\Page.py", line 67, in _respond - self.writeHTML() - File "H:\webware\Webware\WebKit\Page.py", line 129, in writeHTML - self.writeBody() - File "H:\webware\Webware\WebKit\Page.py", line 186, in writeBody - self.writeBodyParts() - File "/EA\www\SitePage.py", line 305, in writeBodyParts - self.writeContent() - File "\EA\www\MyTest.py", line 9, in writeContent - self.transferRecords() - File "\EA\www\MyTest.py", line 45, in transferRecords - cu.execute(sql) - File "c:\python20\pgdb.py", line 189, in execute - self.executemany(operation, (params,)) - File "c:\python20\pgdb.py", line 204, in executemany - rows = self.__source.execute(sql) -ValueError: pqReadData() -- read() failed: errno=10035 -Unknown error - - - - -From pgsql-interfaces-owner+M1671@postgresql.org Mon Jun 4 16:08:04 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 15:48:50 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 2381 - -> I have done exactly that. I assume fcntl(), ioctl(), -> select() use errno -> even if used on a socket, while getsockopt(), setsockopt(), -socket(), -> connect(), getsockname(), send(), recv() use WSAGetLastError. Is -this -> list correct? - -I don't know enough about such things. - -> -> The patch is attached. Please let me know so I can finalize it and -> apply it. - -Couple of changes required to compile on Win32: - -Change: -#define sockerrno WSAGetLastError -To: -#define sockerrno WSAGetLastError() - - -This has to go back into fe-connect.c, EINPROGRESS isn't defined in -Win32 for some reason.. -#ifndef WIN32 - if (errno == EINPROGRESS || errno == 0) -#else - if (WSAGetLastError() == WSAEINPROGRESS) -#endif - - - -I tested it out but I'm getting this error when sending a large SQL -statement (>16k). - - - File "WebKit\Application.py", line 340, in dispatchRequest - self.handleGoodURL(transaction) - File "WebKit\Application.py", line 457, in handleGoodURL - self.respond(transaction) - File "WebKit\Application.py", line 569, in respond - transaction.respond() - File "H:\webware\Webware\WebKit\Transaction.py", line 93, in respond - self._servlet.respond(self) - File "H:\webware\Webware\WebKit\HTTPServlet.py", line 38, in respond - method(self, trans) - File "H:\webware\Webware\WebKit\Page.py", line 34, in respondToGet - self._respond(transaction) - File "H:\webware\Webware\WebKit\Page.py", line 67, in _respond - self.writeHTML() - File "H:\webware\Webware\WebKit\Page.py", line 129, in writeHTML - self.writeBody() - File "H:\webware\Webware\WebKit\Page.py", line 186, in writeBody - self.writeBodyParts() - File "/EA\www\SitePage.py", line 305, in writeBodyParts - self.writeContent() - File "\EA\www\MyTest.py", line 9, in writeContent - self.transferRecords() - File "\EA\www\MyTest.py", line 45, in transferRecords - cu.execute(sql) - File "c:\python20\pgdb.py", line 189, in execute - self.executemany(operation, (params,)) - File "c:\python20\pgdb.py", line 204, in executemany - rows = self.__source.execute(sql) -ValueError: pqReadData() -- read() failed: errno=10035 -Unknown error - - - - ----------------------------(end of broadcast)--------------------------- -TIP 3: if posting/reading through Usenet, please send an appropriate -subscribe-nomail command to majordomo@postgresql.org so that your -message can get through to the mailing list cleanly - -From pgsql-interfaces-owner+M1673@postgresql.org Mon Jun 4 17:09:06 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 16:25:05 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 2697 - -I found this in WinSock.h ... it might shed some light on the problem. - - -#define WSABASEERR 10000 -[snip] - -/* - * Windows Sockets definitions of regular Berkeley error constants - */ -#define WSAEWOULDBLOCK (WSABASEERR+35) -#define WSAEINPROGRESS (WSABASEERR+36) - - - -> -----Original Message----- -> From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] -> Sent: Monday, June 04, 2001 4:02 PM -> To: jeff@jeffjohnson.net -> Cc: pgsql-interfaces@postgresql.org; pgsql-docs@postgresql.org -> Subject: Re: [INTERFACES] libpq sockets on win32 -> -> -> > > I have done exactly that. I assume fcntl(), ioctl(), -> > > select() use errno -> > > even if used on a socket, while getsockopt(), setsockopt(), -> > socket(), -> > > connect(), getsockname(), send(), recv() use WSAGetLastError. -Is -> > this -> > > list correct? -> > -> > I don't know enough about such things. -> -> The web page wasn't clear about that. -> -> > > -> > > The patch is attached. Please let me know so I can -> finalize it and -> > > apply it. -> > -> > Couple of changes required to compile on Win32: -> > -> > Change: -> > #define sockerrno WSAGetLastError -> > To: -> > #define sockerrno WSAGetLastError() -> > -> -> OK. -> -> > -> > This has to go back into fe-connect.c, EINPROGRESS isn't defined -in -> > Win32 for some reason.. -> > #ifndef WIN32 -> > if (errno == EINPROGRESS || errno == 0) -> > #else -> > if (WSAGetLastError() == WSAEINPROGRESS) -> > #endif -> > -> -> OK. Not sure why it wasn't defined, but, oh well. -> -> > -> > -> > I tested it out but I'm getting this error when sending a large -SQL -> > statement (>16k). -> > cu.execute(sql) -> > File "c:\python20\pgdb.py", line 189, in execute -> > self.executemany(operation, (params,)) -> > File "c:\python20\pgdb.py", line 204, in executemany -> > rows = self.__source.execute(sql) -> > ValueError: pqReadData() -- read() failed: errno=10035 -> > Unknown error -> -> That errno is very high, 10035. If I take a look at my sys/errno.h -on -> BSD/OS, I see: -> -> #define EAGAIN 35 /* Resource temporarily -> unavailable */ -> -> so my guess is that WSAGetLastError() returns errno plus 10,000. -What -> value does your include file set for EAGAIN, 10035 or 35. If -> it is 35, -> the following patch may work. It has all your suggested fixes. -> -> -- -> Bruce Momjian | http://candle.pha.pa.us -> pgman@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 -> - - ----------------------------(end of broadcast)--------------------------- -TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org - -From jeff@jeffjohnson.net Mon Jun 4 16:31:10 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' , -cc: , -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 16:25:05 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Content-Length: 2550 - -I found this in WinSock.h ... it might shed some light on the problem. - - -#define WSABASEERR 10000 -[snip] - -/* - * Windows Sockets definitions of regular Berkeley error constants - */ -#define WSAEWOULDBLOCK (WSABASEERR+35) -#define WSAEINPROGRESS (WSABASEERR+36) - - - -> -----Original Message----- -> From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] -> Sent: Monday, June 04, 2001 4:02 PM -> To: jeff@jeffjohnson.net -> Cc: pgsql-interfaces@postgresql.org; pgsql-docs@postgresql.org -> Subject: Re: [INTERFACES] libpq sockets on win32 -> -> -> > > I have done exactly that. I assume fcntl(), ioctl(), -> > > select() use errno -> > > even if used on a socket, while getsockopt(), setsockopt(), -> > socket(), -> > > connect(), getsockname(), send(), recv() use WSAGetLastError. -Is -> > this -> > > list correct? -> > -> > I don't know enough about such things. -> -> The web page wasn't clear about that. -> -> > > -> > > The patch is attached. Please let me know so I can -> finalize it and -> > > apply it. -> > -> > Couple of changes required to compile on Win32: -> > -> > Change: -> > #define sockerrno WSAGetLastError -> > To: -> > #define sockerrno WSAGetLastError() -> > -> -> OK. -> -> > -> > This has to go back into fe-connect.c, EINPROGRESS isn't defined -in -> > Win32 for some reason.. -> > #ifndef WIN32 -> > if (errno == EINPROGRESS || errno == 0) -> > #else -> > if (WSAGetLastError() == WSAEINPROGRESS) -> > #endif -> > -> -> OK. Not sure why it wasn't defined, but, oh well. -> -> > -> > -> > I tested it out but I'm getting this error when sending a large -SQL -> > statement (>16k). -> > cu.execute(sql) -> > File "c:\python20\pgdb.py", line 189, in execute -> > self.executemany(operation, (params,)) -> > File "c:\python20\pgdb.py", line 204, in executemany -> > rows = self.__source.execute(sql) -> > ValueError: pqReadData() -- read() failed: errno=10035 -> > Unknown error -> -> That errno is very high, 10035. If I take a look at my sys/errno.h -on -> BSD/OS, I see: -> -> #define EAGAIN 35 /* Resource temporarily -> unavailable */ -> -> so my guess is that WSAGetLastError() returns errno plus 10,000. -What -> value does your include file set for EAGAIN, 10035 or 35. If -> it is 35, -> the following patch may work. It has all your suggested fixes. -> -> -- -> Bruce Momjian | http://candle.pha.pa.us -> pgman@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 pgsql-interfaces-owner+M1674@postgresql.org Mon Jun 4 17:13:00 2001 -From: Bruce Momjian -Message-ID: <200106042035.f54KZ8409367@candle.pha.pa.us> -Subject: Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: from Jeff Johnson - at Jun 4, 2001 04:25:05 pm -To: jeff@jeffjohnson.net -Date: Mon, 4 Jun 2001 16:35:08 -0400 (EDT) -cc: pgsql-interfaces@postgresql.org, pgsql-docs@postgresql.org -X-Mailer: ELM [version 2.4ME+ PL90 (25)] -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 933 - -> I found this in WinSock.h ... it might shed some light on the problem. -> -> -> #define WSABASEERR 10000 -> [snip] -> -> /* -> * Windows Sockets definitions of regular Berkeley error constants -> */ -> #define WSAEWOULDBLOCK (WSABASEERR+35) -> #define WSAEINPROGRESS (WSABASEERR+36) -> - -I modified the patch to use WSABASEERR rather than 10000. - -Do your includes define EAGAIN and stuff like that? Whare are those -values? If they are the same as WSAEAGAIN, then my patch should work. - --- - Bruce Momjian | http://candle.pha.pa.us - pgman@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 - ----------------------------(end of broadcast)--------------------------- -TIP 6: Have you searched our list archives? - -http://www.postgresql.org/search.mpl - -From jeff@jeffjohnson.net Mon Jun 4 17:17:27 2001 -Reply-To: -From: Jeff Johnson -To: 'Bruce Momjian' -Subject: RE: [INTERFACES] libpq sockets on win32 -Date: Mon, 4 Jun 2001 17:11:23 -0400 -Message-ID: -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0) -In-Reply-To: -X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 -Importance: Normal -Content-Length: 863 - -> > I found this in WinSock.h ... it might shed some light on -> the problem. -> > -> > -> > #define WSABASEERR 10000 -> > [snip] -> > -> > /* -> > * Windows Sockets definitions of regular Berkeley error constants -> > */ -> > #define WSAEWOULDBLOCK (WSABASEERR+35) -> > #define WSAEINPROGRESS (WSABASEERR+36) -> > -> -> I modified the patch to use WSABASEERR rather than 10000. -> -> Do your includes define EAGAIN and stuff like that? Whare are those -> values? If they are the same as WSAEAGAIN, then my patch should -work. - ->From what I've seen, it looks like EAGAIN and EWOULDBLOCK represent -the same thing but on different OSs. On my win32 machine, there is no -definition for WSAEAGAIN, I think it uses WSAEWOULDBLOCK instead. -EAGAIN is defined as 11 so the sockerror - 1000 solution isn't going -to work here but it was a good try :) - - - - - -From pgsql-docs-owner+M803@postgresql.org Mon Jun 4 17:29:10 2001 -From: Bruce Momjian -Message-ID: <200106042035.f54KZ8409367@candle.pha.pa.us> -Subject: [DOCS] Re: [INTERFACES] libpq sockets on win32 -In-Reply-To: from Jeff Johnson - at Jun 4, 2001 04:25:05 pm -To: jeff@jeffjohnson.net -Date: Mon, 4 Jun 2001 16:35:08 -0400 (EDT) -cc: pgsql-interfaces@postgresql.org, pgsql-docs@postgresql.org -X-Mailer: ELM [version 2.4ME+ PL90 (25)] -Precedence: bulk -Sender: pgsql-docs-owner@postgresql.org -Content-Length: 924 - -> I found this in WinSock.h ... it might shed some light on the problem. -> -> -> #define WSABASEERR 10000 -> [snip] -> -> /* -> * Windows Sockets definitions of regular Berkeley error constants -> */ -> #define WSAEWOULDBLOCK (WSABASEERR+35) -> #define WSAEINPROGRESS (WSABASEERR+36) -> - -I modified the patch to use WSABASEERR rather than 10000. - -Do your includes define EAGAIN and stuff like that? Whare are those -values? If they are the same as WSAEAGAIN, then my patch should work. - --- - Bruce Momjian | http://candle.pha.pa.us - pgman@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 - ----------------------------(end of broadcast)--------------------------- -TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org - -From mha@sollentuna.net Tue Jun 5 10:47:26 2001 -X-MimeOLE: Produced By Microsoft Exchange V6.0.4418.65 -Content-Class: urn:content-classes:message -Subject: RE: [DOCS] Re: [INTERFACES] libpq sockets on win32 -Date: Tue, 5 Jun 2001 16:47:02 +0200 -Message-ID: <81124B76C0CF364EBAC6CD213ABEDEF701AA0D@ARGON.edu.sollentuna.se> -X-MS-Has-Attach: -X-MS-TNEF-Correlator: -Thread-Topic: [DOCS] Re: [INTERFACES] libpq sockets on win32 -Thread-Index: AcDtMv+ZlEOBPSGzQV6B/+jItK6tQAAmmDSg -From: Magnus Hagander -To: Bruce Momjian , -cc: -X-MIME-Autoconverted: from quoted-printable to 8bit by candle.pha.pa.us id f55ElOc09621 -Content-Length: 1074 - -> > > I have done exactly that. I assume fcntl(), ioctl(), -> > > select() use errno -> > > even if used on a socket, while getsockopt(), setsockopt(), -> > socket(), -> > > connect(), getsockname(), send(), recv() use WSAGetLastError. Is -> > this -> > > list correct? -> > -> > I don't know enough about such things. -> -> The web page wasn't clear about that. -No, that list is not correct. - -1) select() can *only* be used on a socket in Windows, and it puts its -error info in WSAGetLastError(). - -2) ioctl() should *not* be used on sockets. Instead, ioctlsocket() -shuold be used. ioctlsocket() puts its error info in WSAGetLastError(). -(http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_98mq.htm). (loads -fine in my Netscape, doesn't look all that good, but definitly readable) - -3) fcntl() should *not* be used on sockets. ioctlsocket() again. - -Generaelly, all functions dealing with sockets use WSAGetLastError(). -And sockets and file descriptors are *not* necessarily interchangable on -Win32. - - -Note - this is Win32, *not* cygwin. Cygwin maps to errno, AFAIK. - -//Magnus - -From pgsql-interfaces-owner+M1682@postgresql.org Tue Jun 5 12:11:11 2001 -X-MimeOLE: Produced By Microsoft Exchange V6.0.4418.65 -Content-Class: urn:content-classes:message -Subject: RE: [DOCS] Re: [INTERFACES] libpq sockets on win32 -Date: Tue, 5 Jun 2001 16:47:02 +0200 -Message-ID: <81124B76C0CF364EBAC6CD213ABEDEF701AA0D@ARGON.edu.sollentuna.se> -X-MS-Has-Attach: -X-MS-TNEF-Correlator: -Thread-Topic: [DOCS] Re: [INTERFACES] libpq sockets on win32 -Thread-Index: AcDtMv+ZlEOBPSGzQV6B/+jItK6tQAAmmDSg -From: Magnus Hagander -To: Bruce Momjian , -cc: -X-MIME-Autoconverted: from quoted-printable to 8bit by postgresql.org id f55ElTE38246 -Precedence: bulk -Sender: pgsql-interfaces-owner@postgresql.org -Content-Length: 1186 - -> > > I have done exactly that. I assume fcntl(), ioctl(), -> > > select() use errno -> > > even if used on a socket, while getsockopt(), setsockopt(), -> > socket(), -> > > connect(), getsockname(), send(), recv() use WSAGetLastError. Is -> > this -> > > list correct? -> > -> > I don't know enough about such things. -> -> The web page wasn't clear about that. -No, that list is not correct. - -1) select() can *only* be used on a socket in Windows, and it puts its -error info in WSAGetLastError(). - -2) ioctl() should *not* be used on sockets. Instead, ioctlsocket() -shuold be used. ioctlsocket() puts its error info in WSAGetLastError(). -(http://msdn.microsoft.com/library/psdk/winsock/ovrvw3_98mq.htm). (loads -fine in my Netscape, doesn't look all that good, but definitly readable) - -3) fcntl() should *not* be used on sockets. ioctlsocket() again. - -Generaelly, all functions dealing with sockets use WSAGetLastError(). -And sockets and file descriptors are *not* necessarily interchangable on -Win32. - - -Note - this is Win32, *not* cygwin. Cygwin maps to errno, AFAIK. - -//Magnus - ----------------------------(end of broadcast)--------------------------- -TIP 4: Don't 'kill -9' the postmaster -