// rotateLeft performs a left rotation around the node. func (tc *treeContext) rotateLeft(node *roachpb.RangeTreeNode) (*roachpb.RangeTreeNode, *roachpb.Error) { right, pErr := tc.getNode(node.RightKey) if pErr != nil { return nil, pErr } right, pErr = tc.replaceNode(node, right) if pErr != nil { return nil, pErr } node.RightKey = right.LeftKey if right.LeftKey != nil { rightLeft, pErr := tc.getNode(right.LeftKey) if pErr != nil { return nil, pErr } rightLeft.ParentKey = node.Key tc.setNode(rightLeft) } right.LeftKey = node.Key node.ParentKey = right.Key tc.setNode(right) tc.setNode(node) return right, nil }