2.6.1.2.4 Duplicating the Contents of One Node to Another

Copying all the contents of an existing node to a new node, where the new node can be a top-level node or a subnode (for example, when a Message object is added to another Message object as an Attachment object). Both nodes end up referencing the same instance of the data block, and subnodes (that is, single-instancing).

Requirement level

Actions

Required

The BBT Reference Count for bidData and bidSub of the existing node MUST be incremented.

The NBT or SLBLOCK MUST be updated, depending on whether the target is a node or subnode,  to reflect the new node, using the same bidData and bidSub values as the existing node.

The corresponding rgnid[nidType] field in the HEADER.ROOT structure MUST be incremented.

Recommended

None.

Optional

None.

Possible side effects:

Scenario

Impact

NBT page too full.

The NBT might need more levels or need to be balanced.

The target is a subnode and the SLBLOCK is full.

The subnode BTree needs to grow in depth to accommodate new subnode entry.

If bidData points to a data tree, there is no need to recursively increment the reference count of its child data blocks.

If the node contains a subnode, there is no need to recursively increment the reference count of its child data blocks.

In many cases the existing node and new node have a different nidParent.