@@ -862,17 +862,17 @@ class ArrowProjectedFragment
862
862
size_t nbytes = 0 ;
863
863
if (fragment->directed ()) {
864
864
vineyard::FixedInt64Builder ie_offsets_begin_builder (
865
- client, fragment->tvnums_ [v_label]);
865
+ client, fragment->ivnums_ [v_label]);
866
866
vineyard::FixedInt64Builder ie_offsets_end_builder (
867
- client, fragment->tvnums_ [v_label]);
867
+ client, fragment->ivnums_ [v_label]);
868
868
std::shared_ptr<vineyard::FixedInt64Builder> ie_boffsets_begin_builder;
869
869
std::shared_ptr<vineyard::FixedInt64Builder> ie_boffsets_end_builder;
870
870
if (COMPACT) {
871
871
ie_boffsets_begin_builder =
872
872
std::make_shared<vineyard::FixedInt64Builder>(
873
- client, fragment->tvnums_ [v_label]);
873
+ client, fragment->ivnums_ [v_label]);
874
874
ie_boffsets_end_builder = std::make_shared<vineyard::FixedInt64Builder>(
875
- client, fragment->tvnums_ [v_label]);
875
+ client, fragment->ivnums_ [v_label]);
876
876
selectEdgeByNeighborLabel (
877
877
fragment, v_label,
878
878
fragment->compact_ie_lists_ [v_label][e_label]->GetArray (),
@@ -914,17 +914,17 @@ class ArrowProjectedFragment
914
914
oe_boffsets_end;
915
915
{
916
916
vineyard::FixedInt64Builder oe_offsets_begin_builder (
917
- client, fragment->tvnums_ [v_label]);
917
+ client, fragment->ivnums_ [v_label]);
918
918
vineyard::FixedInt64Builder oe_offsets_end_builder (
919
- client, fragment->tvnums_ [v_label]);
919
+ client, fragment->ivnums_ [v_label]);
920
920
std::shared_ptr<vineyard::FixedInt64Builder> oe_boffsets_begin_builder;
921
921
std::shared_ptr<vineyard::FixedInt64Builder> oe_boffsets_end_builder;
922
922
if (COMPACT) {
923
923
oe_boffsets_begin_builder =
924
924
std::make_shared<vineyard::FixedInt64Builder>(
925
- client, fragment->tvnums_ [v_label]);
925
+ client, fragment->ivnums_ [v_label]);
926
926
oe_boffsets_end_builder = std::make_shared<vineyard::FixedInt64Builder>(
927
- client, fragment->tvnums_ [v_label]);
927
+ client, fragment->ivnums_ [v_label]);
928
928
selectEdgeByNeighborLabel (
929
929
fragment, v_label,
930
930
fragment->compact_oe_lists_ [v_label][e_label]->GetArray (),
@@ -1680,7 +1680,21 @@ class ArrowProjectedFragment
1680
1680
const std::shared_ptr<arrow::FixedSizeBinaryArray>& nbr_list,
1681
1681
const std::shared_ptr<arrow::Int64Array>& offsets, int64_t * begins,
1682
1682
int64_t * ends) {
1683
+ LOG (INFO) << " selectEdgeByNeighborLabel: " << v_label << " tvnm: " << fragment->tvnums_ [v_label] << " offsets: " << offsets->length ();
1683
1684
const int64_t * offset_values = offsets->raw_values ();
1685
+ for (vid_t i = 0 ; i < fragment->ivnums_ [v_label]; ++i) {
1686
+ int64_t begin = offset_values[i], end = offset_values[i + 1 ];
1687
+ if (begin == end) { // optimize for vertices that has no edge.
1688
+ begins[i] = begin;
1689
+ ends[i] = end;
1690
+ } else {
1691
+ auto range =
1692
+ getRangeOfLabel (fragment, v_label, nbr_list, begin, end);
1693
+ begins[i] = range.first ;
1694
+ ends[i] = range.second ;
1695
+ }
1696
+ }
1697
+ /*
1684
1698
vineyard::parallel_for(
1685
1699
static_cast<vid_t>(0), fragment->tvnums_[v_label],
1686
1700
[&](vid_t i) {
@@ -1696,6 +1710,7 @@ class ArrowProjectedFragment
1696
1710
}
1697
1711
},
1698
1712
std::thread::hardware_concurrency(), 1024);
1713
+ */
1699
1714
return {};
1700
1715
}
1701
1716
@@ -1708,7 +1723,7 @@ class ArrowProjectedFragment
1708
1723
const int64_t * offset_values = offsets->raw_values ();
1709
1724
const int64_t * boffset_values = boffsets->raw_values ();
1710
1725
vineyard::parallel_for (
1711
- static_cast <vid_t >(0 ), fragment->tvnums_ [v_label],
1726
+ static_cast <vid_t >(0 ), fragment->ivnums_ [v_label],
1712
1727
[&](vid_t i) {
1713
1728
int64_t begin = offset_values[i], end = offset_values[i + 1 ];
1714
1729
int64_t bbegin = boffset_values[i], bend = boffset_values[i + 1 ];
0 commit comments