diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index 0ae0d0daf6b..0211b3f74e7 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.131 2007/11/15 21:14:38 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.132 2007/11/15 21:49:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -316,7 +316,23 @@ mdunlink(RelFileNode rnode, bool isRedo) if (isRedo) ret = unlink(path); else - ret = truncate(path, 0); + { + /* truncate(2) would be easier here, but Windows hasn't got it */ + int fd; + + fd = BasicOpenFile(path, O_RDWR | PG_BINARY, 0); + if (fd >= 0) + { + int save_errno; + + ret = ftruncate(fd, 0); + save_errno = errno; + close(fd); + errno = save_errno; + } + else + ret = -1; + } if (ret < 0) { if (!isRedo || errno != ENOENT)