示例#1
0
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;
}
示例#2
0
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);
}
示例#3
0
/**
 * @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;
}
示例#4
0
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;
}