Tom Lane wrote:

Andrew Dunstan <[EMAIL PROTECTED]> writes:


Before I tried anything like that I tried one more thing. I disabled the background writer and the problem stopped. So now we know the "culprit".



Okay. So what that says is that win32_open's claim to allow unlinking
an open file is a lie; or at least, it does not work the way the
equivalent facility on Unix does. It sounds to me like Windows is
simply marking the open file as to be deleted on last close --- the
directory entry remains present and so the directory can't be dropped
either.



Looks that way to me too.

One relatively low-impact workaround would be to force a checkpoint
(on Windows only) during DROP DATABASE, just before we actually fire
the rmtree() operation.  The bgwriter is already coded to close all its
open files after a checkpoint ...





Works for me. If someone gives me a patch I'll be happy to test it.

I did wonder if there should be a call that instead of forcing a flush could tell bgwriter just to forget about the file(s) because we're discarding them. But that was just idle speculation - I haven't looked at bgwriter at all.

cheers

andrew

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
   (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to