]> granicus.if.org Git - postgresql/commitdiff
Remove libpq TODO.detail. We don't need it any more because the item is done.
authorBruce Momjian <bruce@momjian.us>
Sat, 21 Jul 2001 04:41:29 +0000 (04:41 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 21 Jul 2001 04:41:29 +0000 (04:41 +0000)
doc/TODO.detail/libpq [deleted file]

diff --git a/doc/TODO.detail/libpq b/doc/TODO.detail/libpq
deleted file mode 100644 (file)
index f719b0d..0000000
+++ /dev/null
@@ -1,1753 +0,0 @@
-From pgsql-interfaces-owner+M1688@postgresql.org Tue Jun  5 17:37:13 2001
-Reply-To: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: <pgsql-interfaces@postgresql.org>
-Subject: [INTERFACES] libpq socket problem on Win32
-Date: Thu, 31 May 2001 15:56:18 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A987109458@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: [DOCS] libpq sockets on win32
-Date: Mon, 4 Jun 2001 12:42:12 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A98710945B@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193157@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 12:42:12 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A98710945B@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193157@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 14:01:52 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A98710945E@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193173@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 14:01:52 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A98710945E@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193173@SERVER>
-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 <pgman@candle.pha.pa.us>
-Message-ID: <200106041822.f54IMjY29512@candle.pha.pa.us>
-Subject: Re: [INTERFACES] libpq sockets on win32
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A98710945E@SERVER> 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 <peter_e@gmx.net>
-To: Jeff Johnson <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>
-Subject: Re: [INTERFACES] libpq sockets on win32
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A98710945B@SERVER>
-Message-ID: <Pine.LNX.4.30.0106042021520.768-100000@peter.localdomain>
-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 <pgman@candle.pha.pa.us>
-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 <pgman@candle.pha.pa.us>
-       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 <tgl@sss.pgh.pa.us>
-Content-Length:   683
-
-Bruce Momjian <pgman@candle.pha.pa.us> 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 <pgman@candle.pha.pa.us>
-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 <pgman@candle.pha.pa.us>
-       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 <tgl@sss.pgh.pa.us>
-Precedence: bulk
-Sender: pgsql-interfaces-owner@postgresql.org
-Content-Length:   854
-
-Bruce Momjian <pgman@candle.pha.pa.us> 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 <pgman@candle.pha.pa.us>
-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 <tgl@sss.pgh.pa.us>
-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 <pgman@candle.pha.pa.us> 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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 15:03:35 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A98710945F@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193178@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 15:03:35 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A98710945F@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193178@SERVER>
-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 <pgman@candle.pha.pa.us>
-Message-ID: <200106041921.f54JLns03333@candle.pha.pa.us>
-Subject: Re: [INTERFACES] libpq sockets on win32
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A98710945F@SERVER> 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 <openssl/err.h>
-  #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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 15:48:50 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A987109460@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193185@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 15:48:50 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A987109460@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987193185@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 16:25:05 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A987109461@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A98719318C@SERVER>
-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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>,  <pgsql-docs@postgresql.org>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 16:25:05 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A987109461@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A98719318C@SERVER>
-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 <pgman@candle.pha.pa.us>
-Message-ID: <200106042035.f54KZ8409367@candle.pha.pa.us>
-Subject: Re: [INTERFACES] libpq sockets on win32
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987109461@SERVER> 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: <jeff@jeffjohnson.net>
-From: Jeff Johnson <jeff@jeffjohnson.net>
-To: 'Bruce Momjian' <pgman@candle.pha.pa.us>
-Subject: RE: [INTERFACES] libpq sockets on win32
-Date: Mon, 4 Jun 2001 17:11:23 -0400
-Message-ID: <B9C9130B5D27D4119D5D00A0C9D3A987109462@SERVER>
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2910.0)
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A98719318F@SERVER>
-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 <pgman@candle.pha.pa.us>
-Message-ID: <200106042035.f54KZ8409367@candle.pha.pa.us>
-Subject: [DOCS] Re: [INTERFACES] libpq sockets on win32
-In-Reply-To: <B9C9130B5D27D4119D5D00A0C9D3A987109461@SERVER> 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 <mha@sollentuna.net>
-To: Bruce Momjian <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>
-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 <mha@sollentuna.net>
-To: Bruce Momjian <pgman@candle.pha.pa.us>,  <jeff@jeffjohnson.net>
-cc: <pgsql-interfaces@postgresql.org>
-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
-