On Tue, Jan 16, 2007 at 10:20:04AM +0900, Takayuki Tsunakawa wrote:
> From: "Magnus Hagander" <magnus@hagander.net>
> > But yeah, that's probably a good idea. A quick look at the code says
> we
> > should at least ask people who have this problem to give it a run
> with
> > logging at DEBUG5 which should then log exactly what the errorcode
> was.
> > Or are you seeing more places that need such logging first?
>
> I'm sorry we can't get get the Win32 error code to be displayed. I
> got the following messages:
>
> 2007-01-16 09:24:48 DEBUG: checkpoint starting
> 2007-01-16 09:24:48 ERROR: could not open relation 1663/10819/18296:
> Permission denied
> 2007-01-16 09:24:48 ERROR: checkpoint request failed
> 2007-01-16 09:24:48 HINT: Consult recent messages in the server log
> for details.
> 2007-01-16 09:24:48 STATEMENT: checkpoint;
>
>
> The reason is that src/port/open.c does not use _dosmaperr(). It
> converts the Win32 error code to errno directly. EACCES is converted
> from ERROR_ACCESS_DENIED only. Mmm, we may have to compromise as
> Tom-san says.
Good point. In this case, we *know* it's access denied then, and not
some other error code.
And actually, when I look at the API docs, our case now seems to be
documented. Or am I misreading our situation. I have:
"If you call CreateFile on a file that is pending deletion as a result
of a previous call to DeleteFile, the function fails. The operating
system delays file deletion until all handles to the file are closed.
GetLastError returns ERROR_ACCESS_DENIED."
//Magnus