try {
Table table = (Table) this.table;
RowIterator it = other.rowIterator();
while (it.hasNext()) {
Row row = it.getNextRow();
Object[] olddata = row.getData();
Object[] data = table.getEmptyRowData();
Object oldvalue = null;
if (adjust == 0 && colindex != -1) {
oldvalue = olddata[colindex];
colvalue = newtype.convertToType(session, oldvalue,
oldtype);
}
ArrayUtil.copyAdjustArray(olddata, data, colvalue, colindex,
adjust);
table.systemSetIdentityColumn(session, data);
if (table.hasGeneratedColumn()) {
((Table) table).setGeneratedColumns(session, data);
}
table.enforceTypeLimits(session, data);
table.enforceRowConstraints(session, data);
// get object without RowAction
Row newrow = (Row) getNewCachedObject(session, data, false);
indexRow(session, newrow);
}
if (table.isTemp()) {
return;
}
if (oldtype != null && oldtype.isLobType()) {
it = other.rowIterator();
while (it.hasNext()) {
Row row = it.getNextRow();
Object[] olddata = row.getData();
Object oldvalue = olddata[colindex];
if (oldvalue != null) {
session.sessionData.adjustLobUsageCount(oldvalue, -1);
}
}
}
if (newtype != null && newtype.isLobType()) {
it = rowIterator();
while (it.hasNext()) {
Row row = it.getNextRow();
Object[] data = row.getData();
Object value = data[colindex];
if (value != null) {
session.sessionData.adjustLobUsageCount(value, +1);
}