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>
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
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
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 > ¶ms) 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
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
EDATA_T data
Definition: nbr.h:286