<div dir="auto">Thanks. Lgtm then. Please use my questions as input for improving the comments.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, May 26, 2019, 17:36 Vladimir Davydov <<a href="mailto:vdavydov.dev@gmail.com">vdavydov.dev@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sat, May 25, 2019 at 11:28:51PM +0300, Konstantin Osipov wrote:<br>
> * Vladimir Davydov <<a href="mailto:vdavydov.dev@gmail.com" target="_blank" rel="noreferrer">vdavydov.dev@gmail.com</a>> [19/05/25 22:55]:<br>
> > On Sat, May 25, 2019 at 09:11:57AM +0300, Konstantin Osipov wrote:<br>
> > > Could you also please explain why you decided to introduce a new<br>
> > > flag, and not use is_overwritten?<br>
> > <br>
> > is_overwritten is cleared on rollback while is_nop stays unchanged.<br>
> <br>
> Then shouldn't better name be is_overwriting, as every<br>
> is_overwritten txv is overwritten by some is_overwriting txv<br>
> (is_nop)? Is there any symmetry between the two or there are cases<br>
> when they are unrelated?<br>
<br>
No.<br>
<br>
is_nop is set if a statement has no effect and can be skipped on commit,<br>
e.g. DELETE following REPLACE in case of a secondary index.<br>
<br>
Not every statement that overwrites some other statement has no effect,<br>
e.g. REPLACE following other REPLACE can't be skipped.<br>
</blockquote></div>