On Wed, Sep 22, 2010 at 18:27, Greg Stein <gst...@gmail.com> wrote: >... > The children don't have to be touched. They just hang out in their > deleted state with the same op_depth. We *never* want to modify a rows > op_depth. That is part of its primary key(!).
Let me clarify this. There is one situation where we (effectively) modify the op_depth. Consider: 1. checkout. add rows <A, 0>, <A/B, 0>, <A/B/C, 0>, <A/B/gamma, 0>: presence=normal. 2. delete gamma. add row <A/B/gamma, 3>: presence=deleted. 3. delete B. add rows <A/B, 2>, <A/B/C, 2>: presence=deleted. modify <A/B/gamma, 3>: op_depth=2 We subsume the child deletion into the parent deletion. We could just as well revert/forget the child deletion and add rows for all children at op_depth, or we can just rewrite the op_depth. Net is the same. Outside of this deletion, I don't think we want to be modifying op_depth at all. Cheers, -g