> > > > 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). We can do additional logging (with log flush) of these
steps
if required, postpone on-recovery redo of operations till last relink log
record/
end of log/transaction abort etc etc etc.
Vadim