Thread: libpq win32-native errno fix

libpq win32-native errno fix

From
"Dmitry Yurtaev"
Date:
i've spotted a following problem using DBD::Pg under win32. winsock
functions do not set errno, so some normal conditions are treated as
fatal errors. e.g. fetching large tuples fails, as at some point recv()
returns EWOULDBLOCK. here's a patch, which replaces errno with
WSAGetLastError(). i've tried to to affect non-win32 code.

/Dmitry



Attachment

Re: libpq win32-native errno fix

From
Bruce Momjian
Date:
This is great.  We knew we had errno problems on Win32 but no one could
generate a patch.

Your patch has been added to the PostgreSQL unapplied patches list at:

    http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.


> i've spotted a following problem using DBD::Pg under win32. winsock
> functions do not set errno, so some normal conditions are treated as
> fatal errors. e.g. fetching large tuples fails, as at some point recv()
> returns EWOULDBLOCK. here's a patch, which replaces errno with
> WSAGetLastError(). i've tried to to affect non-win32 code.
>
> /Dmitry
>
>

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

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

Re: libpq win32-native errno fix

From
Bruce Momjian
Date:
Thanks.  Patch applied.  I am waiting for another patch from Darko
Prenosil to apply in addition to yours.  This should fix our Win32
problems.


> i've spotted a following problem using DBD::Pg under win32. winsock
> functions do not set errno, so some normal conditions are treated as
> fatal errors. e.g. fetching large tuples fails, as at some point recv()
> returns EWOULDBLOCK. here's a patch, which replaces errno with
> WSAGetLastError(). i've tried to to affect non-win32 code.
>
> /Dmitry
>
>

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

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