throws DatabaseException {
int logVersion = header.getVersion();
boolean version6OrLater = (logVersion >= 6);
if (version6OrLater) {
dbId = new DatabaseId();
dbId.readFromLog(entryBuffer, logVersion);
obsoleteLsn =
LogUtils.readLong(entryBuffer, false/*unpacked*/);
}
if (readFullItem) {
/* Read IN and get node ID. */
in = (IN) newInstanceOfType();
in.readFromLog(entryBuffer, logVersion);
nodeId = in.getNodeId();
} else {
/* Calculate position following IN. */
int position = entryBuffer.position() + header.getItemSize();
if (logVersion == 1) {
/* Subtract size of obsoleteLsn */
position -= LogUtils.UNSIGNED_INT_BYTES;
} else if (logVersion >= 2) {
/* Subtract size of obsoleteLsn */
if (version6OrLater) {
position -= LogUtils.getPackedLongLogSize(obsoleteLsn);
} else {
position -= LogUtils.LONG_BYTES;
}
}
/* Subtract size of dbId */
if (!version6OrLater) {
position -= LogUtils.INT_BYTES;
} else {
position -= LogUtils.getPackedIntLogSize(dbId.getId());
}
/* Read node ID and position after IN. */
nodeId = LogUtils.readLong(entryBuffer, !version6OrLater);
entryBuffer.position(position);
in = null;
}
if (!version6OrLater) {
dbId = new DatabaseId();
dbId.readFromLog(entryBuffer, logVersion);
}
if (logVersion < 1) {
obsoleteLsn = DbLsn.NULL_LSN;
} else if (logVersion == 1) {