> -----Original Message-----
> From: Mikheev, Vadim [mailto:vmikheev@SECTORBASE.COM]
>
> > > > > Or - create tmp file and load with new content;
> > > > > log "intent to relink table file";
> > > > > relink table file; log "file is relinked".
> > > >
> > > > It seems to me that whole content of the table should be
> > > > logged before relinking or shrinking.
> > >
> > > Why not just fsync tmp files?
> > >
> >
> > Probably I've misunderstood *relink*.
> > If *relink* different from *rename* ?
>
> I ment something like this - link(table file, tmp2 file);
> fsync(tmp2 file);
> unlink(table file); link(tmp file, table file); fsync(table file);
> unlink(tmp file).
I see,old file would be rolled back from tmp2 file on abort.
This would work on most platforms.
But cygwin port has a flaw that files could not be unlinked
if they are open. So *relink* may fail in some cases(including
rollback cases).
Regards.
Hiroshi Inoue
Inoue@tpf.co.jp