An update to a primary table is received. The primary table is read to
determine the set of rows to be updated. The primary table is updated and
XML objects stored in XML columns are overwritten according to the
update. A pre-update node table comprising the nodes corresponding to the
updated rows is created from an XML index table corresponding to the
primary table. A post-update node table is created by shredding the
updated XML objects. The post-update table and the pre-update table are
merged according to their node identifiers. The resulting merged table
can be inspected to determine which nodes have been, added, deleted, or
updated. Based on this inspection, the necessary additions and deletions
can be efficiently made to the XML index table.