Find all the local fields that have been updated
and use their concurrencyGroup to set the verifyGroupMask.
ArrayList fields;
BitSet verifyGroupMask = new BitSet();
int action = plan.getAction();
for (int i = 0; i <= 1; i++) {
if (i == 0) {
fields = plan.getConfig().fields;
} else {
fields = plan.getConfig().hiddenFields;
}
if (fields == null) {
continue;
}
for (int j = 0; j < fields.size(); j++) {
FieldDesc f = (FieldDesc) fields.get(j);
if ((f instanceof LocalFieldDesc) &&
(f.sqlProperties & FieldDesc.PROP_IN_CONCURRENCY_CHECK) > 0) {
// In the case of a deleted instance with no modified fields
// we use the present fields in the before image to perform
// the concurrency check.
if (afterImage.getSetMaskBit(f.absoluteID) ||
((action == QueryPlan.ACT_DELETE) &&
beforeImage.getPresenceMaskBit(f.absoluteID))) {
if (f.concurrencyGroup != -1) {
verifyGroupMask.set(f.concurrencyGroup);
}
}
}
}
}
return verifyGroupMask;