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 {
96  using const_nbr_ptr_t =
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);
455  ~edge_iterator();
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_
gs::ReadTransaction::FindVertex
vertex_iterator FindVertex(label_t label, const Any &id) const
Definition: read_transaction.cc:105
gs::ReadTransaction::vertex_iterator
Definition: read_transaction.h:428
gs::ImmutableAdjListView::nbr_iterator::ptr_
const_nbr_ptr_t ptr_
Definition: read_transaction.h:121
gs::SingleGraphView< std::string_view >::SingleGraphView
SingleGraphView(const SingleMutableCsr< std::string_view > &csr, timestamp_t timestamp)
Definition: read_transaction.h:322
gs::ImmutableAdjListView::nbr_iterator
Definition: read_transaction.h:94
gs::AdjListView::edges_
slice_t edges_
Definition: read_transaction.h:88
gs::ReadTransaction::GetVertexIndex
bool GetVertexIndex(label_t label, const Any &id, vid_t &index) const
Definition: read_transaction.cc:115
gs::MutablePropertyFragment::get_vertex_table
Table & get_vertex_table(label_t vertex_label)
Definition: mutable_property_fragment.h:67
gs::ImmutableAdjListView::estimated_degree
int estimated_degree() const
Definition: read_transaction.h:137
gs::ImmutableAdjListView::nbr_iterator::operator==
bool operator==(const nbr_iterator &rhs) const
Definition: read_transaction.h:112
gs::ReadTransaction::edge_iterator::GetNeighbor
vid_t GetNeighbor() const
Definition: read_transaction.cc:88
gs::AdjListView::nbr_iterator::ptr_
const_nbr_ptr_t ptr_
Definition: read_transaction.h:67
gs::Any
Definition: types.h:399
gs::AdjListView::end
nbr_iterator end() const
Definition: read_transaction.h:81
gs::ImmutableAdjListView::nbr_iterator::const_nbr_t
typename ImmutableNbrSlice< EDATA_T >::const_nbr_t const_nbr_t
Definition: read_transaction.h:95
gs::SingleGraphView::exist
bool exist(vid_t v) const
Definition: read_transaction.h:306
gs::ReadTransaction::vm_
VersionManager & vm_
Definition: read_transaction.h:592
gs::ImmutableCsr
Definition: immutable_csr.h:53
gs::ReadTransaction::GetVertexId
Any GetVertexId(label_t label, vid_t index) const
Definition: read_transaction.cc:124
gs::ReadTransaction::vertex_iterator::FieldNum
int FieldNum() const
Definition: read_transaction.cc:66
gs::timestamp_t
uint32_t timestamp_t
Definition: types.h:30
gs::ImmutableAdjListView::ImmutableAdjListView
ImmutableAdjListView(const slice_t &slice)
Definition: read_transaction.h:128
gs::SingleImmutableGraphView::SingleImmutableGraphView
SingleImmutableGraphView(const SingleImmutableCsr< EDATA_T > &csr)
Definition: read_transaction.h:342
gs::ImmutableAdjListView::nbr_iterator::operator*
const_nbr_t & operator*() const
Definition: read_transaction.h:103
gs::ImmutableAdjListView::nbr_iterator::operator++
nbr_iterator & operator++()
Definition: read_transaction.h:107
gs::MutablePropertyFragment::schema
const Schema & schema() const
Definition: mutable_property_fragment.cc:391
gs::ReadTransaction::GetSession
const GraphDBSession & GetSession() const
Definition: read_transaction.cc:161
gs::ReadTransaction::vertex_iterator::GetId
Any GetId() const
Definition: read_transaction.cc:57
gs::SingleGraphView
Definition: read_transaction.h:301
gs::ImmutableAdjListView::nbr_iterator::operator!=
bool operator!=(const nbr_iterator &rhs) const
Definition: read_transaction.h:116
gs::ImmutableGraphView::csr_
const ImmutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:297
gs::ReadTransaction::vertex_iterator::GetIndex
vid_t GetIndex() const
Definition: read_transaction.cc:60
gs::ImmutableNbrSlice
Definition: nbr.h:100
gs::ReadTransaction::GetIncomingEdges
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
gs::vid_t
uint32_t vid_t
Definition: types.h:31
gs::SingleImmutableGraphView< std::string_view >::csr_
const SingleImmutableCsr< std::string_view > & csr_
Definition: read_transaction.h:372
gs::ImmutableAdjListView::nbr_iterator::end_
const_nbr_ptr_t end_
Definition: read_transaction.h:122
gs::SingleImmutableGraphView< std::string_view >::get_edge
ImmutableNbr< std::string_view > get_edge(vid_t v) const
Definition: read_transaction.h:367
gs::ReadTransaction::timestamp
timestamp_t timestamp() const
Definition: read_transaction.cc:35
gs::MutablePropertyFragment::get_vertex_id_column
std::shared_ptr< RefColumnBase > get_vertex_id_column(uint8_t label) const
Definition: mutable_property_fragment.h:139
gs::SingleGraphView::get_edge
const MutableNbr< EDATA_T > & get_edge(vid_t v) const
Definition: read_transaction.h:310
gs::SingleImmutableGraphView::get_edge
const ImmutableNbr< EDATA_T > & get_edge(vid_t v) const
Definition: read_transaction.h:349
gs::GraphView::foreach_edges_gt
void foreach_edges_gt(vid_t v, EDATA_T &min_value, const FUNC_T &func) const
Definition: read_transaction.h:194
gs::ReadTransaction::GetIncomingImmutableGraphView
ImmutableGraphView< EDATA_T > GetIncomingImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:579
gs::ReadTransaction::release
void release()
Definition: read_transaction.cc:154
gs::ImmutableGraphView
Definition: read_transaction.h:288
gs::ReadTransaction::edge_iterator
Definition: read_transaction.h:451
gs
Definition: adj_list.h:23
gs::GraphView::foreach_edges_lt
void foreach_edges_lt(vid_t v, const EDATA_T &max_value, const FUNC_T &func) const
Definition: read_transaction.h:221
gs::ReadTransaction::get_vertex_ref_property_column
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
gs::ReadTransaction::vertex_iterator::label_
label_t label_
Definition: read_transaction.h:445
gs::ImmutableAdjListView::end
nbr_iterator end() const
Definition: read_transaction.h:133
gs::ImmutableAdjListView
Definition: read_transaction.h:93
gs::AdjListView::nbr_iterator::operator->
const_nbr_ptr_t operator->() const
Definition: read_transaction.h:48
gs::ReadTransaction::edge_iterator::iter_
std::shared_ptr< CsrConstEdgeIterBase > iter_
Definition: read_transaction.h:473
gs::MutableNbrSlice::begin
const_nbr_ptr_t begin() const
Definition: nbr.h:332
gs::GraphView::foreach_edges_between
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
gs::MutableNbr
Definition: nbr.h:258
gs::AdjListView::nbr_iterator::operator==
bool operator==(const nbr_iterator &rhs) const
Definition: read_transaction.h:58
gs::GraphView::unsorted_since_
timestamp_t unsorted_since_
Definition: read_transaction.h:284
gs::ImmutableNbrSlice::end
const_nbr_ptr_t end() const
Definition: nbr.h:115
gs::ReadTransaction::GetInEdgeIterator
edge_iterator GetInEdgeIterator(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:134
gs::CreateRefColumn
std::shared_ptr< RefColumnBase > CreateRefColumn(std::shared_ptr< ColumnBase > column)
Definition: column.cc:260
gs::ReadTransaction::vertex_iterator::GetField
Any GetField(int col_id) const
Definition: read_transaction.cc:62
gs::ImmutableGraphView::get_edges
ImmutableAdjListView< EDATA_T > get_edges(vid_t v) const
Definition: read_transaction.h:292
gs::SingleImmutableGraphView< std::string_view >::exist
bool exist(vid_t v) const
Definition: read_transaction.h:363
mutable_property_fragment.h
gs::ReadTransaction::session_
const GraphDBSession & session_
Definition: read_transaction.h:590
gs::AdjListView::nbr_iterator
Definition: read_transaction.h:33
gs::AdjListView::begin
nbr_iterator begin() const
Definition: read_transaction.h:78
gs::ReadTransaction::vertex_iterator::~vertex_iterator
~vertex_iterator()
gs::MutablePropertyFragment
Definition: mutable_property_fragment.h:37
gs::ReadTransaction::timestamp_
timestamp_t timestamp_
Definition: read_transaction.h:593
gs::ImmutableAdjListView::begin
nbr_iterator begin() const
Definition: read_transaction.h:130
gs::ReadTransaction::vertex_iterator::Goto
void Goto(vid_t target)
Definition: read_transaction.cc:53
gs::GraphView::csr_
const MutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:282
gs::AdjListView
Definition: read_transaction.h:32
gs::AdjListView::nbr_iterator::timestamp_
timestamp_t timestamp_
Definition: read_transaction.h:69
gs::AdjListView::nbr_iterator::end_
const_nbr_ptr_t end_
Definition: read_transaction.h:68
gs::MutableNbrSlice::end
const_nbr_ptr_t end() const
Definition: nbr.h:333
gs::MutableNbr::data
EDATA_T data
Definition: nbr.h:286
gs::ReadTransaction::GetOutDegree
size_t GetOutDegree(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:140
gs::ReadTransaction::vertex_iterator::vertex_iterator
vertex_iterator(label_t label, vid_t cur, vid_t num, const MutablePropertyFragment &graph)
Definition: read_transaction.cc:46
gs::SingleGraphView::csr_
const SingleMutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:315
gs::GraphView::get_edges
AdjListView< EDATA_T > get_edges(vid_t v) const
Definition: read_transaction.h:151
gs::Schema
Definition: schema.h:29
gs::AdjListView::nbr_iterator::operator*
const_nbr_t & operator*() const
Definition: read_transaction.h:46
gs::ReadTransaction::run
std::string run(const std::string &cypher, const std::map< std::string, std::string > &params) const
Definition: read_transaction.cc:29
gs::GraphView::foreach_edges_ge
void foreach_edges_ge(vid_t v, EDATA_T &min_value, const FUNC_T &func) const
Definition: read_transaction.h:255
gs::ImmutableNbrSlice::begin
const_nbr_ptr_t begin() const
Definition: nbr.h:114
gs::ReadTransaction::schema
const Schema & schema() const
Definition: read_transaction.h:518
gs::GraphView::GraphView
GraphView(const MutableCsr< EDATA_T > &csr, timestamp_t timestamp)
Definition: read_transaction.h:146
gs::GraphDBSession
Definition: graph_db_session.h:36
gs::ReadTransaction::edge_iterator::Next
void Next()
Definition: read_transaction.cc:86
gs::SingleImmutableGraphView::exist
bool exist(vid_t v) const
Definition: read_transaction.h:345
gs::ReadTransaction::GetVertexIterator
vertex_iterator GetVertexIterator(label_t label) const
Definition: read_transaction.cc:100
gs::ReadTransaction::vertex_iterator::IsValid
bool IsValid() const
Definition: read_transaction.cc:51
gs::SingleImmutableCsr
Definition: immutable_csr.h:494
gs::ReadTransaction::GetIncomingGraphView
GraphView< EDATA_T > GetIncomingGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:530
gs::VersionManager
Definition: version_manager.h:34
gs::MutableCsr
Definition: mutable_csr.h:183
gs::AdjListView::nbr_iterator::const_nbr_ptr_t
typename MutableNbrSlice< EDATA_T >::const_nbr_ptr_t const_nbr_ptr_t
Definition: read_transaction.h:35
gs::SingleImmutableGraphView
Definition: read_transaction.h:340
gs::ReadTransaction::GetOutgoingEdges
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
gs::ReadTransaction::edge_iterator::edge_label_
label_t edge_label_
Definition: read_transaction.h:471
gs::ReadTransaction
Definition: read_transaction.h:375
gs::SingleImmutableCsr< std::string_view >
Definition: immutable_csr.h:680
gs::TypedMutableCsrBase
Definition: csr_base.h:135
gs::ReadTransaction::GetVertexNum
vid_t GetVertexNum(label_t label) const
Definition: read_transaction.cc:120
gs::ReadTransaction::GetIncomingSingleGraphView
SingleGraphView< EDATA_T > GetIncomingSingleGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:547
gs::AdjListView::AdjListView
AdjListView(const slice_t &slice, timestamp_t timestamp)
Definition: read_transaction.h:75
gs::ReadTransaction::vertex_iterator::Next
void Next()
Definition: read_transaction.cc:52
gs::ReadTransaction::vertex_iterator::graph_
const MutablePropertyFragment & graph_
Definition: read_transaction.h:448
gs::AdjListView::nbr_iterator::const_nbr_t
typename MutableNbrSlice< EDATA_T >::const_nbr_t const_nbr_t
Definition: read_transaction.h:34
types.h
gs::MutablePropertyFragment::get_ie_csr
CsrBase * get_ie_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.h:119
gs::SingleGraphView::SingleGraphView
SingleGraphView(const SingleMutableCsr< EDATA_T > &csr, timestamp_t timestamp)
Definition: read_transaction.h:303
gs::ReadTransaction::edge_iterator::GetEdgeLabel
label_t GetEdgeLabel() const
Definition: read_transaction.cc:96
gs::ReadTransaction::GetIncomingSingleImmutableGraphView
SingleImmutableGraphView< EDATA_T > GetIncomingSingleImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:563
gs::ReadTransaction::edge_iterator::neighbor_label_
label_t neighbor_label_
Definition: read_transaction.h:470
std
Definition: loading_config.h:232
gs::SingleMutableCsr
Definition: mutable_csr.h:747
gs::ReadTransaction::edge_iterator::edge_iterator
edge_iterator(label_t neighbor_label, label_t edge_label, std::shared_ptr< CsrConstEdgeIterBase > iter)
Definition: read_transaction.cc:70
gs::SingleImmutableGraphView< std::string_view >::SingleImmutableGraphView
SingleImmutableGraphView(const SingleImmutableCsr< std::string_view > &csr)
Definition: read_transaction.h:360
gs::ReadTransaction::GetOutgoingGraphView
GraphView< EDATA_T > GetOutgoingGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:521
gs::SingleGraphView< std::string_view >::csr_
const SingleMutableCsr< std::string_view > & csr_
Definition: read_transaction.h:335
gs::ReadTransaction::edge_iterator::IsValid
bool IsValid() const
Definition: read_transaction.cc:82
gs::AdjListView::nbr_iterator::nbr_iterator
nbr_iterator(const_nbr_ptr_t ptr, const_nbr_ptr_t end, timestamp_t timestamp)
Definition: read_transaction.h:38
gs::ImmutableAdjListView::nbr_iterator::operator->
const_nbr_ptr_t operator->() const
Definition: read_transaction.h:105
gs::GraphView
Definition: read_transaction.h:144
gs::ReadTransaction::GetOutEdgeIterator
edge_iterator GetOutEdgeIterator(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:128
gs::ReadTransaction::ReadTransaction
ReadTransaction(const GraphDBSession &session, const MutablePropertyFragment &graph, VersionManager &vm, timestamp_t timestamp)
Definition: read_transaction.cc:23
gs::GraphView::timestamp_
timestamp_t timestamp_
Definition: read_transaction.h:283
gs::SingleGraphView< std::string_view >::timestamp_
timestamp_t timestamp_
Definition: read_transaction.h:336
gs::ReadTransaction::~ReadTransaction
~ReadTransaction()
Definition: read_transaction.cc:27
gs::ReadTransaction::edge_iterator::GetData
Any GetData() const
Definition: read_transaction.cc:78
gs::ImmutableNbr
Definition: nbr.h:29
gs::ReadTransaction::edge_iterator::GetNeighborLabel
label_t GetNeighborLabel() const
Definition: read_transaction.cc:92
gs::ReadTransaction::GetInDegree
size_t GetInDegree(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:147
gs::ReadTransaction::graph
const MutablePropertyFragment & graph() const
Definition: read_transaction.cc:44
mutable_csr.h
gs::ReadTransaction::get_vertex_property_column
const std::shared_ptr< ColumnBase > get_vertex_property_column(uint8_t label, const std::string &col_name) const
Definition: read_transaction.h:397
gs::AdjListView::nbr_iterator::operator++
nbr_iterator & operator++()
Definition: read_transaction.h:50
gs::ReadTransaction::edge_iterator::~edge_iterator
~edge_iterator()
gs::ReadTransaction::vertex_iterator::num_
vid_t num_
Definition: read_transaction.h:447
gs::AdjListView::nbr_iterator::operator!=
bool operator!=(const nbr_iterator &rhs) const
Definition: read_transaction.h:62
gs::SingleGraphView< std::string_view >::get_edge
MutableNbr< std::string_view > get_edge(vid_t v) const
Definition: read_transaction.h:330
gs::ReadTransaction::vertex_iterator::cur_
vid_t cur_
Definition: read_transaction.h:446
gs::ReadTransaction::Abort
void Abort()
Definition: read_transaction.cc:42
gs::SingleMutableCsr< std::string_view >
Definition: mutable_csr.h:956
gs::MutableNbrSlice::size
int size() const
Definition: nbr.h:328
gs::SingleImmutableGraphView::csr_
const SingleImmutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:354
gs::ImmutableAdjListView::nbr_iterator::const_nbr_ptr_t
typename ImmutableNbrSlice< EDATA_T >::const_nbr_ptr_t const_nbr_ptr_t
Definition: read_transaction.h:97
gs::AdjListView::estimated_degree
int estimated_degree() const
Definition: read_transaction.h:85
gs::AdjListView::timestamp_
timestamp_t timestamp_
Definition: read_transaction.h:89
gs::SingleGraphView< std::string_view >::exist
bool exist(vid_t v) const
Definition: read_transaction.h:326
gs::SingleGraphView::timestamp_
timestamp_t timestamp_
Definition: read_transaction.h:316
gs::ImmutableNbrSlice::size
int size() const
Definition: nbr.h:110
gs::ReadTransaction::GetOutgoingSingleGraphView
SingleGraphView< EDATA_T > GetOutgoingSingleGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:539
gs::label_t
uint8_t label_t
Definition: types.h:32
gs::ImmutableAdjListView::nbr_iterator::nbr_iterator
nbr_iterator(const_nbr_ptr_t ptr, const_nbr_ptr_t end)
Definition: read_transaction.h:100
gs::MutablePropertyFragment::get_oe_csr
CsrBase * get_oe_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.h:105
gs::ReadTransaction::Commit
bool Commit()
Definition: read_transaction.cc:37
gs::MutableNbrSlice
Definition: nbr.h:318
gs::Table::get_column
std::shared_ptr< ColumnBase > get_column(const std::string &name)
Definition: table.cc:171
gs::Schema::get_vertex_primary_key
const std::vector< std::tuple< PropertyType, std::string, size_t > > & get_vertex_primary_key(label_t index) const
Definition: schema.cc:391
gs::ReadTransaction::GetOutgoingImmutableGraphView
ImmutableGraphView< EDATA_T > GetOutgoingImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:571
gs::ImmutableGraphView::ImmutableGraphView
ImmutableGraphView(const ImmutableCsr< EDATA_T > &csr)
Definition: read_transaction.h:290
gs::ReadTransaction::graph_
const MutablePropertyFragment & graph_
Definition: read_transaction.h:591
gs::ReadTransaction::GetOutgoingSingleImmutableGraphView
SingleImmutableGraphView< EDATA_T > GetOutgoingSingleImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:555
gs::ImmutableAdjListView::edges_
slice_t edges_
Definition: read_transaction.h:140