On 6 June 2018 at 07:14, Richard Hipp <d...@sqlite.org> wrote:

> On 6/5/18, Stéphane Aulery <lk...@free.fr> wrote:
> > Hello,
> >
> > The changelog of the last release [1] say at the point 13 :
> >
> > UPDATE avoids writing database pages that do not actually change. For
> > example, "UPDATE t1 SET x=25 WHERE y=?" becomes a no-op if the value in
> > column x is already 25. Similarly, when doing UPDATE on records that
> > span multiple pages, only write the subset of pages that contain the
> > changed value(s).
> >
> > ---------------------------------------------------------------------
> >
> > I can't find in [2] and [3] if this change implies that a trigger will
> > be fired or not on a row where x is already 25. A trigger could act at a
> > physical or logical level and this change is a physical enhancement.
> >
> > Can someone inform me please?
>
> The enhancement is a low-level b-tree thing where it does a memcmp()
> and only writes the page back to disk if there are actual byte
> changes.
>
> Triggers continue to fire as they always have.
>
> There is no change in behavior.  This is a performance optimization only.


Does this affect the locking behaviour? ie. is upgrading to a RESERVED lock
a side effect of the b-tree writing out pages?

Hmmm I presume not, since UPDATE currently upgrades to a RESERVED lock
regardless of whether any rows are modified.

-Rowan
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to