Flex  0.17.9
read_transaction.h
Go to the documentation of this file.
1 
16 #ifndef GRAPHSCOPE_DATABASE_READ_TRANSACTION_H_
17 #define GRAPHSCOPE_DATABASE_READ_TRANSACTION_H_
18 
19 #include <limits>
20 #include <utility>
21 
25 
26 namespace gs {
27 
28 class MutablePropertyFragment;
29 class GraphDBSession;
30 class VersionManager;
31 template <typename EDATA_T>
32 class AdjListView {
33  class nbr_iterator {
36 
37  public:
39  timestamp_t timestamp)
40  : ptr_(ptr), end_(end), timestamp_(timestamp) {
41  while (ptr_ != end_ && ptr_->get_timestamp() > timestamp_) {
42  ++ptr_;
43  }
44  }
45 
46  inline const_nbr_t& operator*() const { return *ptr_; }
47 
48  inline const_nbr_ptr_t operator->() const { return ptr_; }
49 
51  ++ptr_;
52  while (ptr_ != end_ && ptr_->get_timestamp() > timestamp_) {
53  ++ptr_;
54  }
55  return *this;
56  }
57 
58  inline bool operator==(const nbr_iterator& rhs) const {
59  return (ptr_ == rhs.ptr_);
60  }
61 
62  inline bool operator!=(const nbr_iterator& rhs) const {
63  return (ptr_ != rhs.ptr_);
64  }
65 
66  private:
70  };
71 
72  public:
74 
75  AdjListView(const slice_t& slice, timestamp_t timestamp)
76  : edges_(slice), timestamp_(timestamp) {}
77 
78  inline nbr_iterator begin() const {
80  }
81  inline nbr_iterator end() const {
83  }
84 
85  inline int estimated_degree() const { return edges_.size(); }
86 
87  private:
90 };
91 
92 template <typename EDATA_T>
94  class nbr_iterator {
98 
99  public:
101  : ptr_(ptr), end_(end) {}
102 
103  inline const_nbr_t& operator*() const { return *ptr_; }
104 
105  inline const_nbr_ptr_t operator->() const { return ptr_; }
106 
108  ++ptr_;
109  return *this;
110  }
111 
112  inline bool operator==(const nbr_iterator& rhs) const {
113  return (ptr_ == rhs.ptr_);
114  }
115 
116  inline bool operator!=(const nbr_iterator& rhs) const {
117  return (ptr_ != rhs.ptr_);
118  }
119 
120  private:
123  };
124 
125  public:
127 
128  ImmutableAdjListView(const slice_t& slice) : edges_(slice) {}
129 
130  inline nbr_iterator begin() const {
131  return nbr_iterator(edges_.begin(), edges_.end());
132  }
133  inline nbr_iterator end() const {
134  return nbr_iterator(edges_.end(), edges_.end());
135  }
136 
137  inline int estimated_degree() const { return edges_.size(); }
138 
139  private:
141 };
142 
143 template <typename EDATA_T>
144 class GraphView {
145  public:
147  : csr_(csr),
148  timestamp_(timestamp),
149  unsorted_since_(csr.unsorted_since()) {}
150 
152  return AdjListView<EDATA_T>(csr_.get_edges(v), timestamp_);
153  }
154 
155  // iterate edges with data in [min_value, max_value)
156  template <typename FUNC_T>
157  void foreach_edges_between(vid_t v, EDATA_T& min_value, EDATA_T& max_value,
158  const FUNC_T& func) const {
159  const auto& edges = csr_.get_edges(v);
160  auto ptr = edges.end() - 1;
161  auto end = edges.begin() - 1;
162  while (ptr != end) {
163  if (ptr->timestamp > timestamp_) {
164  --ptr;
165  continue;
166  }
167  if (ptr->timestamp < unsorted_since_) {
168  break;
169  }
170  if (!(ptr->data < min_value) && (ptr->data < max_value)) {
171  func(*ptr, min_value, max_value);
172  }
173  --ptr;
174  }
175  if (ptr == end) {
176  return;
177  }
178  ptr = std::upper_bound(end + 1, ptr + 1, max_value,
179  [](const EDATA_T& a, const MutableNbr<EDATA_T>& b) {
180  return a < b.data;
181  }) -
182  1;
183  while (ptr != end) {
184  if (ptr->data < min_value) {
185  break;
186  }
187  func(*ptr, min_value, max_value);
188  --ptr;
189  }
190  }
191 
192  // iterate edges with data in (min_value, +inf)
193  template <typename FUNC_T>
194  void foreach_edges_gt(vid_t v, EDATA_T& min_value, const FUNC_T& func) const {
195  const auto& edges = csr_.get_edges(v);
196  auto ptr = edges.end() - 1;
197  auto end = edges.begin() - 1;
198  while (ptr != end) {
199  if (ptr->timestamp > timestamp_) {
200  --ptr;
201  continue;
202  }
203  if (ptr->timestamp < unsorted_since_) {
204  break;
205  }
206  if (min_value < ptr->data) {
207  func(*ptr, min_value);
208  }
209  --ptr;
210  }
211  while (ptr != end) {
212  if (!(min_value < ptr->data)) {
213  break;
214  }
215  func(*ptr, min_value);
216  --ptr;
217  }
218  }
219 
220  template <typename FUNC_T>
221  void foreach_edges_lt(vid_t v, const EDATA_T& max_value,
222  const FUNC_T& func) const {
223  const auto& edges = csr_.get_edges(v);
224  auto ptr = edges.end() - 1;
225  auto end = edges.begin() - 1;
226  while (ptr != end) {
227  if (ptr->timestamp > timestamp_) {
228  --ptr;
229  continue;
230  }
231  if (ptr->timestamp < unsorted_since_) {
232  break;
233  }
234  if (ptr->data < max_value) {
235  func(*ptr);
236  }
237  --ptr;
238  }
239  if (ptr == end) {
240  return;
241  }
242  ptr = std::upper_bound(end + 1, ptr + 1, max_value,
243  [](const EDATA_T& a, const MutableNbr<EDATA_T>& b) {
244  return a < b.data;
245  }) -
246  1;
247  while (ptr != end) {
248  func(*ptr);
249  --ptr;
250  }
251  }
252 
253  // iterate edges with data in [min_value, +inf)
254  template <typename FUNC_T>
255  void foreach_edges_ge(vid_t v, EDATA_T& min_value, const FUNC_T& func) const {
256  const auto& edges = csr_.get_edges(v);
257  auto ptr = edges.end() - 1;
258  auto end = edges.begin() - 1;
259  while (ptr != end) {
260  if (ptr->timestamp > timestamp_) {
261  --ptr;
262  continue;
263  }
264  if (ptr->timestamp < unsorted_since_) {
265  break;
266  }
267  if (!(ptr->data < min_value)) {
268  func(*ptr, min_value);
269  }
270  --ptr;
271  }
272  while (ptr != end) {
273  if (ptr->data < min_value) {
274  break;
275  }
276  func(*ptr, min_value);
277  --ptr;
278  }
279  }
280 
281  private:
285 };
286 
287 template <typename EDATA_T>
289  public:
291 
293  return ImmutableAdjListView<EDATA_T>(csr_.get_edges(v));
294  }
295 
296  private:
298 };
299 
300 template <typename EDATA_T>
302  public:
304  : csr_(csr), timestamp_(timestamp) {}
305 
306  inline bool exist(vid_t v) const {
307  return (csr_.get_edge(v).timestamp.load() <= timestamp_);
308  }
309 
310  inline const MutableNbr<EDATA_T>& get_edge(vid_t v) const {
311  return csr_.get_edge(v);
312  }
313 
314  private:
317 };
318 
319 template <>
320 class SingleGraphView<std::string_view> {
321  public:
323  timestamp_t timestamp)
324  : csr_(csr), timestamp_(timestamp) {}
325 
326  bool exist(vid_t v) const {
327  return (csr_.get_edge(v).timestamp.load() <= timestamp_);
328  }
329 
331  return csr_.get_edge(v);
332  }
333 
334  private:
337 };
338 
339 template <typename EDATA_T>
341  public:
343  : csr_(csr) {}
344 
345  inline bool exist(vid_t v) const {
346  return (csr_.get_edge(v).neighbor != std::numeric_limits<vid_t>::max());
347  }
348 
349  inline const ImmutableNbr<EDATA_T>& get_edge(vid_t v) const {
350  return csr_.get_edge(v);
351  }
352 
353  private:
355 };
356 
357 template <>
358 class SingleImmutableGraphView<std::string_view> {
359  public:
361  : csr_(csr) {}
362 
363  bool exist(vid_t v) const {
364  return (csr_.get_edge(v).neighbor != std::numeric_limits<vid_t>::max());
365  }
366 
368  return csr_.get_edge(v);
369  }
370 
371  private:
373 };
374 
376  public:
377  ReadTransaction(const GraphDBSession& session,
381 
382  std::string run(const std::string& cypher,
383  const std::map<std::string, std::string>& params) const;
384 
385  timestamp_t timestamp() const;
386 
387  bool Commit();
388 
389  void Abort();
390 
391  const MutablePropertyFragment& graph() const;
392 
393  /*
394  * @brief Get the handle of the vertex property column, only for non-primary
395  * key columns.
396  */
397  const std::shared_ptr<ColumnBase> get_vertex_property_column(
398  uint8_t label, const std::string& col_name) const {
399  return graph_.get_vertex_table(label).get_column(col_name);
400  }
401 
409  template <typename T>
410  const std::shared_ptr<TypedRefColumn<T>> get_vertex_ref_property_column(
411  uint8_t label, const std::string& col_name) const {
412  auto pk = graph_.schema().get_vertex_primary_key(label);
413  CHECK(pk.size() == 1) << "Only support single primary key";
414  if (col_name == std::get<1>(pk[0])) {
415  return std::dynamic_pointer_cast<TypedRefColumn<T>>(
417  } else {
418  auto ptr = graph_.get_vertex_table(label).get_column(col_name);
419  if (ptr) {
420  return std::dynamic_pointer_cast<TypedRefColumn<T>>(
421  CreateRefColumn(ptr));
422  } else {
423  return nullptr;
424  }
425  }
426  }
427 
429  public:
430  vertex_iterator(label_t label, vid_t cur, vid_t num,
433 
434  bool IsValid() const;
435  void Next();
436  void Goto(vid_t target);
437 
438  Any GetId() const;
439  vid_t GetIndex() const;
440 
441  Any GetField(int col_id) const;
442  int FieldNum() const;
443 
444  private:
449  };
450 
452  public:
453  edge_iterator(label_t neighbor_label, label_t edge_label,
454  std::shared_ptr<CsrConstEdgeIterBase> iter);
456 
457  Any GetData() const;
458 
459  bool IsValid() const;
460 
461  void Next();
462 
463  vid_t GetNeighbor() const;
464 
465  label_t GetNeighborLabel() const;
466 
467  label_t GetEdgeLabel() const;
468 
469  private:
472 
473  std::shared_ptr<CsrConstEdgeIterBase> iter_;
474  };
475 
477 
478  vertex_iterator FindVertex(label_t label, const Any& id) const;
479 
480  bool GetVertexIndex(label_t label, const Any& id, vid_t& index) const;
481 
482  vid_t GetVertexNum(label_t label) const;
483 
484  Any GetVertexId(label_t label, vid_t index) const;
485 
487  label_t neighbor_label,
488  label_t edge_label) const;
489 
491  label_t neighbor_label,
492  label_t edge_label) const;
493 
494  size_t GetOutDegree(label_t label, vid_t u, label_t neighbor_label,
495  label_t edge_label) const;
496 
497  size_t GetInDegree(label_t label, vid_t u, label_t neighbor_label,
498  label_t edge_label) const;
499 
500  template <typename EDATA_T>
502  label_t neighbor_label,
503  label_t edge_label) const {
504  auto csr = dynamic_cast<const TypedMutableCsrBase<EDATA_T>*>(
505  graph_.get_oe_csr(v_label, neighbor_label, edge_label));
506  return AdjListView<EDATA_T>(csr->get_edges(v), timestamp_);
507  }
508 
509  template <typename EDATA_T>
511  label_t neighbor_label,
512  label_t edge_label) const {
513  auto csr = dynamic_cast<const TypedMutableCsrBase<EDATA_T>*>(
514  graph_.get_ie_csr(v_label, neighbor_label, edge_label));
515  return AdjListView<EDATA_T>(csr->get_edges(v), timestamp_);
516  }
517 
518  inline const Schema& schema() const { return graph_.schema(); }
519 
520  template <typename EDATA_T>
522  label_t neighbor_label,
523  label_t edge_label) const {
524  auto csr = dynamic_cast<const MutableCsr<EDATA_T>*>(
525  graph_.get_oe_csr(v_label, neighbor_label, edge_label));
526  return GraphView<EDATA_T>(*csr, timestamp_);
527  }
528 
529  template <typename EDATA_T>
531  label_t neighbor_label,
532  label_t edge_label) const {
533  auto csr = dynamic_cast<const MutableCsr<EDATA_T>*>(
534  graph_.get_ie_csr(v_label, neighbor_label, edge_label));
535  return GraphView<EDATA_T>(*csr, timestamp_);
536  }
537 
538  template <typename EDATA_T>
540  label_t v_label, label_t neighbor_label, label_t edge_label) const {
541  auto csr = dynamic_cast<const SingleMutableCsr<EDATA_T>*>(
542  graph_.get_oe_csr(v_label, neighbor_label, edge_label));
543  return SingleGraphView<EDATA_T>(*csr, timestamp_);
544  }
545 
546  template <typename EDATA_T>
548  label_t v_label, label_t neighbor_label, label_t edge_label) const {
549  auto csr = dynamic_cast<const SingleMutableCsr<EDATA_T>*>(
550  graph_.get_ie_csr(v_label, neighbor_label, edge_label));
551  return SingleGraphView<EDATA_T>(*csr, timestamp_);
552  }
553 
554  template <typename EDATA_T>
556  label_t v_label, label_t neighbor_label, label_t edge_label) const {
557  auto csr = dynamic_cast<const SingleImmutableCsr<EDATA_T>*>(
558  graph_.get_oe_csr(v_label, neighbor_label, edge_label));
560  }
561 
562  template <typename EDATA_T>
564  label_t v_label, label_t neighbor_label, label_t edge_label) const {
565  auto csr = dynamic_cast<const SingleImmutableCsr<EDATA_T>*>(
566  graph_.get_ie_csr(v_label, neighbor_label, edge_label));
568  }
569 
570  template <typename EDATA_T>
572  label_t v_label, label_t neighbor_label, label_t edge_label) const {
573  auto csr = dynamic_cast<const ImmutableCsr<EDATA_T>*>(
574  graph_.get_oe_csr(v_label, neighbor_label, edge_label));
575  return ImmutableGraphView<EDATA_T>(*csr);
576  }
577 
578  template <typename EDATA_T>
580  label_t v_label, label_t neighbor_label, label_t edge_label) const {
581  auto csr = dynamic_cast<const ImmutableCsr<EDATA_T>*>(
582  graph_.get_ie_csr(v_label, neighbor_label, edge_label));
583  return ImmutableGraphView<EDATA_T>(*csr);
584  }
585 
586  const GraphDBSession& GetSession() const;
587 
588  private:
589  void release();
594 };
595 
596 } // namespace gs
597 
598 #endif // GRAPHSCOPE_DATABASE_READ_TRANSACTION_H_
Definition: read_transaction.h:33
const_nbr_ptr_t operator->() const
Definition: read_transaction.h:48
const_nbr_t & operator*() const
Definition: read_transaction.h:46
bool operator!=(const nbr_iterator &rhs) const
Definition: read_transaction.h:62
bool operator==(const nbr_iterator &rhs) const
Definition: read_transaction.h:58
nbr_iterator & operator++()
Definition: read_transaction.h:50
timestamp_t timestamp_
Definition: read_transaction.h:69
const_nbr_ptr_t end_
Definition: read_transaction.h:68
const_nbr_ptr_t ptr_
Definition: read_transaction.h:67
typename MutableNbrSlice< EDATA_T >::const_nbr_ptr_t const_nbr_ptr_t
Definition: read_transaction.h:35
typename MutableNbrSlice< EDATA_T >::const_nbr_t const_nbr_t
Definition: read_transaction.h:34
nbr_iterator(const_nbr_ptr_t ptr, const_nbr_ptr_t end, timestamp_t timestamp)
Definition: read_transaction.h:38
Definition: read_transaction.h:32
AdjListView(const slice_t &slice, timestamp_t timestamp)
Definition: read_transaction.h:75
int estimated_degree() const
Definition: read_transaction.h:85
timestamp_t timestamp_
Definition: read_transaction.h:89
slice_t edges_
Definition: read_transaction.h:88
nbr_iterator end() const
Definition: read_transaction.h:81
nbr_iterator begin() const
Definition: read_transaction.h:78
Definition: graph_db_session.h:36
Definition: read_transaction.h:144
AdjListView< EDATA_T > get_edges(vid_t v) const
Definition: read_transaction.h:151
const MutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:282
void foreach_edges_gt(vid_t v, EDATA_T &min_value, const FUNC_T &func) const
Definition: read_transaction.h:194
void foreach_edges_lt(vid_t v, const EDATA_T &max_value, const FUNC_T &func) const
Definition: read_transaction.h:221
timestamp_t unsorted_since_
Definition: read_transaction.h:284
void foreach_edges_between(vid_t v, EDATA_T &min_value, EDATA_T &max_value, const FUNC_T &func) const
Definition: read_transaction.h:157
timestamp_t timestamp_
Definition: read_transaction.h:283
GraphView(const MutableCsr< EDATA_T > &csr, timestamp_t timestamp)
Definition: read_transaction.h:146
void foreach_edges_ge(vid_t v, EDATA_T &min_value, const FUNC_T &func) const
Definition: read_transaction.h:255
Definition: read_transaction.h:94
const_nbr_ptr_t end_
Definition: read_transaction.h:122
typename ImmutableNbrSlice< EDATA_T >::const_nbr_t const_nbr_t
Definition: read_transaction.h:95
bool operator==(const nbr_iterator &rhs) const
Definition: read_transaction.h:112
typename ImmutableNbrSlice< EDATA_T >::const_nbr_ptr_t const_nbr_ptr_t
Definition: read_transaction.h:97
const_nbr_ptr_t operator->() const
Definition: read_transaction.h:105
const_nbr_ptr_t ptr_
Definition: read_transaction.h:121
const_nbr_t & operator*() const
Definition: read_transaction.h:103
nbr_iterator(const_nbr_ptr_t ptr, const_nbr_ptr_t end)
Definition: read_transaction.h:100
bool operator!=(const nbr_iterator &rhs) const
Definition: read_transaction.h:116
nbr_iterator & operator++()
Definition: read_transaction.h:107
Definition: read_transaction.h:93
nbr_iterator end() const
Definition: read_transaction.h:133
int estimated_degree() const
Definition: read_transaction.h:137
slice_t edges_
Definition: read_transaction.h:140
nbr_iterator begin() const
Definition: read_transaction.h:130
ImmutableAdjListView(const slice_t &slice)
Definition: read_transaction.h:128
Definition: immutable_csr.h:53
Definition: read_transaction.h:288
ImmutableAdjListView< EDATA_T > get_edges(vid_t v) const
Definition: read_transaction.h:292
ImmutableGraphView(const ImmutableCsr< EDATA_T > &csr)
Definition: read_transaction.h:290
const ImmutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:297
Definition: nbr.h:100
int size() const
Definition: nbr.h:110
const_nbr_ptr_t end() const
Definition: nbr.h:115
const_nbr_ptr_t begin() const
Definition: nbr.h:114
Definition: mutable_csr.h:183
Definition: nbr.h:318
const_nbr_ptr_t end() const
Definition: nbr.h:333
int size() const
Definition: nbr.h:328
const_nbr_ptr_t begin() const
Definition: nbr.h:332
Definition: mutable_property_fragment.h:37
Table & get_vertex_table(label_t vertex_label)
Definition: mutable_property_fragment.h:67
CsrBase * get_oe_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.h:105
CsrBase * get_ie_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.h:119
const Schema & schema() const
Definition: mutable_property_fragment.cc:391
std::shared_ptr< RefColumnBase > get_vertex_id_column(uint8_t label) const
Definition: mutable_property_fragment.h:139
Definition: read_transaction.h:451
std::shared_ptr< CsrConstEdgeIterBase > iter_
Definition: read_transaction.h:473
label_t neighbor_label_
Definition: read_transaction.h:470
bool IsValid() const
Definition: read_transaction.cc:82
label_t edge_label_
Definition: read_transaction.h:471
Any GetData() const
Definition: read_transaction.cc:78
edge_iterator(label_t neighbor_label, label_t edge_label, std::shared_ptr< CsrConstEdgeIterBase > iter)
Definition: read_transaction.cc:70
label_t GetNeighborLabel() const
Definition: read_transaction.cc:92
label_t GetEdgeLabel() const
Definition: read_transaction.cc:96
vid_t GetNeighbor() const
Definition: read_transaction.cc:88
void Next()
Definition: read_transaction.cc:86
Definition: read_transaction.h:428
const MutablePropertyFragment & graph_
Definition: read_transaction.h:448
void Next()
Definition: read_transaction.cc:52
bool IsValid() const
Definition: read_transaction.cc:51
vertex_iterator(label_t label, vid_t cur, vid_t num, const MutablePropertyFragment &graph)
Definition: read_transaction.cc:46
vid_t cur_
Definition: read_transaction.h:446
void Goto(vid_t target)
Definition: read_transaction.cc:53
Any GetField(int col_id) const
Definition: read_transaction.cc:62
Any GetId() const
Definition: read_transaction.cc:57
vid_t GetIndex() const
Definition: read_transaction.cc:60
label_t label_
Definition: read_transaction.h:445
vid_t num_
Definition: read_transaction.h:447
int FieldNum() const
Definition: read_transaction.cc:66
Definition: read_transaction.h:375
size_t GetInDegree(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:147
const Schema & schema() const
Definition: read_transaction.h:518
const std::shared_ptr< ColumnBase > get_vertex_property_column(uint8_t label, const std::string &col_name) const
Definition: read_transaction.h:397
SingleGraphView< EDATA_T > GetIncomingSingleGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:547
GraphView< EDATA_T > GetIncomingGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:530
vertex_iterator FindVertex(label_t label, const Any &id) const
Definition: read_transaction.cc:105
void release()
Definition: read_transaction.cc:154
size_t GetOutDegree(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:140
ImmutableGraphView< EDATA_T > GetOutgoingImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:571
vertex_iterator GetVertexIterator(label_t label) const
Definition: read_transaction.cc:100
AdjListView< EDATA_T > GetIncomingEdges(label_t v_label, vid_t v, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:510
Any GetVertexId(label_t label, vid_t index) const
Definition: read_transaction.cc:124
edge_iterator GetOutEdgeIterator(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:128
timestamp_t timestamp_
Definition: read_transaction.h:593
std::string run(const std::string &cypher, const std::map< std::string, std::string > &params) const
Definition: read_transaction.cc:29
~ReadTransaction()
Definition: read_transaction.cc:27
vid_t GetVertexNum(label_t label) const
Definition: read_transaction.cc:120
GraphView< EDATA_T > GetOutgoingGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:521
AdjListView< EDATA_T > GetOutgoingEdges(label_t v_label, vid_t v, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:501
void Abort()
Definition: read_transaction.cc:42
ReadTransaction(const GraphDBSession &session, const MutablePropertyFragment &graph, VersionManager &vm, timestamp_t timestamp)
Definition: read_transaction.cc:23
edge_iterator GetInEdgeIterator(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:134
SingleImmutableGraphView< EDATA_T > GetOutgoingSingleImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:555
const std::shared_ptr< TypedRefColumn< T > > get_vertex_ref_property_column(uint8_t label, const std::string &col_name) const
Get the handle of the vertex property column, including the primary key.
Definition: read_transaction.h:410
bool GetVertexIndex(label_t label, const Any &id, vid_t &index) const
Definition: read_transaction.cc:115
const GraphDBSession & GetSession() const
Definition: read_transaction.cc:161
const MutablePropertyFragment & graph_
Definition: read_transaction.h:591
VersionManager & vm_
Definition: read_transaction.h:592
SingleImmutableGraphView< EDATA_T > GetIncomingSingleImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:563
const GraphDBSession & session_
Definition: read_transaction.h:590
const MutablePropertyFragment & graph() const
Definition: read_transaction.cc:44
ImmutableGraphView< EDATA_T > GetIncomingImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:579
timestamp_t timestamp() const
Definition: read_transaction.cc:35
bool Commit()
Definition: read_transaction.cc:37
SingleGraphView< EDATA_T > GetOutgoingSingleGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:539
Definition: schema.h:29
const std::vector< std::tuple< PropertyType, std::string, size_t > > & get_vertex_primary_key(label_t index) const
Definition: schema.cc:391
timestamp_t timestamp_
Definition: read_transaction.h:336
MutableNbr< std::string_view > get_edge(vid_t v) const
Definition: read_transaction.h:330
SingleGraphView(const SingleMutableCsr< std::string_view > &csr, timestamp_t timestamp)
Definition: read_transaction.h:322
const SingleMutableCsr< std::string_view > & csr_
Definition: read_transaction.h:335
bool exist(vid_t v) const
Definition: read_transaction.h:326
Definition: read_transaction.h:301
SingleGraphView(const SingleMutableCsr< EDATA_T > &csr, timestamp_t timestamp)
Definition: read_transaction.h:303
const SingleMutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:315
timestamp_t timestamp_
Definition: read_transaction.h:316
bool exist(vid_t v) const
Definition: read_transaction.h:306
const MutableNbr< EDATA_T > & get_edge(vid_t v) const
Definition: read_transaction.h:310
Definition: immutable_csr.h:681
Definition: immutable_csr.h:494
const SingleImmutableCsr< std::string_view > & csr_
Definition: read_transaction.h:372
bool exist(vid_t v) const
Definition: read_transaction.h:363
ImmutableNbr< std::string_view > get_edge(vid_t v) const
Definition: read_transaction.h:367
SingleImmutableGraphView(const SingleImmutableCsr< std::string_view > &csr)
Definition: read_transaction.h:360
Definition: read_transaction.h:340
const SingleImmutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:354
bool exist(vid_t v) const
Definition: read_transaction.h:345
const ImmutableNbr< EDATA_T > & get_edge(vid_t v) const
Definition: read_transaction.h:349
SingleImmutableGraphView(const SingleImmutableCsr< EDATA_T > &csr)
Definition: read_transaction.h:342
Definition: mutable_csr.h:957
Definition: mutable_csr.h:747
std::shared_ptr< ColumnBase > get_column(const std::string &name)
Definition: table.cc:171
Definition: csr_base.h:135
Definition: version_manager.h:34
Definition: adj_list.h:23
std::shared_ptr< RefColumnBase > CreateRefColumn(std::shared_ptr< ColumnBase > column)
Definition: column.cc:260
uint32_t timestamp_t
Definition: types.h:30
uint32_t vid_t
Definition: types.h:31
uint8_t label_t
Definition: types.h:32
Definition: loading_config.h:232
Definition: types.h:399
Definition: nbr.h:29
Definition: nbr.h:258
EDATA_T data
Definition: nbr.h:286