updateRow(session, rowDef, oldRow, rowDef, newRow, selector);
}
@Override
public void updateRow(Session session, RowDef oldRowDef, RowData oldRow, RowDef newRowDef, RowData newRow, ColumnSelector selector) {
Table table = oldRowDef.table();
trackTableWrite(session, table);
// Note: selector is only used by the MySQL adapter, which does not have any
// constraints on this side; newRow will be complete when there are any.
// Similarly, all cases where newRowDef is not the same as oldRowDef should
// be disallowed when there are constraints present.
assert (((selector == null) && (oldRowDef == newRowDef)) ||
table.getForeignKeys().isEmpty())
: table;
constraintHandler.handleUpdatePre(session, table, oldRow, newRow);
onlineHelper.handleUpdatePre(session, table, oldRow, newRow);
if(canSkipGIMaintenance(table)) {
updateRow(session, oldRowDef, oldRow, newRowDef, newRow, selector, true);
} else {
UPDATE_ROW_GI_TAP.in();
try {
RowData mergedRow = mergeRows(oldRowDef, oldRow, newRowDef, newRow, selector);
BitSet changedColumnPositions = changedColumnPositions(oldRowDef, oldRow, newRowDef, mergedRow);
Collection<GroupIndex> groupIndexes = table.getGroupIndexes();
maintainGroupIndexes(session,
table,
groupIndexes,
oldRow,
changedColumnPositions,