protected virtual unsafe int ReadLength(IRawFile headerBuff, long offset) { int isize; headerBuff.ReadBytes(offset, (byte *)(&isize), 2); return(isize); }
public byte[] GetValue(long rowID, ReadContext readContext) { var byteArray = readContext.AllocateBitsetArray(_sizeBytes); _storage.ReadBytes(rowID * _fieldSize + ISSET_HEADER_LENGTH, byteArray, 0, _sizeBytes); return(byteArray); }
public byte[] GetBytes(long rowID, ReadContext readContext) { var beginOffset = _index.ReadInt64(rowID * MetadataConstants.STRING_INDEX_FILE_RECORD_SIZE); if (beginOffset == MetadataConstants.INDEX_NULL_DATA_VALUE) { return(null); } var arrayLength = ReadLength(_data, beginOffset); if (arrayLength == 0) { return(EMPTY_BYTE_ARRAY); } //var byteArray = readContext.AllocateByteArray2(arrayLength); var byteArray = new byte[arrayLength]; _data.ReadBytes(beginOffset + HEADER_SIZE, byteArray, 0, arrayLength); return(byteArray); }
public TxRec Get() { if (IsEmpty()) { return(null); } var tx = new TxRec(); var offset = GetTxAddress(); var initialOffset = offset; int txSize = ReadInt32(ref offset); tx.PrevTxAddress = ReadInt64(ref offset); tx.Command = ReadByte(ref offset); tx.Timestamp = ReadInt64(ref offset); tx.JournalMaxRowID = ReadInt64(ref offset); tx.LastPartitionTimestamp = ReadInt64(ref offset); tx.LagSize = ReadInt64(ref offset); var sz = ReadByte(ref offset); if (sz == 0) { tx.LagName = null; } else { // lagName sz = ReadByte(ref offset); var nameBytes = new byte[sz]; _data.ReadBytes(offset, nameBytes, 0, sz); tx.LagName = Encoding.ASCII.GetString(nameBytes); offset += sz; } // symbolTableSizes tx.SymbolTableSizes = ReadInt32Array(ref offset); //symbolTableIndexPointers tx.SymbolTableIndexPointers = ReadInt64Array(ref offset); //indexPointers tx.IndexPointers = ReadInt64Array(ref offset); //lagIndexPointers tx.LagIndexPointers = ReadInt64Array(ref offset); return(tx); }
private void CopyKeyBlock(PartitionTxData pd) { var sd = pd.SymbolData[_fileID]; var newBlockOffset = pd.AppendOffset[_fileID]; var currentBlockOffset = sd.KeyBlockOffset; CheckKeyBlockOffset(currentBlockOffset); var currentBlockLen = sd.KeyBlockSize; if (currentBlockLen > 0) { var keyBlockBuff = pd.ReadCache.AllocateCopyKeyBlockArray(currentBlockLen); _kData.ReadBytes(currentBlockOffset, keyBlockBuff, 0, currentBlockLen); _kData.WriteBytes(newBlockOffset, keyBlockBuff, 0, currentBlockLen); sd.KeyBlockOffset = newBlockOffset; sd.KeyBlockCreated = true; } }