tinySQL  0.1
A self-contained database management system
data_t.cpp
1 #include "share/data_t.h"
2 //新增数据
3 void DiskTuple::serializeFromMemory(const MemoryTuple &in_tuple) {
4  assert(!in_tuple.empty());
5  _total_len = in_tuple.size();
6  memcpy(cell, in_tuple.data(), sizeof(Data) * in_tuple.size());
7 }
8 
9 MemoryTuple DiskTuple::deserializeToMemory(const std::vector<int>& pos) {
10  MemoryTuple inmemory_tuple;
11  if (pos.empty()){
12  inmemory_tuple.resize(_total_len);
13  memcpy(inmemory_tuple.data(), cell, getBytes());
14  }
15  else{
16  for (auto p : pos){
17  inmemory_tuple.emplace_back(cell[p]);
18  }
19  }
20  return inmemory_tuple;
21 }
22 
23 //
24 //void DiskTuple::addData(Data &dat){
25 // assert(_current_len < _total_len);
26 // cell[_current_len++] = dat;
27 //}
28 
29 bool DiskTuple::isDeleted() {
30  return isDeleted_;
31 }
32 
33 void DiskTuple::setDeleted() {
34  isDeleted_ = true;
35 }
36 
37 //得到元组中的数据
38 std::vector<Data> DiskTuple::getData() const{
39  std::vector<Data> data_vec;
40  for(db_size_t i = 0; i< _total_len; ++i){
41  data_vec.emplace_back(cell[i]);
42  }
43  return data_vec;
44 }
45 
46 //DiskTuple* TupleFactory::makeTuple(db_size_t tuple_len) {
47 // auto* t = (DiskTuple*)malloc(sizeof(DiskTuple) + tuple_len * sizeof(Data));
48 // t->_total_len = tuple_len;
49 // t->_current_len = 0;
50 // t->isDeleted_ = false;
51 // return t;
52 //}
53 //
54 //DiskTuple* TupleFactory::makeTuple(DiskTuple *t) {
55 // auto* this_t = (DiskTuple*)malloc(sizeof(DiskTuple) + t->_total_len * sizeof(Data));
56 // memcpy((void*)this_t, (void*)t, t->getBytes());
57 // return this_t;
58 //}
59 //
60 //DiskTuple* TupleFactory::makeTuple(std::vector<Data> &dat_vec) {
61 // auto* t = (DiskTuple*)malloc(sizeof(DiskTuple) + dat_vec.size() * sizeof(Data));
62 // t->_total_len = t->_current_len = dat_vec.size();
63 // for (db_size_t i = 0; i < t->_total_len; ++i){
64 // t->cell[i] = dat_vec.at(i);
65 // }
66 // return t;
67 //}
Data
Basic cell element in a tuples.
Definition: data_t.h:44