From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Michael Paquier <michael(at)paquier(dot)xyz> |
Cc: | Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Allowing printf("%m") only where it actually works |
Date: | 2018-09-25 13:30:26 |
Message-ID: | 4418.1537882226@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Michael Paquier <michael(at)paquier(dot)xyz> writes:
> On Mon, Sep 24, 2018 at 01:18:47PM -0400, Tom Lane wrote:
>> Well, we have to change the code somehow to make it usable in frontend
>> as well as backend. And we can *not* have it do exit(1) in libpq.
>> So the solution I chose was to make it act the same as if FormatMessage
>> were to fail. I don't find this behavior unreasonable: what is really
>> important is the original error code, not whether we were able to
>> pretty-print it. I think the ereport(FATAL) coding is a pretty darn
>> bad idea even in the backend.
> Ok. I won't fight hard on that. Why changing the error message from
> "could not load netmsg.dll" to "unrecognized winsock error" then? The
> original error string is much more verbose to grab the context.
As the code stands, what you'll get told about is the error code
returned by the failed LoadLibrary call; the original winsock error
code is reported nowhere. I think that's backwards.
We could possibly write something like
sprintf(wserrbuf, "winsock error %d (could not load netmsg.dll to translate: error code %lu)", err, GetLastError())));
but I'm unconvinced that that's useful.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2018-09-25 14:07:19 | Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options |
Previous Message | Tom Lane | 2018-09-25 13:23:54 | Re: Proposal for Signal Detection Refactoring |