Go to the documentation of this file.
16 #ifndef GRAPHSCOPE_DATABASE_READ_TRANSACTION_H_
17 #define GRAPHSCOPE_DATABASE_READ_TRANSACTION_H_
28 class MutablePropertyFragment;
31 template <
typename EDATA_T>
92 template <
typename EDATA_T>
143 template <
typename EDATA_T>
156 template <
typename FUNC_T>
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;
170 if (!(ptr->data < min_value) && (ptr->data < max_value)) {
171 func(*ptr, min_value, max_value);
178 ptr = std::upper_bound(end + 1, ptr + 1, max_value,
184 if (ptr->data < min_value) {
187 func(*ptr, min_value, max_value);
193 template <
typename FUNC_T>
195 const auto& edges =
csr_.get_edges(v);
196 auto ptr = edges.end() - 1;
197 auto end = edges.begin() - 1;
206 if (min_value < ptr->data) {
207 func(*ptr, min_value);
212 if (!(min_value < ptr->data)) {
215 func(*ptr, min_value);
220 template <
typename FUNC_T>
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;
234 if (ptr->data < max_value) {
242 ptr = std::upper_bound(end + 1, ptr + 1, max_value,
254 template <
typename FUNC_T>
256 const auto& edges =
csr_.get_edges(v);
257 auto ptr = edges.end() - 1;
258 auto end = edges.begin() - 1;
267 if (!(ptr->data < min_value)) {
268 func(*ptr, min_value);
273 if (ptr->data < min_value) {
276 func(*ptr, min_value);
287 template <
typename EDATA_T>
300 template <
typename EDATA_T>
311 return csr_.get_edge(v);
331 return csr_.get_edge(v);
339 template <
typename EDATA_T>
346 return (
csr_.get_edge(v).neighbor != std::numeric_limits<vid_t>::max());
350 return csr_.get_edge(v);
364 return (
csr_.get_edge(v).neighbor != std::numeric_limits<vid_t>::max());
368 return csr_.get_edge(v);
382 std::string
run(
const std::string& cypher,
383 const std::map<std::string, std::string>& params)
const;
398 uint8_t label,
const std::string& col_name)
const {
409 template <
typename T>
411 uint8_t label,
const std::string& col_name)
const {
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>>(
420 return std::dynamic_pointer_cast<TypedRefColumn<T>>(
454 std::shared_ptr<CsrConstEdgeIterBase> iter);
473 std::shared_ptr<CsrConstEdgeIterBase>
iter_;
500 template <
typename EDATA_T>
509 template <
typename EDATA_T>
520 template <
typename EDATA_T>
529 template <
typename EDATA_T>
538 template <
typename EDATA_T>
546 template <
typename EDATA_T>
554 template <
typename EDATA_T>
562 template <
typename EDATA_T>
570 template <
typename EDATA_T>
578 template <
typename EDATA_T>
598 #endif // GRAPHSCOPE_DATABASE_READ_TRANSACTION_H_
vertex_iterator FindVertex(label_t label, const Any &id) const
Definition: read_transaction.cc:105
Definition: read_transaction.h:428
const_nbr_ptr_t ptr_
Definition: read_transaction.h:121
SingleGraphView(const SingleMutableCsr< std::string_view > &csr, timestamp_t timestamp)
Definition: read_transaction.h:322
Definition: read_transaction.h:94
slice_t edges_
Definition: read_transaction.h:88
bool GetVertexIndex(label_t label, const Any &id, vid_t &index) const
Definition: read_transaction.cc:115
Table & get_vertex_table(label_t vertex_label)
Definition: mutable_property_fragment.h:67
int estimated_degree() const
Definition: read_transaction.h:137
bool operator==(const nbr_iterator &rhs) const
Definition: read_transaction.h:112
vid_t GetNeighbor() const
Definition: read_transaction.cc:88
const_nbr_ptr_t ptr_
Definition: read_transaction.h:67
nbr_iterator end() const
Definition: read_transaction.h:81
typename ImmutableNbrSlice< EDATA_T >::const_nbr_t const_nbr_t
Definition: read_transaction.h:95
bool exist(vid_t v) const
Definition: read_transaction.h:306
VersionManager & vm_
Definition: read_transaction.h:592
Definition: immutable_csr.h:53
Any GetVertexId(label_t label, vid_t index) const
Definition: read_transaction.cc:124
int FieldNum() const
Definition: read_transaction.cc:66
uint32_t timestamp_t
Definition: types.h:30
ImmutableAdjListView(const slice_t &slice)
Definition: read_transaction.h:128
SingleImmutableGraphView(const SingleImmutableCsr< EDATA_T > &csr)
Definition: read_transaction.h:342
const_nbr_t & operator*() const
Definition: read_transaction.h:103
nbr_iterator & operator++()
Definition: read_transaction.h:107
const Schema & schema() const
Definition: mutable_property_fragment.cc:391
const GraphDBSession & GetSession() const
Definition: read_transaction.cc:161
Any GetId() const
Definition: read_transaction.cc:57
Definition: read_transaction.h:301
bool operator!=(const nbr_iterator &rhs) const
Definition: read_transaction.h:116
const ImmutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:297
vid_t GetIndex() const
Definition: read_transaction.cc:60
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
uint32_t vid_t
Definition: types.h:31
const SingleImmutableCsr< std::string_view > & csr_
Definition: read_transaction.h:372
const_nbr_ptr_t end_
Definition: read_transaction.h:122
ImmutableNbr< std::string_view > get_edge(vid_t v) const
Definition: read_transaction.h:367
timestamp_t timestamp() const
Definition: read_transaction.cc:35
std::shared_ptr< RefColumnBase > get_vertex_id_column(uint8_t label) const
Definition: mutable_property_fragment.h:139
const MutableNbr< EDATA_T > & get_edge(vid_t v) const
Definition: read_transaction.h:310
const ImmutableNbr< EDATA_T > & get_edge(vid_t v) const
Definition: read_transaction.h:349
void foreach_edges_gt(vid_t v, EDATA_T &min_value, const FUNC_T &func) const
Definition: read_transaction.h:194
ImmutableGraphView< EDATA_T > GetIncomingImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:579
void release()
Definition: read_transaction.cc:154
Definition: read_transaction.h:288
Definition: read_transaction.h:451
Definition: adj_list.h:23
void foreach_edges_lt(vid_t v, const EDATA_T &max_value, const FUNC_T &func) const
Definition: read_transaction.h:221
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
label_t label_
Definition: read_transaction.h:445
nbr_iterator end() const
Definition: read_transaction.h:133
Definition: read_transaction.h:93
const_nbr_ptr_t operator->() const
Definition: read_transaction.h:48
std::shared_ptr< CsrConstEdgeIterBase > iter_
Definition: read_transaction.h:473
const_nbr_ptr_t begin() const
Definition: nbr.h:332
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
bool operator==(const nbr_iterator &rhs) const
Definition: read_transaction.h:58
timestamp_t unsorted_since_
Definition: read_transaction.h:284
const_nbr_ptr_t end() const
Definition: nbr.h:115
edge_iterator GetInEdgeIterator(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:134
std::shared_ptr< RefColumnBase > CreateRefColumn(std::shared_ptr< ColumnBase > column)
Definition: column.cc:260
Any GetField(int col_id) const
Definition: read_transaction.cc:62
ImmutableAdjListView< EDATA_T > get_edges(vid_t v) const
Definition: read_transaction.h:292
bool exist(vid_t v) const
Definition: read_transaction.h:363
const GraphDBSession & session_
Definition: read_transaction.h:590
Definition: read_transaction.h:33
nbr_iterator begin() const
Definition: read_transaction.h:78
Definition: mutable_property_fragment.h:37
timestamp_t timestamp_
Definition: read_transaction.h:593
nbr_iterator begin() const
Definition: read_transaction.h:130
void Goto(vid_t target)
Definition: read_transaction.cc:53
const MutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:282
Definition: read_transaction.h:32
timestamp_t timestamp_
Definition: read_transaction.h:69
const_nbr_ptr_t end_
Definition: read_transaction.h:68
const_nbr_ptr_t end() const
Definition: nbr.h:333
EDATA_T data
Definition: nbr.h:286
size_t GetOutDegree(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:140
vertex_iterator(label_t label, vid_t cur, vid_t num, const MutablePropertyFragment &graph)
Definition: read_transaction.cc:46
const SingleMutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:315
AdjListView< EDATA_T > get_edges(vid_t v) const
Definition: read_transaction.h:151
const_nbr_t & operator*() const
Definition: read_transaction.h:46
std::string run(const std::string &cypher, const std::map< std::string, std::string > ¶ms) const
Definition: read_transaction.cc:29
void foreach_edges_ge(vid_t v, EDATA_T &min_value, const FUNC_T &func) const
Definition: read_transaction.h:255
const_nbr_ptr_t begin() const
Definition: nbr.h:114
const Schema & schema() const
Definition: read_transaction.h:518
GraphView(const MutableCsr< EDATA_T > &csr, timestamp_t timestamp)
Definition: read_transaction.h:146
Definition: graph_db_session.h:36
void Next()
Definition: read_transaction.cc:86
bool exist(vid_t v) const
Definition: read_transaction.h:345
vertex_iterator GetVertexIterator(label_t label) const
Definition: read_transaction.cc:100
bool IsValid() const
Definition: read_transaction.cc:51
Definition: immutable_csr.h:494
GraphView< EDATA_T > GetIncomingGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:530
Definition: version_manager.h:34
Definition: mutable_csr.h:183
typename MutableNbrSlice< EDATA_T >::const_nbr_ptr_t const_nbr_ptr_t
Definition: read_transaction.h:35
Definition: read_transaction.h:340
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
label_t edge_label_
Definition: read_transaction.h:471
Definition: read_transaction.h:375
Definition: immutable_csr.h:680
Definition: csr_base.h:135
vid_t GetVertexNum(label_t label) const
Definition: read_transaction.cc:120
SingleGraphView< EDATA_T > GetIncomingSingleGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:547
AdjListView(const slice_t &slice, timestamp_t timestamp)
Definition: read_transaction.h:75
void Next()
Definition: read_transaction.cc:52
const MutablePropertyFragment & graph_
Definition: read_transaction.h:448
typename MutableNbrSlice< EDATA_T >::const_nbr_t const_nbr_t
Definition: read_transaction.h:34
CsrBase * get_ie_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.h:119
SingleGraphView(const SingleMutableCsr< EDATA_T > &csr, timestamp_t timestamp)
Definition: read_transaction.h:303
label_t GetEdgeLabel() const
Definition: read_transaction.cc:96
SingleImmutableGraphView< EDATA_T > GetIncomingSingleImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:563
label_t neighbor_label_
Definition: read_transaction.h:470
Definition: loading_config.h:232
Definition: mutable_csr.h:747
edge_iterator(label_t neighbor_label, label_t edge_label, std::shared_ptr< CsrConstEdgeIterBase > iter)
Definition: read_transaction.cc:70
SingleImmutableGraphView(const SingleImmutableCsr< std::string_view > &csr)
Definition: read_transaction.h:360
GraphView< EDATA_T > GetOutgoingGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:521
const SingleMutableCsr< std::string_view > & csr_
Definition: read_transaction.h:335
bool IsValid() const
Definition: read_transaction.cc:82
nbr_iterator(const_nbr_ptr_t ptr, const_nbr_ptr_t end, timestamp_t timestamp)
Definition: read_transaction.h:38
const_nbr_ptr_t operator->() const
Definition: read_transaction.h:105
Definition: read_transaction.h:144
edge_iterator GetOutEdgeIterator(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:128
ReadTransaction(const GraphDBSession &session, const MutablePropertyFragment &graph, VersionManager &vm, timestamp_t timestamp)
Definition: read_transaction.cc:23
timestamp_t timestamp_
Definition: read_transaction.h:283
timestamp_t timestamp_
Definition: read_transaction.h:336
~ReadTransaction()
Definition: read_transaction.cc:27
Any GetData() const
Definition: read_transaction.cc:78
label_t GetNeighborLabel() const
Definition: read_transaction.cc:92
size_t GetInDegree(label_t label, vid_t u, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.cc:147
const MutablePropertyFragment & graph() const
Definition: read_transaction.cc:44
const std::shared_ptr< ColumnBase > get_vertex_property_column(uint8_t label, const std::string &col_name) const
Definition: read_transaction.h:397
nbr_iterator & operator++()
Definition: read_transaction.h:50
vid_t num_
Definition: read_transaction.h:447
bool operator!=(const nbr_iterator &rhs) const
Definition: read_transaction.h:62
MutableNbr< std::string_view > get_edge(vid_t v) const
Definition: read_transaction.h:330
vid_t cur_
Definition: read_transaction.h:446
void Abort()
Definition: read_transaction.cc:42
Definition: mutable_csr.h:956
int size() const
Definition: nbr.h:328
const SingleImmutableCsr< EDATA_T > & csr_
Definition: read_transaction.h:354
typename ImmutableNbrSlice< EDATA_T >::const_nbr_ptr_t const_nbr_ptr_t
Definition: read_transaction.h:97
int estimated_degree() const
Definition: read_transaction.h:85
timestamp_t timestamp_
Definition: read_transaction.h:89
bool exist(vid_t v) const
Definition: read_transaction.h:326
timestamp_t timestamp_
Definition: read_transaction.h:316
int size() const
Definition: nbr.h:110
SingleGraphView< EDATA_T > GetOutgoingSingleGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:539
uint8_t label_t
Definition: types.h:32
nbr_iterator(const_nbr_ptr_t ptr, const_nbr_ptr_t end)
Definition: read_transaction.h:100
CsrBase * get_oe_csr(label_t label, label_t neighbor_label, label_t edge_label)
Definition: mutable_property_fragment.h:105
bool Commit()
Definition: read_transaction.cc:37
std::shared_ptr< ColumnBase > get_column(const std::string &name)
Definition: table.cc:171
const std::vector< std::tuple< PropertyType, std::string, size_t > > & get_vertex_primary_key(label_t index) const
Definition: schema.cc:391
ImmutableGraphView< EDATA_T > GetOutgoingImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:571
ImmutableGraphView(const ImmutableCsr< EDATA_T > &csr)
Definition: read_transaction.h:290
const MutablePropertyFragment & graph_
Definition: read_transaction.h:591
SingleImmutableGraphView< EDATA_T > GetOutgoingSingleImmutableGraphView(label_t v_label, label_t neighbor_label, label_t edge_label) const
Definition: read_transaction.h:555
slice_t edges_
Definition: read_transaction.h:140