throws IOException, SQLException
{
if (log.isLoggable(Level.FINEST))
log.finest("db table " + getName() + " insert row xa:" + xa);
Block block = null;
try {
while (true) {
long blockId = allocateInsertRowBlock();
block = xa.loadBlock(this, blockId);
int rowOffset = allocateRow(block, xa);
if (rowOffset >= 0) {
insertRow(queryContext, xa, columns, values,
block, rowOffset);
block.saveAllocation();
freeRowBlockId(blockId);
return blockIdToAddress(blockId, rowOffset);
}
Block freeBlock = block;
block = null;
freeBlock.free();
}
} finally {
if (block != null)
block.free();
}