Skip to content

Commit c58e8c7

Browse files
committed
fix original id impl
1 parent d46d4d7 commit c58e8c7

File tree

6 files changed

+36
-38
lines changed

6 files changed

+36
-38
lines changed

modules/graph/grin/c/test.c

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -298,19 +298,20 @@ void test_property_topology(int argc, char** argv) {
298298
#endif
299299

300300
#ifdef GRIN_ASSUME_BY_TYPE_VERTEX_ORIGINAL_ID
301-
GRIN_DATATYPE dt = grin_get_vertex_original_id_type(g);
301+
GRIN_DATATYPE dt = grin_get_vertex_original_id_data_type(g);
302302
if (dt == Int64) {
303-
long int v0id = 4;
304-
GRIN_VERTEX v0 = grin_get_vertex_by_original_id_by_type(g, vt, &v0id);
303+
long long int v0id = 4;
304+
GRIN_VERTEX v0 = grin_get_vertex_by_original_id_by_type(g, vt, dt, &v0id);
305305
if (v0 == GRIN_NULL_VERTEX) {
306-
printf("(Wrong) vertex of id %ld can not be found\n", v0id);
306+
printf("(Wrong) vertex of id %lld can not be found\n", v0id);
307307
} else {
308-
printf("vertex of original id %ld found\n", v0id);
309-
GRIN_VERTEX_ORIGINAL_ID oid0 = grin_get_vertex_original_id(g, v0);
310-
printf("get vertex original id: %ld\n", *((long int*) oid0));
311-
grin_destroy_vertex_original_id(g, oid0);
308+
printf("vertex of original id %lld found\n", v0id);
309+
const void* oid0 = grin_get_vertex_original_id_value(g, v0);
310+
printf("get vertex original id: %lld\n", *((long long int*) oid0));
312311
}
313312
grin_destroy_vertex(g, v0);
313+
} else {
314+
printf("(Wrong) vertex original id type not int64\n");
314315
}
315316
#endif
316317

@@ -759,10 +760,14 @@ void test_property_primary_key(int argc, char** argv) {
759760
if (v == GRIN_NULL_VERTEX) {
760761
printf("(Wrong) vertex of primary keys %zu does not exist\n", j);
761762
} else {
762-
GRIN_VERTEX_ORIGINAL_ID oid0 = grin_get_vertex_original_id(g, v);
763-
printf("(Correct) vertex of primary keys %zu exists %ld\n", j,
764-
*((long int*) oid0));
765-
grin_destroy_vertex_original_id(g, oid0);
763+
GRIN_DATATYPE dt0 = grin_get_vertex_original_id_data_type(g);
764+
const void* oid0 = grin_get_vertex_original_id_value(g, v);
765+
if (dt0 == Int64) {
766+
printf("(Correct) vertex of primary keys %zu exists %lld\n", j,
767+
*((long long int*) oid0));
768+
} else {
769+
printf("(Wrong) unmatch original id type\n");
770+
}
766771
grin_destroy_vertex(g, v);
767772
}
768773
} else {

modules/graph/grin/rust/grin_v6d.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,14 @@ extern "C" {
169169

170170
#[cfg(feature = "grin_with_vertex_original_id")]
171171
#[allow(unused)]
172-
pub fn grin_destroy_vertex_original_id(arg1: GrinGraph, arg2: GrinVertexOriginalId);
172+
pub fn grin_get_vertex_original_id_data_type(arg1: GrinGraph) -> GrinDatatype;
173173

174174
#[cfg(feature = "grin_with_vertex_original_id")]
175175
#[allow(unused)]
176-
pub fn grin_get_vertex_original_id_type(arg1: GrinGraph) -> GrinDatatype;
177-
178-
#[cfg(feature = "grin_with_vertex_original_id")]
179-
#[allow(unused)]
180-
pub fn grin_get_vertex_original_id(
176+
pub fn grin_get_vertex_original_id_value(
181177
arg1: GrinGraph,
182178
arg2: GrinVertex,
183-
) -> GrinVertexOriginalId;
179+
) -> *const ::std::os::raw::c_void;
184180

185181
#[allow(unused)]
186182
pub fn grin_destroy_value(
@@ -1061,7 +1057,8 @@ extern "C" {
10611057
pub fn grin_get_vertex_by_original_id_by_type(
10621058
arg1: GrinGraph,
10631059
arg2: GrinVertexType,
1064-
arg3: GrinVertexOriginalId,
1060+
arg3: GrinDatatype,
1061+
arg4: *const ::std::os::raw::c_void,
10651062
) -> GrinVertex;
10661063

10671064
#[cfg(feature = "grin_trait_select_type_for_vertex_list")]

modules/graph/grin/src/index/order.cc

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ size_t grin_get_position_of_vertex_from_sorted_list(GRIN_GRAPH g, GRIN_VERTEX_LI
3030
auto _g = static_cast<GRIN_GRAPH_T*>(g)->g;
3131
auto _v = static_cast<GRIN_VERTEX_T*>(v);
3232
auto _vl = static_cast<GRIN_VERTEX_LIST_T*>(vl);
33-
auto vtype = (unsigned)_g->vertex_label(*_v);
34-
if (vtype < _vl->type_begin || vtype >= _vl->type_end) return GRIN_NULL_SIZE;
35-
auto offset = _v->GetValue() - _vl->vrs[vtype - _vl->type_begin].begin_value();
36-
if (offset < _vl->vrs[vtype - _vl->type_begin].size()) {
37-
return _vl->offsets[vtype - _vl->type_begin] + offset;
38-
}
39-
return GRIN_NULL_SIZE;
33+
return _v->GetValue() - _vl->vrs[0].begin_value();
34+
// auto vtype = (unsigned)_g->vertex_label(*_v);
35+
// if (vtype < _vl->type_begin || vtype >= _vl->type_end) return GRIN_NULL_SIZE;
36+
// auto offset = _v->GetValue() - _vl->vrs[vtype - _vl->type_begin].begin_value();
37+
// if (offset < _vl->vrs[vtype - _vl->type_begin].size()) {
38+
// return _vl->offsets[vtype - _vl->type_begin] + offset;
39+
// }
40+
// return GRIN_NULL_SIZE;
4041
}
4142
#endif

modules/graph/grin/src/property/topology.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ size_t grin_get_edge_num_by_type(GRIN_GRAPH g, GRIN_EDGE_TYPE etype) {
3030
#endif
3131

3232
#ifdef GRIN_ASSUME_BY_TYPE_VERTEX_ORIGINAL_ID
33-
GRIN_VERTEX grin_get_vertex_by_original_id_by_type(GRIN_GRAPH g, GRIN_VERTEX_TYPE vtype, GRIN_VERTEX_ORIGINAL_ID oid) {
33+
GRIN_VERTEX grin_get_vertex_by_original_id_by_type(GRIN_GRAPH g, GRIN_VERTEX_TYPE vtype, GRIN_DATATYPE dt, const void* oid) {
3434
auto _g = static_cast<GRIN_GRAPH_T*>(g)->g;
35-
auto _oid = static_cast<VERTEX_ORIGINAL_ID_T*>(oid);
35+
auto _oid = static_cast<const VERTEX_ORIGINAL_ID_T*>(oid);
3636
_GRIN_GRAPH_T::vid_t gid;
3737
auto v = new GRIN_VERTEX_T();
3838
if (_g->Oid2Gid(vtype, *_oid, gid)) {

modules/graph/grin/src/topology/structure.cc

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,12 @@ bool grin_equal_vertex(GRIN_GRAPH g, GRIN_VERTEX v1, GRIN_VERTEX v2) {
7979

8080

8181
#ifdef GRIN_WITH_VERTEX_ORIGINAL_ID
82-
void grin_destroy_vertex_original_id(GRIN_GRAPH g, GRIN_VERTEX_ORIGINAL_ID oid) {
83-
auto _oid = static_cast<VERTEX_ORIGINAL_ID_T*>(oid);
84-
delete _oid;
85-
}
8682

87-
GRIN_DATATYPE grin_get_vertex_original_id_type(GRIN_GRAPH g) {
83+
GRIN_DATATYPE grin_get_vertex_original_id_data_type(GRIN_GRAPH g) {
8884
return GRIN_DATATYPE_ENUM<VERTEX_ORIGINAL_ID_T>::value;
8985
}
9086

91-
92-
GRIN_VERTEX_ORIGINAL_ID grin_get_vertex_original_id(GRIN_GRAPH g, GRIN_VERTEX v) {
87+
const void* grin_get_vertex_original_id_value(GRIN_GRAPH g, GRIN_VERTEX v) {
9388
auto _g = static_cast<GRIN_GRAPH_T*>(g)->g;
9489
auto _v = static_cast<GRIN_VERTEX_T*>(v);
9590
auto gid = _g->Vertex2Gid(*_v);
@@ -99,7 +94,7 @@ GRIN_VERTEX_ORIGINAL_ID grin_get_vertex_original_id(GRIN_GRAPH g, GRIN_VERTEX v)
9994
#endif
10095

10196
#if defined(GRIN_WITH_VERTEX_ORIGINAL_ID) && !defined(GRIN_ASSUME_BY_TYPE_VERTEX_ORIGINAL_ID)
102-
GRIN_VERTEX grin_get_vertex_by_original_id(GRIN_GRAPH, GRIN_VERTEX_ORIGINAL_ID);
97+
GRIN_VERTEX grin_get_vertex_by_original_id(GRIN_GRAPH, GRIN_DATATYPE, const void*);
10398
#endif
10499

105100
// Data

0 commit comments

Comments
 (0)