@Override public int getCopySpaceRequired(ITupleReference tuple) { return bytesRequired(tuple); } }
@Override public int writeTuple(ITupleReference tuple, ByteBuffer targetBuf, int targetOff) { return writeTuple(tuple, targetBuf.array(), targetOff); }
public LogRecord(ILogMarkerCallback callback) { this.callback = callback; isFlushed = new AtomicBoolean(false); replicated = new AtomicBoolean(false); readPKValue = new PrimaryKeyTupleReference(); readNewValue = SimpleTupleWriter.INSTANCE.createTupleReference(); readOldValue = SimpleTupleWriter.INSTANCE.createTupleReference(); checksumGen = new CRC32(); logSource = LogSource.LOCAL; }
@Override public int bytesRequired(ITupleReference tuple, int startField, int numFields) { int bytes = getNullFlagsBytes(tuple, startField, numFields) + getFieldSlotsBytes(tuple, startField, numFields); for (int i = startField; i < startField + numFields; i++) { bytes += tuple.getFieldLength(i); } return bytes; }
@Override public int writeTupleFields(ITupleReference tuple, int startField, int numFields, byte[] targetBuf, int targetOff) { int runner = targetOff; int nullFlagsBytes = getNullFlagsBytes(tuple, startField, numFields); for (int i = 0; i < nullFlagsBytes; i++) { targetBuf[runner++] = (byte) 0; } runner += getFieldSlotsBytes(tuple, startField, numFields); int fieldEndOff = 0; int fieldCounter = 0; for (int i = startField; i < startField + numFields; i++) { System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), targetBuf, runner, tuple.getFieldLength(i)); fieldEndOff += tuple.getFieldLength(i); runner += tuple.getFieldLength(i); writeShortL((short) fieldEndOff, targetBuf, targetOff + nullFlagsBytes + fieldCounter * 2); fieldCounter++; } return runner - targetOff; }
@Override public int writeTuple(ITupleReference tuple, byte[] targetBuf, int targetOff) { int runner = targetOff; int nullFlagsBytes = getNullFlagsBytes(tuple); int fieldSlotsBytes = getFieldSlotsBytes(tuple); for (int i = 0; i < nullFlagsBytes; i++) { targetBuf[runner++] = (byte) 0; } runner += fieldSlotsBytes; int fieldEndOff = 0; for (int i = 0; i < tuple.getFieldCount(); i++) { System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), targetBuf, runner, tuple.getFieldLength(i)); fieldEndOff += tuple.getFieldLength(i); runner += tuple.getFieldLength(i); writeShortL((short) fieldEndOff, targetBuf, targetOff + nullFlagsBytes + i * 2); } return runner - targetOff; }
@Override public int bytesRequired(ITupleReference tuple) { int bytes = getNullFlagsBytes(tuple) + getFieldSlotsBytes(tuple); for (int i = 0; i < tuple.getFieldCount(); i++) { bytes += tuple.getFieldLength(i); } return bytes; }
public void after(ITupleReference newValue) throws HyracksDataException { if (newValue != null) { filterRecord.setNewValueSize(SimpleTupleWriter.INSTANCE.bytesRequired(newValue)); filterRecord.setNewValue(newValue); filterRecord.computeAndSetLogSize(); txnSubsystem.getLogManager().log(filterRecord); } }
private void writeTuple(ByteBuffer buffer, ITupleReference tuple, int size) { SimpleTupleWriter.INSTANCE.writeTuple(tuple, buffer.array(), buffer.position()); buffer.position(buffer.position() + size); }
protected void log(int PKHash, ITupleReference newValue, ITupleReference oldValue) throws ACIDException { indexRecord.setPKHashValue(PKHash); indexRecord.setPKFields(primaryKeyFields); indexRecord.setPKValue(newValue); indexRecord.computeAndSetPKValueSize(); if (newValue != null) { indexRecord.setNewValueSize(SimpleTupleWriter.INSTANCE.bytesRequired(newValue)); indexRecord.setNewValue(newValue); } else { indexRecord.setNewValueSize(0); } if (oldValue != null) { indexRecord.setOldValueSize(SimpleTupleWriter.INSTANCE.bytesRequired(oldValue)); indexRecord.setOldValue(oldValue); } else { indexRecord.setOldValueSize(0); } indexRecord.computeAndSetLogSize(); txnSubsystem.getLogManager().log(indexRecord); }