storage::Tuple *LoggingUtil::ReadTupleRecordBody(catalog::Schema *schema, VarlenPool *pool, FileHandle &file_handle) { // Check if the frame is broken size_t body_size = GetNextFrameSize(file_handle); if (body_size == 0) { LOG_ERROR("Body size is zero "); return nullptr; } // Read Body char body[body_size]; int ret = fread(body, 1, sizeof(body), file_handle.file); if (ret <= 0) { LOG_ERROR("Error occured in fread "); } CopySerializeInputBE tuple_body(body, body_size); // We create a tuple based on the message storage::Tuple *tuple = new storage::Tuple(schema, true); tuple->DeserializeFrom(tuple_body, pool); return tuple; }
void LoggingUtil::SkipTupleRecordBody(FileHandle &file_handle) { // Check if the frame is broken size_t body_size = GetNextFrameSize(file_handle); if (body_size == 0) { LOG_ERROR("Body size is zero "); } // Read Body char body[body_size]; int ret = fread(body, 1, sizeof(body), file_handle.file); if (ret <= 0) { LOG_ERROR("Error occured in fread "); } // TODO Is it necessary? CopySerializeInputBE tuple_body(body, body_size); }
/** * @brief Read TransactionRecord * @param txn_record */ bool ReadTransactionRecordHeader(TransactionRecord &txn_record, FILE *log_file, size_t log_file_size) { // Check if frame is broken auto header_size = GetNextFrameSize(log_file, log_file_size); if (header_size == 0) { return false; } // Read header char header[header_size]; size_t ret = fread(header, 1, sizeof(header), log_file); if (ret <= 0) { LOG_ERROR("Error occured in fread "); } CopySerializeInputBE txn_header(header, header_size); txn_record.Deserialize(txn_header); return true; }
bool LoggingUtil::ReadTupleRecordHeader(TupleRecord &tuple_record, FileHandle &file_handle) { // Check if frame is broken auto header_size = GetNextFrameSize(file_handle); if (header_size == 0) { LOG_ERROR("Header size is zero "); return false; } // Read header char header[header_size]; size_t ret = fread(header, 1, sizeof(header), file_handle.file); if (ret <= 0) { LOG_ERROR("Error occured in fread"); } CopySerializeInputBE tuple_header(header, header_size); tuple_record.DeserializeHeader(tuple_header); return true; }